_.@'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 value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_INPUT_MAIL_TITLE? .IFG (.ARGCT) .ERROR SD_INPUT_MAIL_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_INPUT_MAIL_TITLE: .ENDC % ;Macro that remembers the address where the turbo control title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_COMMAND_TITLE? .IFG (.ARGCT) .ERROR SD_COMMAND_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_COMMAND_TITLE: .ENDC % ;Macro that obtains an answer to the question: ; "How should SCREEN DEMON compensate for the ^C^x character sequence ; echoed whenever the operator presses a console interrupt?" ;Possible answers are: .DUSR INTR_ERASE = 1 ;immediately space over the ^C^x, ; assuming that the cursor is just ; past the sequence, leaving the ; cursor at original pos as if ^C^x ; had never been displayed .DUSR INTR_REDRAW = 2 ;redraw the screen at the next flush ; to remove the ^C^x .DUSR INTR_ECHO = 3 ;monitor the ^C^x into image buffers, ; assuming that the cursor is just ; past the sequence, leaving the ; cursor past the sequence .DUSR INTR_NOTHING = 4 ;don't do anything about the echoed ; control sequence ?SD_CONSOLE_INTERRUPT_HANDLING = INTR_ERASE .MACRO CONSOLE_INTERRUPT_HANDLING? .IFG (.ARGCT) .IFG (^1) .IFL (^1-4) ?SD_CONSOLE_INTERRUPT_HANDLING = ^1 .ENDC .ENDC .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support variable cursor types, ; what should be the default cursor type?" ;Possible answers are: .DUSR CURSOR_INVISIBLE = "0 ;No cursor .DUSR CURSOR_BLINK_UNDERSCORE = "1 ;Blinking underscore .DUSR CURSOR_BLOCK = "2 ;Reverse video block .DUSR CURSOR_BLINK_BLOCK = "3 ;Blinking reverse video block .DUSR CURSOR_UNDERSCORE = "4 ;Nonblinking underscore ; (not available on all ; terminals) ?SD_DEFAULT_CURSOR_TYPE = CURSOR_BLOCK .MACRO DEFAULT_CURSOR_TYPE? .IFG (.ARGCT) .IFL ((^1&7)-5) ?SD_DEFAULT_CURSOR_TYPE = ("0)!(^1&7) .ENDC .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support adjustable scroll rates, ; what should be the default scroll rate?" ;Possible answers are: .DUSR SCROLL_JUMP = "0 ;Jump scroll .DUSR SCROLL_SMOOTH_SLOW = "1 ;Smooth scroll, 5 rows/sec .DUSR SCROLL_SMOOTH_FAST = "2 ;Smooth scroll, 10 rows/sec ?SD_DEFAULT_SCROLL_RATE = SCROLL_JUMP .MACRO DEFAULT_SCROLL_RATE? .IFG (.ARGCT) .IFL ((^1&3)-3) ?SD_DEFAULT_SCROLL_RATE = ("0)!(^1&3) .ENDC .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support selectable 7/8 bit mode, ; what should be the default character length?" ;Possible answers are: ; 7 or 8 ?SD_DEFAULT_7_OR_8_BIT_MODE = 7 .MACRO DEFAULT_7_OR_8_BIT_MODE? .IFG (.ARGCT) .IFG (^1-6) .IFL (^1-9) ?SD_DEFAULT_7_OR_8_BIT_MODE = ^1 .ENDC .ENDC .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support selectable keyboard language, ; what should be the default setting?" ;Possible answers are: .DUSR KEYBD_LANG_HARDWARE = "0 ;Matches keyboard hardware .DUSR KEYBD_LANG_INTERNATIONAL = "1 ;US ASCII in K1, ; DG International in K2 ?SD_DEFAULT_KEYBD_LANG = KEYBD_LANG_HARDWARE .MACRO DEFAULT_KEYBOARD_LANGUAGE? .IFG (.ARGCT) ?SD_DEFAULT_KEYBD_LANG = ("0)!(^1&1) .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support multiple character sets, ; what should be the default primary set?" ;Possible answers are: ; Any v alid char set indicator, which will be ignored if ; not found in character set palette. ;The answer to this question will be used by END_CONFIGURATION ; to define SD_DEFAULT_PRIMARY_CHAR_SET as the palette slot ; where the specified default character set is listed. ?DEF_PRIMARY_CHAR_SET = 0 ;will be set at end ; if not specified .MACRO DEFAULT_PRIMARY_CHAR_SET? .IFG (.ARGCT) ?DEF_PRIMARY_CHAR_SET = '^1' .ENDC % ;Macro that obtains an answer to the question: ; "For terminals that support multiple character sets, ; what should be the default alternate set?" ;Possible answers are: ; Any valid char set indicator, which will be ignored ; if not found in character set palette. ;The answer to this question will be used by END_CONFIGURATION ; to define SD_DEFAULT_ALTERNATE_CHAR_SET as the palette slot ; where the specified default character set is listed. ?DEF_ALTERNATE_CHAR_SET = 0 ;will be set at end ; if not specified .MACRO DEFAULT_ALTERNATE_CHAR_SET? .IFG (.ARGCT) ?DEF_ALTERNATE_CHAR_SET = '^1' .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON actually clear the screen when the host program ; outputs a clear screen command?" ?PHYSICAL_SCREEN_CLEAR = YES .MACRO PHYSICAL_SCREEN_CLEAR? .IFG (.ARGCT) .IFN (^1) ?PHYSICAL_SCREEN_CLEAR = YES .ELSE ?PHYSICAL_SCREEN_CLEAR = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON automatically redraw the screen whenever the ; host program returns from a call to a nonSCREEN DEMON program?" ?AUTO_REDRAW_AFTER_NONSD_CALL = YES .MACRO AUTO_REDRAW_AFTER_NONSD_CALL? .IFG (.ARGCT) .IFN (^1) ?AUTO_REDRAW_AFTER_NONSD_CALL = YES .ELSE ?AUTO_REDRAW_AFTER_NONSD_CALL = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON ignore console interrupts (^C^B and ^C^E)?" ?IGNORE_CONSOLE_INTERRUPTS = NO .MACRO IGNORE_CONSOLE_INTERRUPTS? .IFG (.ARGCT) .IFN (^1) ?IGNORE_CONSOLE_INTERRUPTS = YES .ELSE ?IGNORE_CONSOLE_INTERRUPTS = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON trim trailing spaces and underscore ; characters from initial contents of input fields, thus ; permitting ^A and ^E screenedit functions to work properly?" ?TRIM_SPACE_UNDERSCORE_ON_INPUT = YES .MACRO TRIM_SPACE_UNDERSCORE_ON_INPUT? .IFG (.ARGCT) .IFN (^1) ?TRIM_SPACE_UNDERSCORE_ON_INPUT = YES .ELSE ?TRIM_SPACE_UNDERSCORE_ON_INPUT = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON space-pad the contents of input fields to ; full size when the input is complete?" ?PAD_INPUT_BUFFER_TO_FULL = NO .MACRO PAD_INPUT_BUFFER_TO_FULL? .IFG (.ARGCT) .IFN (^1) ?PAD_INPUT_BUFFER_TO_FULL = YES .ELSE ?PAD_INPUT_BUFFER_TO_FULL = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON use the Line Drawing character set for boxes ; if the terminal has this capability?" ?USE_LINE_DRAW_CHARSET_FOR_BOXES = YES .MACRO USE_LINE_DRAW_CHARSET_FOR_BOXES? .IFG (.ARGCT) .IFN (^1) ?USE_LINE_DRAW_CHARSET_FOR_BOXES = YES .ELSE ?USE_LINE_DRAW_CHARSET_FOR_BOXES = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON use the Line Drawing character set for lines ; if the terminal has this capability?" ?USE_LINE_DRAW_CHARSET_FOR_LINES = YES .MACRO USE_LINE_DRAW_CHARSET_FOR_LINES? .IFG (.ARGCT) .IFN (^1) ?USE_LINE_DRAW_CHARSET_FOR_LINES = YES .ELSE ?USE_LINE_DRAW_CHARSET_FOR_LINES = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should the SCREEN DEMON Print Screen hot key routine ask the user ; for an output filename?" ?SDSCREENPRINT_ASK_OUTPUT_NAME = YES .MACRO SDSCREENPRINT_ASK_OUTPUT_NAME? .IFG (.ARGCT) .IFN (^1) ?SDSCREENPRINT_ASK_OUTPUT_NAME = YES .ELSE ?SDSCREENPRINT_ASK_OUTPUT_NAME = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should the SCREEN DEMON Read Mail hot key routine ask the user ; for an output filename when the Print option is selected?" ?SD_READ_MAIL_ASK_OUTPUT_NAME = YES .MACRO SD_READ_MAIL_ASK_OUTPUT_NAME? .IFG (.ARGCT) .IFN (^1) ?SD_READ_MAIL_ASK_OUTPUT_NAME = YES .ELSE ?SD_READ_MAIL_ASK_OUTPUT_NAME = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON mail messages be deleted automatically after ; the operator has read them?" ?SD_READ_MAIL_AUTO_DELETE = NO .MACRO SD_READ_MAIL_AUTO_DELETE? .IFG (.ARGCT) .IFN (^1) ?SD_READ_MAIL_AUTO_DELETE = YES .ELSE ?SD_READ_MAIL_AUTO_DELETE = NO .ENDC .ENDC % ;Macro that declares a YES or NO answer to the question: ; "Should SCREEN DEMON mail messages always be delivered immediately, ; whether or not they are marked as Urgent?" ?SD_IMMEDIATE_MAIL_DELIVERY = NO .MACRO SD_IMMEDIATE_MAIL_DELIVERY? .IFG (.ARGCT) .IFN (^1) ?SD_IMMEDIATE_MAIL_DELIVERY = YES .ELSE ?SD_IMMEDIATE_MAIL_DELIVERY = NO .ENDC .ENDC % ;Macros that declare the default sizes returned by the SD_GET_IMAGE ;and SD_GET_IMAGE_BELOW_FLOAT calls. ; ; Revision 2.0 and below 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.0 - 3.5, 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.0 - 3.5 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 upon 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. .DUSR ?SD_GET_IMAGE_DEFAULT_LINES = 24 .DUSR ?SD_GET_IMAGE_DEFAULT_COLUMNS = 162 .DUSR ?SD_GET_IMAGE_DEFAULT_PARAMS = 14 .MACRO SD_GET_IMAGE_DEFAULT_LINES? .IFG .ARGCT .DUSR ?SD_GET_IMAGE_DEFAULT_LINES = ^1 .ENDC % .MACRO SD_GET_IMAGE_DEFAULT_COLUMNS? .IFG .ARGCT .DUSR ?SD_GET_IMAGE_DEFAULT_COLUMNS = ^1 .ENDC % .MACRO SD_GET_IMAGE_DEFAULT_PARAMS? .IFG .ARGCT .DUSR ?SD_GET_IMAGE_DEFAULT_PARAMS = ^1 .ENDC % ;Macro that obtains an answer to the question: ; "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 input(s) encountered?" ;Possible answers are: .DUSR RI_HOT_ONLY = 0 ;Only on return from a hot key .DUSR RI_ANY_INPUT = 1 ;Available at any input ?SD_RETURN_INPUT_MODE = RI_ANY_INPUT .MACRO SD_RETURN_INPUT_MODE? .IFG (.ARGCT) .IFL (^1-2) ?SD_RETURN_INPUT_MODE = ^1 .ENDC .ENDC % ;Macro that defines the rollover size in bytes for console logging files. ?MAX_CONLOG_SIZE = 65536 ;default value .MACRO MAX_CONLOG_SIZE? .IFG (.ARGCT) ?MAX_CONLOG_SIZE = ^1 .ENDC % ;Macro that defines the input history buffer size in bytes ?SD_INPUT_HISTORY_SIZE = 0 ;default value (no history) .MACRO INPUT_HISTORY_BUFFER_SIZE? .IFG (.ARGCT) ?SD_INPUT_HISTORY_SIZE = ^1 .ENDC % ;Macro that defines the scrollback buffer size in bytes ?SD_SCROLLBACK_BUFFER_SIZE = 0 ;default is no scrollback buffer    .MACRO SCROLLBACK_BUFFER_SIZE? .IFG (.ARGCT) ?SD_SCROLLBACK_BUFFER_SIZE = ^1 .ENDC % ;Macros that allow various special handling requests to be specified for ; certain programs. These include downgrading Turbo level, and ; protection against automatic logoff. ; This allows an ICX interpreter or a SCREEN DEMON shared library to ; be linked for Full Turbo, but downgrade to Partial or No Turbo when ; necessary while running particular programs. ;Structure of each entry in the special programs list (also in SD_DEFINES.SR). ; The list is terminated by a SPECL_NAME_PTR value of zero. .DUSR SPECL_NAME_OFS = 0 ;Word offset from beginning of this ; entry to null-terminated program name .DUSR SPECL_FLAGS = 2 ;Flags word, why program is special .DUSR SPECL_UNUSED = 3 ;filler so entry size is even .DUSR SPECL_SIZE = 4 ;Size of an entry in words ;Bit #'s for flags in special program flags word (also in SD_DEFINES.SR): .DUSR SPECF_NOTURBO = 15. ;Program requires No Turbo .DUSR SPECF_PARTURBO = 14. ;Program requires Partial Turbo .DUSR SPECF_NO_LOGOFF = 13. ;Do not terminate this program ; by automatic logoff .DUSR SPECF_BYPASS = 12. ;Program requires Bypass mode .DUSR SPECF_LOG = 11. ;Activate console event logging ; while this program is running .DUSR SPECF_NO_WLI = 10. ;Do not automatically call the WHO ; LOCKED IT? routine from this program .DUSR SPECF_NOHOTKEYS = 9. ;Hot keys are disabled while this ; program is running ;Define macro that signals the beginning of special program declarations .MACRO BEGIN_SPECIAL_PROGRAMS ;Initialize total number of special programs to none, in such a way that ; it only happens on pass 1. .IFE .PASS ?SP_NUM = 0 .ENDC .IFN (?BUILD?<>?LOADER) ;Define symbol that is the beginning of this special programs ; list CONFIGPART SD_SPECIAL_PROGRAMS_LIST_PART ALIGN=1 ?SD_SPECIAL_PROGRAMS_LIST: CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC % ;Define macro that signals the end of special program declarations .MACRO END_SPECIAL_PROGRAMS .IFN (?BUILD?<>?LOADER) .IFN ?SP_NUM ;If there were any special programs... CONFIGPART SD_SPECIAL_PROGRAMS_LIST_PART ALIGN=1 ?I = 1 .DO ?SP_NUM ;For each special program... .DWORD ?SP_PTR\?I-. ;Store word offset ; to its name, .WORD ?SP_FLG\?I ; its special flags, .WORD 0 ; and a filler word ?I = ?I+1 .ENDC .ENDC ;Terminate the list of special programs, if any CONFIGPART SD_SPECIAL_PROGRAMS_LIST_PART ALIGN=1 .DWORD 0 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;not ?LOADER % ;Define macro that declares programs as requiring Partial Turbo .MACRO PARTIAL_TURBO ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_PARTURBO) ?I = ?I+1 .ENDC % ;Define macro that declares programs as requiring No Turbo .MACRO NO_TURBO ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_NOTURBO) ?I = ?I+1 .ENDC % ;Define macro that declares programs to be protected from automatic logoff .MACRO NO_LOGOFF ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_NO_LOGOFF) ?I = ?I+1 .ENDC % ;Define macro that declares programs to require Screen Demon to be asleep .MACRO BYPASS ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_BYPASS) ?I = ?I+1 .ENDC % ;Define macro that declares programs to require automatic console event logging .MACRO LOG ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_LOG) ?I = ?I+1 .ENDC % ;Define macro that declares programs within which the automatic Who Locked It? ; call is not desired on locked records. .MACRO NO_WLI ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_NO_WLI) ?I = ?I+1 .ENDC % ;Define macro that declares programs that disallow hot keys .MACRO NO_HOT_KEYS ?I = 1 .DO .ARGCT ;For each program name supplied... SPECIAL_PROG ^?I,1B(SPECF_NOHOTKEYS) ?I = ?I+1 .ENDC % ;Macro to declare a special program and what's special about it .MACRO SPECIAL_PROG .IFN (?BUILD?<>?LOADER) ;If this is the very first declaration for this program, assign ; it a slot in the list of special programs. .IFE ?SPX_^1 ;increment total number of special programs ?SP_NUM = ?SP_NUM+1 ;assign a special program number to this new program ?SPX_^1 = ?SP_NUM ;remember flag settings for new program until later ; in case more are declared for it ?SP_FLG\?SPX_^1 = ^2 ;define new program's name ptr and last pass # to be ; "not yet processed" - needed to store program name later ?SP_PTR\?SPX_^1 = 0 ?SP_PAS\?SPX_^1 = -1 ;Otherwise merge the new special flag with those already known .ELSE ?SP_FLG\?SPX_^1 = (?SP_FLG\?SPX_^1)!(^2) .ENDC ;If this is the first reference to this special program on ; this particular assembly pass, then add the program name ; to the list of special program names. This code is done ; here rather than in the ".IFE ?SPX_^1" block above because ; the .TXT pseudomacro needed won't output data until pass 2, ; and the above block won't execute on pass 2 because ?SPX_^1 ; will be nonzero from pass 1. .IFE (?SP_PAS\?SPX_^1==.PASS) CONFIGPART SD_SPECIAL_PROG_NAMES_PART ;remember where new program name begins for later ?SP_PTR\?SPX_^1 = . .TXT "^1" ;remember that this doesn't need to happen again this pass ?SP_PAS\?SPX_^1 = .PASS CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC .ENDC ;not ?LOADER % ;Macro that declares a character set palette to be used when alternate ; character sets are invoked by a program. ; ; Call format: ; ; CHAR_SET_PALETTE 00,10,11,0>,01,02,13,20 ; ; where the arguments are the character set codes to be used. ; Note that the first argument is the standard primary set to use. ;Initial defaults for all palette slots (only need to assign in pass 1) .IFE .PASS ?CHAR_SET_0 = '00' ;Default char set #0 is Keyboard set ?CHAR_SET_1 = '10' ;Default char set #1 is Word Processing set ?CHAR_SET_2 = '11' ;Default char set #2 is Line Drawing set ?CHAR_SET_3 = '0>' ;Default char set #3 is DG International set ?CHAR_SET_4 = '01' ;Default char set #4 is U.S. set ?CHAR_SET_5 = '02' ;Default char set #5 is United Kingdom set ?CHAR_SET_6 = '13' ;Default char set #6 is DG Special Graphics set ?CHAR_SET_7 = '20' ;Default char set #7 is DLL set 0 .ENDC .MACRO CHAR_SET_PALETTE .IFN (.ARGCT>=1) ?CHAR_SET_0 = '^1' .ENDC .IFN (.ARGCT>=2) ?CHAR_SET_1 = '^2' .ENDC .IFN (.ARGCT>=3) ?CHAR_SET_2 = '^3' .ENDC .IFN (.ARGCT>=4) ?CHAR_SET_3 = '^4' .ENDC .IFN (.ARGCT>=5) ?CHAR_SET_4 = '^5' .ENDC .IFN (.ARGCT>=6) ?CHAR_SET_5 = '^6' .ENDC .IFN (.ARGCT>=7) ?CHAR_SET_6 = '^7' .ENDC .IFN (.ARGCT>=8.) ?CHAR_SET_7 = '^8' .ENDC % ;Macro that requests a chunk of unshared memory of a specified size in pages ; to be reserved for SD_MEM operations. SD_MEM will allocate memory ; from this chunk until it is full, and only then will it resort to a ; temporary shared memory file. The default size 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 that this macro ; is not applicable in the case of a dynamic config file. ;Default SD_MEM initial chunk size in pages: .IFN (?BUILD?==?DYNAMIC) .DUSR ?SD_MEM_INITIAL_PAGES = 0 .ELSE .DUSR ?SD_MEM_INITIAL_PAGES = 20 .ENDC .MACRO SD_MEM_SIZE .IFN (?BUILD?<>?DYNAMIC) .IFN (.ARGCT>=1) .IFL (^1) .DUSR ?SD_MEM_INITIAL_PAGES = 0 .ELSE .DUSR ?SD_MEM_INITIAL_PAGES = ^1 .ENDC .ENDC .ENDC % ;Format of an entry in the PutValue table (must match that in SD_DEFINES.SR). ; This table specifies a list of values and label names which ne  ed to be ; stored using SD_PUT_VALUE at the time the configuration file is loaded. STRUCT WIDE PV.LABEL ;Word offset to label name from beginning of ; this table element WIDE PV.VALUE ;Word offset to value from beginning of ; this table element NARROW PV.TYPE ;Type of value NARROW PV.LEN ;Length of value in bytes, or zero if length ; varies and must be determined at runtime ; based on type .DUSR PV_ENTRY_SIZE = ?STRUCT_SIZE ;Type mnemonics for PV.TYPE field above: .DUSR PVTYPE_STRING = 0 ;Null-terminated string .DUSR PVTYPE_BINARY = 1 ;Binary value .IFN (?BUILD?<>?LOADER) ;Start this table off CONFIGPART SD_PUT_VALUE_PART ALIGN=1 ?SD_PUT_VALUE_TABLE: CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;Common internal macro called from PUT_VALUE and PUT_WORD_VALUE macros that ; can actually be referenced in the configuration file ; ; Usage: ; ?PUT_VALUE type, label, len .MACRO ?PUT_VALUE .IFN (?BUILD?<>?LOADER) ;Create the literal name for this item CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?.PVN = . ;remember where the literal is .TXT "^2" ;Add an entry to special PutValue table for the given label CONFIGPART SD_PUT_VALUE_PART ALIGN=1 ?PV = . .BLK PV_ENTRY_SIZE ;Allocate enough room for new entry .LOC ?PV+PV.LABEL .DWORD ?.PVN-?PV .LOC ?PV+PV.VALUE .DWORD ^2-?PV .LOC ?PV+PV.TYPE .WORD ^1 .LOC ?PV+PV.LEN .WORD ^3 .LOC ?PV+PV_ENTRY_SIZE ;Position past new entry CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;not ?LOADER % ;Macro that identifies a string to be stored at initialization time using ; SD_PUT_VALUE for later reference by COBOL programs. It expects as an ; argument a label where a null-terminated string is located. The stored ; value can be retrieved using the label name. ; ; Usage: ; PUT_VALUE label .MACRO PUT_VALUE ?PUT_VALUE PVTYPE_STRING, ^1, 0 % ;Macro that identifies a one-word value to be stored at initialization time ; using SD_PUT_VALUE for later reference by COBOL programs. It expects as ; an argument a label where the word is located. The stored value can be ; retrieved using the label name. ; ; Usage: ; PUT_WORD_VALUE label .MACRO PUT_WORD_VALUE ?PUT_VALUE PVTYPE_BINARY, ^1, 2 % ;Macro that obtains an answer to the question: ; "When running in a shared console environment, such as CEO, ; what special handling, if any, needs to occur when an IPC ; message is received?" ;Answers are a combination of the following bit flags, which are ; also defined in SD_DEFINES .DUSR SHCON_IPC_HANDLING.FLUSH = 15. ;Do a flush before proceeding ; with the IPC system call .DUSR SHCON_IPC_HANDLING.ENVR = 14. ;Reset console environment ; (characteristics, delimiter ; tables, timeout) after IPC ; system call returns .DUSR SHCON_IPC_HANDLING.REDRAW = 13. ;Redraw the screen at the next ; flush following the IPC call ;Actual answers: .DUSR SHCON_IPC_IGNORE = 0 ;No special handling .DUSR SHCON_IPC_FLUSH = 1B(SHCON_IPC_HANDLING.FLUSH) ;Flush only .DUSR SHCON_IPC_RESET = SHCON_IPC_FLUSH!1B(SHCON_IPC_HANDLING.ENVR) ;Flush and reset environment .DUSR SHCON_IPC_REDRAW = SHCON_IPC_RESET!1B(SHCON_IPC_HANDLING.REDRAW) ;Flush, reset environment, and redraw ;Default is same as how rev 3.00.03 handled this situation ?SD_SHCON_IPC_HANDLING = SHCON_IPC_RESET .MACRO SHARED_CONSOLE_IPC_HANDLING? .IFG (.ARGCT) ?SD_SHCON_IPC_HANDLING = ^1 .ENDC % ;Macro that adds a given process name to the table SD_SHCON_IPC_IGNORE_PNAMES. ; At runtime, this table will be used to construct a table of matching PIDS, ; called SD_SHCON_IPC_IGNORE_PIDS. IPC's received from any of the processes ; listed in this table do not require resetting the terminal state. ; Expects a single argument - the process name (username:simple-proc-name) ; Usage: ; SHCON_IPC_IGNORE_IF_FROM process-name .IFN (?BUILD?<>?LOADER) ;Set up the process name table, initially empty. During END_CONFIG ; processing, a zero byte ptr will be appended to table, terminating ; it. CONFIGPART SD_SHCON_IPC_IGNORE_PNAMES_PART ALIGN=1 ?SD_SHCON_IPC_IGNORE_PNAMES: CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ?SHCON_IGNORE_PNAMES_COUNT = 0 .MACRO SHCON_IPC_IGNORE_IF_FROM .IFN (?BUILD?<>?LOADER) ;Store the given process name literal CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?IGNORE_PNAME = . ;remember where the literal is .TXT "^1" ;Append offset to the literal just stored to the ignore table CONFIGPART SD_SHCON_IPC_IGNORE_PNAMES_PART ALIGN=1 .DWORD ?IGNORE_PNAME-SD_CONFIG_BASE ?SHCON_IGNORE_PNAMES_COUNT = ?SHCON_IGNORE_PNAMES_COUNT+1 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;not ?LOADER % ;Final cleanup macro that creates the configuration file header .MACRO END_CONFIGURATION CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ALIGN 1 ;If not building a dynamic config file, then the table of associations between ; linked-in hot key routine names and their addresses is also being built. ; Terminate this table with a zero name ptr. .IFN (?BUILD?<>?DYNAMIC) CONFIGPART SD_HOT_LINKS_PART ALIGN=1 .DWORD 0 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ;Remember whether or not to look for a program-specific dynamic configuration ; file before using the information in this one SD_SPECIFIC_PROGRAM_CONFIG_LOAD: .IFN (?SPECIFIC_PROGRAM_CONFIG_LOAD==-1) .WORD YES .ELSE .WORD ?SPECIFIC_PROGRAM_CONFIG_LOAD .ENDC ;If no scrollback buffer was declared, create dummy versions of the ; scrollback handler routines to prevent the SD_SCROLLBACK module ; from being linked into the program. .IFE ?SD_SCROLLBACK_BUFFER_SIZE .ENT SD_APPEND_TO_SCROLLBACK_BUFFER .ENT SD_SHOW_SCROLLBACK_BUFFER .NREL 7 SD_APPEND_TO_SCROLLBACK_BUFFER: WSSVR 0 WRTN SD_SHOW_SCROLLBACK_BUFFER: WSAVR 0 WRTN CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;If no mail hot key routines were declared, then define dummy versions of ; the mail routines so references to them will not be errors, and to ; prevent mail routines from being included in inner ring program or ; shared library due to references in interface modules. .IFE (?HOT?SD_READ_MAIL)!(?HOT?SD_MAIL_INBOX)!(?HOT?SD_INPUT_MAIL) .ENT SD_READ_MAIL .ENT SD_MAIL_INBOX .ENT SD_INPUT_MAIL .ENT SD_CLOSE_USERS_PO_BOX .ENT SD_SEND_MAIL .NREL 7 SD_READ_MAIL: SD_MAIL_INBOX: SD_INPUT_MAIL: SD_SEND_MAIL: WSAVR 0 WRTN SD_CLOSE_USERS_PO_BOX: WSSVR 0 WRTN CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC .ENDC ;not ?DYNAMIC ;Define desired initial memory element .IFG ?SD_MEM_INITIAL_PAGES .ALIGN 1 ?SD_MEM_INITIAL_AREA: .DWORD ?SD_MEM_INITIAL_CHUNK-SD_CONFIG_BASE ;Offset to chunk .DWORD ?SD_MEM_INITIAL_PAGES*1024. ; and its size in words .PART SD_UNINITIALIZED_DATA_PART ALIGN=1,DATA,UNSHARED,GLOBAL .ALIGN 1 ?SD_MEM_INITIAL_CHUNK: .BLK ?SD_MEM_INITIAL_PAGES*1024 .ELSE .ALIGN 1 ?SD_MEM_INITIAL_AREA: .DWORD 0 ;Zero addr means that there is no initial chunk .DWORD 0 ; and its size in words .ENDC .IFN (?BUILD?<>?LOADER) ;...extends to end-of-file... ;Finish setting up the variable portion of the config file ?SD_GET_IMAGE_DEFAULTS: .WORD ?SD_GET_IMAGE_DEFAULT_LINES .WORD ?SD_GET_IMAGE_DEFAULT_COLUMNS .WORD ?SD_GET_IMAGE_DEFAULT_PARAMS ;Bit flags in SD_CONFIG_FLAGS word defined in SD_CONFIG: ; (must match definitions in SD_DEFINES) .DUSR CNF.PHYSCLR = 15. ;If set, really clear physical screen whenever ; host program outputs a clear screen command .DUSR CNF.REDOUT = 14. ;If set, do automatic redraw whenever host ; program returns from call to nonSD program .DUSR CNF.IGNINT = 13. ;If set, SCREEN DEMON will discard ^C^x events .DUSR CNF.LNDRBOX = 12. ;If set, boxes will be drawn with LineDraw ; chars if terminal supports alt char sets .DUSR CNF.LNDRLIN = 11. ;If set, horizontal and vertical lines will be ; drawn with LineDraw chars if terminal ; supports alt char sets .DUSR CNF.TRSPUNIN = 10. ;If set, trailing spaces and underscores will ; be truncated when determining initial field ; input buffer contents, al @ lowing ^A and ^E ; to function more logically .DUSR CNF.NEWRETIN = 9. ;If set, new-style SD_RETURN_INPUT is in effect: ; (1) works at any input, not just across hot ; key calls ; (2) multiple fields can be returned, each ; with a delimiter .DUSR CNF.PADIN = 8. ;If set, then the field will be padded with ; spaces out to its full size when the input is ; complete, with the delimiter at the end of ; the field. This option is necessary for ; VS/COBOL to work properly if CNF.TRSPUNIN is ; used. ?SD_CONFIG_FLAGS = (?PHYSICAL_SCREEN_CLEAR)B(CNF.PHYSCLR) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?AUTO_REDRAW_AFTER_NONSD_CALL)B(CNF.REDOUT) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?IGNORE_CONSOLE_INTERRUPTS)B(CNF.IGNINT) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?USE_LINE_DRAW_CHARSET_FOR_BOXES)B(CNF.LNDRBOX) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?USE_LINE_DRAW_CHARSET_FOR_LINES)B(CNF.LNDRLIN) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?TRIM_SPACE_UNDERSCORE_ON_INPUT)B(CNF.TRSPUNIN) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?SD_RETURN_INPUT_MODE)B(CNF.NEWRETIN) ?SD_CONFIG_FLAGS = ?SD_CONFIG_FLAGS!(?PAD_INPUT_BUFFER_TO_FULL)B(CNF.PADIN) ;If no default primary and/or alternate character sets were specified, ; select appropriate defaults depending on default 7/8 bit mode setting. ; Then determine the character set palette slots corresponding to the ; selected character sets, and define the external symbols for them. .IFE (?SD_DEFAULT_7_OR_8_BIT_MODE-8) ;...if in 8-bit mode... .IFE ?DEF_PRIMARY_CHAR_SET .DUSR ?DEF_PRIMARY_CHAR_SET = '01' ;US set .ENDC .IFE ?DEF_ALTERNATE_CHAR_SET .DUSR ?DEF_ALTERNATE_CHAR_SET = '0>' ;DG International set .ENDC .ELSE .IFE ?DEF_PRIMARY_CHAR_SET .DUSR ?DEF_PRIMARY_CHAR_SET = '00' ;Keyboard set .ENDC .IFE ?DEF_ALTERNATE_CHAR_SET .DUSR ?DEF_ALTERNATE_CHAR_SET = '10' ;WP set .ENDC .ENDC ;Find primary character set palette slot .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 0 ;Default to first slot .IFE (?CHAR_SET_0-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 0 .ELSE .IFE (?CHAR_SET_1-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 1 .ELSE .IFE (?CHAR_SET_2-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 2 .ELSE .IFE (?CHAR_SET_3-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 3 .ELSE .IFE (?CHAR_SET_4-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 4 .ELSE .IFE (?CHAR_SET_5-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 5 .ELSE .IFE (?CHAR_SET_6-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 6 .ELSE .IFE (?CHAR_SET_7-?DEF_PRIMARY_CHAR_SET) .DUSR ?SD_DEFAULT_PRIMARY_CHAR_SET = 7 .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC ;Find alternate character set palette slot .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 1 ;Default to 2nd slot .IFE (?CHAR_SET_0-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 0 .ELSE .IFE (?CHAR_SET_1-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 1 .ELSE .IFE (?CHAR_SET_2-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 2 .ELSE .IFE (?CHAR_SET_3-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 3 .ELSE .IFE (?CHAR_SET_4-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 4 .ELSE .IFE (?CHAR_SET_5-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 5 .ELSE .IFE (?CHAR_SET_6-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 6 .ELSE .IFE (?CHAR_SET_7-?DEF_ALTERNATE_CHAR_SET) .DUSR ?SD_DEFAULT_ALTERNATE_CHAR_SET = 7 .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ALIGN 1 ;Word immediately in front of character set palette contains word offset ; into the palette to slot where Line Draw char set is listed, or ; -1 if Line Draw char set is not in the palette. ?LINE_DRAW_SLOT = -1 .IFE (?CHAR_SET_0-'11') ?LINE_DRAW_SLOT = 0 .ELSE .IFE (?CHAR_SET_1-'11') ?LINE_DRAW_SLOT = 1 .ELSE .IFE (?CHAR_SET_2-'11') ?LINE_DRAW_SLOT = 2 .ELSE .IFE (?CHAR_SET_3-'11') ?LINE_DRAW_SLOT = 3 .ELSE .IFE (?CHAR_SET_4-'11') ?LINE_DRAW_SLOT = 4 .ELSE .IFE (?CHAR_SET_5-'11') ?LINE_DRAW_SLOT = 5 .ELSE .IFE (?CHAR_SET_6-'11') ?LINE_DRAW_SLOT = 6 .ELSE .IFE (?CHAR_SET_7-'11') ?LINE_DRAW_SLOT = 7 .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .WORD ?LINE_DRAW_SLOT ?CHARACTER_SET_PALETTE: .WORD ?CHAR_SET_0 .WORD ?CHAR_SET_1 .WORD ?CHAR_SET_2 .WORD ?CHAR_SET_3 .WORD ?CHAR_SET_4 .WORD ?CHAR_SET_5 .WORD ?CHAR_SET_6 .WORD ?CHAR_SET_7 ;Arrange for COBOL programs to be able to access the value of SD_ALT_EXIT_KEY PUT_WORD_VALUE SD_ALT_EXIT_KEY ;Arrange for COBOL programs to be able to access the SD_HOT_TIMEOUT_INTERVAL PUT_WORD_VALUE SD_HOT_TIMEOUT_INTERVAL ;Finish up the list of users who are immune from automatic logoff termination NO_LOGOFF_USERS <127.> ;terminate the list ;Terminate the "Shared Console IPC-Receive No Redraw If From" process name table ; with a zero entry. CONFIGPART SD_SHCON_IPC_IGNORE_PNAMES_PART ALIGN=1 .DWORD 0 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ;Terminate the PutValue table with a zero entry CONFIGPART SD_PUT_VALUE_PART ALIGN=1 .DWORD 0 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ;If an older configuration file not containing remote view indicator ; parameters is being assembled, declare default parameters that ; result in no remote view indicator. .IFE ?SD_REMOTE_VIEW_INDICATOR_DEFINED SD_REMOTE_VIEW_INDICATOR? SD_REMOTE_VIEW_INDICATOR_SIZE? 0 SD_REMOTE_VIEW_INDICATOR_LINE? 1 SD_REMOTE_VIEW_INDICATOR_COLUMN? 1 SD_REMOTE_VIEW_INDICATOR_HEIGHT? 0 SD_REMOTE_VIEW_INDICATOR_WIDTH? 0 .ENDC ;Periodic interval must be specified if there is a screen saver interval, ; and it must be less than or equal to the screen saver interval. .IFG ?SD_SCREEN_SAVER_INTERVAL .IFG ?PERIODIC_INTERVAL .IFG (?PERIODIC_INTERVAL-?SD_SCREEN_SAVER_INTERVAL) .DUSR ?PERIODIC_INTERVAL = ?SD_SCREEN_SAVER_INTERVAL .ENDC .ELSE .DUSR ?PERIODIC_INTERVAL = ?SD_SCREEN_SAVER_INTERVAL .ENDC .ENDC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Now fill in the fields in the configuration file header ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .LOC SD_CONFIG_BASE+CNF?SIGNATURE .TXTN 1 .TXT "<4>SD<3>" .TXTN 0 .LOC SD_CONFIG_BASE+CNF?SD_CONFIG_REV .DWORD SD_CONFIG_REV_VALUE .LOC SD_CONFIG_BASE+CNF?PERIODIC_INTERVAL .WORD ?PERIODIC_INTERVAL .LOC SD_CONFIG_BASE+CNF?FLUSH_INTERVAL .WORD ?FLUSH_INTERVAL .LOC SD_CONFIG_BASE+CNF?SD_SCREEN_SAVER_INTERVAL .WORD ?SD_SCREEN_SAVER_INTERVAL .LOC SD_CONFIG_BASE+CNF?SD_HOT_TIMEOUT_INTERVAL SD_HOT_TIMEOUT_INTERVAL: ;label needed for PUT_VALUE reference .WORD ?SD_HOT_TIMEOUT_INTERVAL .LOC SD_CONFIG_BASE+CNF?LOGOFF_INTERVAL .WORD ?LOGOFF_INTERVAL .LOC SD_CONFIG_BASE+CNF?LOGOFF_OK_AFTER_TIME .DWORD ?LOGOFF_OK_AFTER_TIME .LOC SD_CONFIG_BASE+CNF?LOGOFF_OK_BEFORE_TIME .DWORD ?LOGOFF_OK_BEFORE_TIME .LOC SD_CONFIG_BASE+CNF?HOT_KEY_ASSIGNMENTS_TABLE .DWORD ?HOT_KEY_ASSIGNMENTS_TABLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?HOT_KEY_DEFS_TABLE .DWORD ?HOT_KEY_DEFS_TABLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?KEY_TRANSLATION_TABLE .DWORD ?KEY_TRANSLATION_TABLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?HOT_DELIMITER_TABLE .DWORD ?HOT_DELIMITER_TABLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?HOT_MENU_ITEMS .DWORD ?HOT_MENU_ITEMS-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?HOT_MENU_ITEM_NUMS .DWORD ?HOT_MENU_ITEM_NUMS-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?HOT_ESCAPE_KEY .WORD ?HOT_ESCAPE_KEY .LOC SD_CONFIG_BASE+CNF?SD_ALT_EXIT_KEY SD_ALT_EXIT_KEY: ;label needed for PUT_VALUE reference .WORD ?SD_ALT_EXIT_KEY .LOC SD_CONFIG_BASE+CNF?SD_MODEM_DISCONNECT_KEY .WORD ?SD_MODEM_DISCONNECT_KEY .LOC SD_CONFIG_BASE+CNF?INPUT_FEEDBACK_STRING .DWORD ?INPUT_FEEDBACK_STRING-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?INPUT_FEEDBACK_STRING_SIZE .WORD ?INPUT_FEEDBACK_STRING_SIZE .LOC SD_CONFIG_BAS `:E+CNF?MAX_SCROLL_BEFORE_FLUSH .WORD ?MAX_SCROLL_BEFORE_FLUSH .LOC SD_CONFIG_BASE+CNF?SD_NO_LOGOFF_USERS .DWORD ?SD_NO_LOGOFF_USERS-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?MAIL_INDICATOR .DWORD ?MAIL_INDICATOR-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?MAIL_INDICATOR_SIZE .WORD ?MAIL_INDICATOR_SIZE .LOC SD_CONFIG_BASE+CNF?MAIL_VIEW_LINE .WORD ?MAIL_VIEW_LINE .LOC SD_CONFIG_BASE+CNF?MAIL_VIEW_COLUMN .WORD ?MAIL_VIEW_COLUMN .LOC SD_CONFIG_BASE+CNF?MAIL_VIEW_HEIGHT .WORD ?MAIL_VIEW_HEIGHT .LOC SD_CONFIG_BASE+CNF?MAIL_VIEW_WIDTH .WORD ?MAIL_VIEW_WIDTH .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR .DWORD ?SD_REMOTE_VIEW_INDICATOR-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR_SIZE .WORD ?SD_REMOTE_VIEW_INDICATOR_SIZE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR_LINE .WORD ?SD_REMOTE_VIEW_INDICATOR_LINE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR_COLUMN .WORD ?SD_REMOTE_VIEW_INDICATOR_COLUMN .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR_HEIGHT .WORD ?SD_REMOTE_VIEW_INDICATOR_HEIGHT .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_VIEW_INDICATOR_WIDTH .WORD ?SD_REMOTE_VIEW_INDICATOR_WIDTH .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR .DWORD ?SD_REMOTE_INPUT_INDICATOR-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR_SIZE .WORD ?SD_REMOTE_INPUT_INDICATOR_SIZE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR_LINE .WORD ?SD_REMOTE_INPUT_INDICATOR_LINE .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR_COLUMN .WORD ?SD_REMOTE_INPUT_INDICATOR_COLUMN .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR_HEIGHT .WORD ?SD_REMOTE_INPUT_INDICATOR_HEIGHT .LOC SD_CONFIG_BASE+CNF?SD_REMOTE_INPUT_INDICATOR_WIDTH .WORD ?SD_REMOTE_INPUT_INDICATOR_WIDTH .LOC SD_CONFIG_BASE+CNF?CEO_MAIL_VIEW_LINE .WORD ?CEO_MAIL_VIEW_LINE .LOC SD_CONFIG_BASE+CNF?CEO_MAIL_VIEW_COLUMN .WORD ?CEO_MAIL_VIEW_COLUMN .LOC SD_CONFIG_BASE+CNF?PAD_PATH_PREFIX .DWORD ?PAD_PATH_PREFIX-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?PAD_PATH_SUFFIX .DWORD ?PAD_PATH_SUFFIX-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?MAX_CONLOG_SIZE .DWORD ?MAX_CONLOG_SIZE .LOC SD_CONFIG_BASE+CNF?SD_SPECIAL_PROGRAMS_LIST .DWORD ?SD_SPECIAL_PROGRAMS_LIST-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_WP_SHELL_CLI_LETTER .DWORD ?SD_WP_SHELL_CLI_LETTER-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_MAIN_MENU_TITLE .DWORD ?SD_MAIN_MENU_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_MAIN_MENU_FOOTER .DWORD ?SD_MAIN_MENU_FOOTER-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_NOTEPAD_TITLE .DWORD ?SD_NOTEPAD_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDSCREENPRINT_TITLE .DWORD ?SDSCREENPRINT_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDCALCULATOR_TITLE_ONE .DWORD ?SDCALCULATOR_TITLE_ONE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDCALCULATOR_TITLE_TWO .DWORD ?SDCALCULATOR_TITLE_TWO-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDCALENDAR_TITLE .DWORD ?SDCALENDAR_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_READ_MAIL_TITLE .DWORD ?SD_READ_MAIL_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_INPUT_MAIL_TITLE .DWORD ?SD_INPUT_MAIL_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_COMMAND_TITLE .DWORD ?SD_COMMAND_TITLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_CLI_INIT_CMD .DWORD ?SD_DEFAULT_CLI_INIT_CMD-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_CLI_PATHNAME .DWORD ?SD_CLI_PATHNAME-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDSCREENPRINT_OUTPUT_NAME .DWORD ?SDSCREENPRINT_OUTPUT_NAME-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SDSCREENPRINT_ASK_OUTPUT_NAME .WORD ?SDSCREENPRINT_ASK_OUTPUT_NAME .LOC SD_CONFIG_BASE+CNF?SD_READ_MAIL_OUTPUT_NAME .DWORD ?SD_READ_MAIL_OUTPUT_NAME-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_READ_MAIL_ASK_OUTPUT_NAME .WORD ?SD_READ_MAIL_ASK_OUTPUT_NAME .LOC SD_CONFIG_BASE+CNF?SD_READ_MAIL_AUTO_DELETE .WORD ?SD_READ_MAIL_AUTO_DELETE .LOC SD_CONFIG_BASE+CNF?SD_IMMEDIATE_MAIL_DELIVERY .WORD ?SD_IMMEDIATE_MAIL_DELIVERY .LOC SD_CONFIG_BASE+CNF?SD_MEM_INITIAL_AREA .DWORD ?SD_MEM_INITIAL_AREA-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_CONFIG_FLAGS .WORD ?SD_CONFIG_FLAGS .LOC SD_CONFIG_BASE+CNF?SD_CONSOLE_INTERRUPT_HANDLING .WORD ?SD_CONSOLE_INTERRUPT_HANDLING .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_CURSOR_TYPE .WORD ?SD_DEFAULT_CURSOR_TYPE .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_SCROLL_RATE .WORD ?SD_DEFAULT_SCROLL_RATE .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_7_OR_8_BIT_MODE .WORD ?SD_DEFAULT_7_OR_8_BIT_MODE .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_KEYBD_LANG .WORD ?SD_DEFAULT_KEYBD_LANG .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_PRIMARY_CHAR_SET .WORD ?SD_DEFAULT_PRIMARY_CHAR_SET .LOC SD_CONFIG_BASE+CNF?SD_DEFAULT_ALTERNATE_CHAR_SET .WORD ?SD_DEFAULT_ALTERNATE_CHAR_SET .LOC SD_CONFIG_BASE+CNF?SD_CONFIG_TURBO_LEVEL .WORD ?SD_CONFIG_TURBO_LEVEL .LOC SD_CONFIG_BASE+CNF?SD_CONFIG_NRM_OFF .WORD ?SD_CONFIG_NRM_OFF .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_FORMAT .DWORD ?SD_FLOAT_CLOCK_FORMAT-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_FORMAT_LEN .WORD ?SD_FLOAT_CLOCK_FORMAT_LEN .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_LINE .WORD ?SD_FLOAT_CLOCK_LINE .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_COLUMN .WORD ?SD_FLOAT_CLOCK_COLUMN .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_WIDTH .WORD ?SD_FLOAT_CLOCK_WIDTH .LOC SD_CONFIG_BASE+CNF?SD_FLOAT_CLOCK_HEIGHT .WORD ?SD_FLOAT_CLOCK_HEIGHT .LOC SD_CONFIG_BASE+CNF?SD_MONTH_NAMES .DWORD ?SD_MONTH_NAMES-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_WEEKDAY_NAMES .DWORD ?SD_WEEKDAY_NAMES-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_INPUT_HISTORY_SIZE .WORD ?SD_INPUT_HISTORY_SIZE .LOC SD_CONFIG_BASE+CNF?SD_SCROLLBACK_BUFFER_SIZE .DWORD ?SD_SCROLLBACK_BUFFER_SIZE .LOC SD_CONFIG_BASE+CNF?SD_SHCON_IPC_HANDLING .WORD ?SD_SHCON_IPC_HANDLING .LOC SD_CONFIG_BASE+CNF?SD_SHCON_IPC_IGNORE_PNAMES .DWORD ?SD_SHCON_IPC_IGNORE_PNAMES-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SHCON_IGNORE_PNAMES_COUNT .WORD ?SHCON_IGNORE_PNAMES_COUNT .LOC SD_CONFIG_BASE+CNF?SD_GET_IMAGE_DEFAULTS .DWORD ?SD_GET_IMAGE_DEFAULTS-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?CHARACTER_SET_PALETTE .DWORD ?CHARACTER_SET_PALETTE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_PUT_VALUE_TABLE .DWORD ?SD_PUT_VALUE_TABLE-SD_CONFIG_BASE .LOC SD_CONFIG_BASE+CNF?SD_LOGOFF_CALL_PROGRAM .DWORD ?SD_LOGOFF_CALL_PROGRAM-SD_CONFIG_BASE ;Position past end of header stuff .LOC SD_CONFIG_BASE+SD_CONFIG_HDR_SIZE .ENDC ;not ?LOADER % ;end of .MACRO END_CONFIGURATION .END .@'Fo:'Hr'HrzSD_GATE_ARRAY_DEFINES.SR z ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_gate_array_defines.sr,v 1.5 1995/07/11 20:49:09 mark Exp mark $ ; ; $Log: sd_gate_array_defines.sr,v $ ; Revision 1.5 1995/07/11 20:49:09 mark ; Updated revision and copyright ; ; Revision 1.4 1994/06/28 16:50:22 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 array definitions .TITLE SD_GATE_ARRAY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; 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 ;Define the gate array header: .ENT SD_GATE_ARRAY .PART SD_SHARED_DATA_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .ALIGN 1 SD_GATE_ARRAY: .WORD 0 ;first word is undefined .WORD ?SD_MAX_GATES ;max number of gates ;Define a macro to add an entry for a specified routine to the gate array. ; ; 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 external symbol .EXTL ^1 ;Add gate for the routine, callable from any ring .GATE ^1,7S3 ;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. ; ; Call format: ; DUMMY_GATE .MACRO DUMMY_GATE ;Add gate for the routine, callable from any ring .GATE DUMMY_GATE_CALL,7S3 ;Increment number of gates that have been defined .DUSR ?SD_MAX_GATES = ?SD_MAX_GATES+1 ;Create the dummy routine that will be invoked if the dummy ; gate is referenced. .IFE .MCALL .NREL 7 .ENT DUMMY_GATE_CALL DUMMY_GATE_CALL: WSAVR 0 WRTN .PART SD_SHARED_DATA_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .ENDC % ;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 create an entry 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. .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 % .EOF .@!zL'Hs'Hs SD_CEO_INTERFACE_SLI.OB  9SD_CEO_INTERFACE_SLI.OBSN.SD_CEO_INTERFACESD_CEO_INTERFACE_SLI.OBEND_SD_CEO_INTERFACE_SLI.OBXG?IT_UNDER_CEO IT_UNDER_CEOz XG?IT_STARTIT_STARTXG?IT_CEO_TERMINALIT_CEO_TERMINALXG?IT_INTERRUPT IT_INTERRUPTXG?IT_INVOKE_CLI IT_INVOKE_CLIXG?IT_TERMINATE IT_TERMINATE,XG?IT_CEO_MAIL IT_CEO_MAILE SL.DERR.HOOK SL.DERR.IHOOK SL.DERR.HOOK*JND.SD_CEO_INTERFACE_DUMMYND.SD_CEO_INTERFACENDAT.SD_CEO_INTERFACE SD_CEO_INTERFACE_SLI.OB?SL_INTERFACE_START ?SL_INTERFACE_PART?SL_INTERFACE_END ND.SD_CEO_INTERFACE NDAT.SD_CEO_INTERFACESN.SD_CEO_INTERFACE  SD_CEO_INTERFACE_SLI.OB  END_SD_CEO_INTERFACE_SLI.OB  SD_CEO_INTERFACE.SL #     XG?IT_UNDER_CEO?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOK IT_UNDER_CEO ND.SD_CEO_INTERFACE 9   XG?IT_START?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOKIT_START ND.SD_CEO_INTERFACE 9   XG?IT_CEO_TERMINAL?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOKIT_CEO_TERMINAL ND.SD_CEO_INTERFACE 9   XG?IT_INTERRUPT?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOK IT_INTERRUPT ND.SD_CEO_INTERFACE 9   XG?IT_INVOKE_CLI?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOK IT_INVOKE_CLI ND.SD_CEO_INTERFACE 9    XG?IT_TERMINATE?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOK IT_TERMINATE ND.SD_CEO_INTERFACE 9     XG?IT_CEO_MAIL?SL_INTERFACE_PART END_SD_CEO_INTERFACE_SLI.OB  SL.DERR  SL.DERR.IHOOK IT_CEO_MAIL ND.SD_CEO_INTERFACE 9    SL.DERR.HOOK  SL.DERR SL.DERR.IHOOK SL.DERR.HOOK ND.SD_CEO_INTERFACE_DUMMYND.SD_CEO_INTERFACENDAT.SD_CEO_INTERFACE .@'GV'Hs/'Hs/SD_ICDEB_1.60_INTF.OB  SD_ICDEB_INTF%C!/ SD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART@Od t~   "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_JSRCON_FLAGSTIBTIB_UPD_COUNTEXTC_SD_INIT_CALLS?8M] mSD_VIEW_TARGET_SCREENSD.SD_ICDEB_INTFUI.SD_ICDEB_INTFSC.SD_ICDEB_INTF =)ƉY  )♁Yy)bxـ* b8 iɇy@y)♻y@y)♣щxƉ yy)8))<yYIY)XSD_VIEW_TARGET_SCREEN 9$y9)yYx)      1 7 A PoRUoW]` jps x          .@'H|'H}'H}"&9SCREEN_DEMON.LB ; SD_REV_3.60.01R SD_SYSCALL SD.SYSCALL SC.SD_SYSCALLmSD_URTB.KILL.UTSK SC.SD_URTBvUSD_INITSD_INIT SD_SHUTDOWN SD_TERMINATESD_RESET_FLUSH_TIMERMAP_IN_CON_VM_RECORDMAP_IN_PID_VM_RECORDMAP_IN_VM_RECORDRELEASE_VM_RECORDUNLINK_PID_FROM_CONSOLEASSIGN_SD_CON_NUMASSIGN_SD_CON_NUM_USING_LISTHANDLE_SPECIAL_TURBO_SETTINGIS_PROGRAM_SPECIAL?SD_?KWAIT_HANDLER SD_DECLARE_CON_INTERRUPT_HANDLERSD_DECLARE_SIGNAL_HANDLERSD_SET_SECONDARY_PROGRAM_NAMESD_GET_CONSOLE_STATUSSD_GET_CONSOLE_DEVICE_NAMESDSetSecondaryProgramNameSDGetConsoleDeviceNameCON_VMPID_VMTIBTIBATRTIBOFSATTRBCHARSETS TIB_UPD_COUNT TIB_WNDDSC TIB_WNDFLG TIB_VIEWSCON_ACTIVE_PIDCON_SHUTDOWN_PID CON_FLAGSRETURN_INPUT_STRINGRETURN_INPUT_SIZEOBTAIN_INPUT_SIZE CON_HOT_FROM CON_HOT_KEYACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLACTUAL_CON_TIMEOUTTIB_LMARTIB_RMAR TIB_OLMAR TIB_ORMAR TIB_CLONE CON_MODELID CON_TERMCAPSVIRTUAL_CON_TIMEOUTVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_DELIMITER_TABLE PID_FLAGSCON_PROGCON_PROG_END_PTR CON_USERNAME CON_LISN_UTIDCON_LAST_DELIMCON_CUT_BUFFERCON_CUT_BUFFER_LENCOMPOSITE_IMAGECOMPOSITE_UPD_COUNT SD_CUR_PID SD_DAD_PIDSD_ACTUAL_DAD_PID SD_CON_NUM SD_CON_DEVICE SD_WORK_DIRSD_WORK_DIR_PATHVM_FILENAME_BASE VM_PATHNAMEVM_CHAN CON_TYPE_LIST NONFNB_TBL?KWAIT_MAILBOX ?KWAIT_CHARAOS.VS_REVISION AOS.VS_TYPEFLUSH_TIMER_TASK_ID SD.SD_INIT UD.SD_INIT UI.SD_INITwx SD_MEM SD_MEM_INIT SD_MALLOCSD_MEM_ALLOCATE SD_MEM_FREESD_MEM_FREE_BPSD_MEM_ALLOCATE_RING_7SD_EXPAND_SHARED_PARTITIONSD_MAP_MEM_TO_VMSD_MEM_ELEMENT_SIZESD_MEM_DIR_NAME SD.SD_MEM UD.SD_MEM UI.SD_MEM0$PHSD_LOCKSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_ALL_LOCKS UD.SD_LOCKK%3 SD_CONSOLESD_SELECT_CONSOLE_TIMEOUTSD_CONSOLE_MATCH_?CTOSD_RESET_TIMEOUTSSD_SET_ACCEPT_TIMEOUTSD_CLASSIFY_TIMEOUT_ERRORSD_PROCESS_TIMEOUT_ERRORSD_CONSOLE_SET_TIMEOUTSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_INITSD_CONSOLE_OPENSD_CONSOLE_TO_VIRTUAL_STATESD_CONSOLE_INIT_CHARACTERISTICSSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_INIT_DELIMITER_TABLESD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_SET_DELIMITER_TABLE SD_CONSOLE_GET_VIRTUAL_DELIM_TBL SD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_GET_DELIMITER_TABLESD_SET_DELIMITER_TABLESD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_SET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_MODELIDSD_CONSOLE_INPUT_PREPSD_SET_LOGOFF_INTERVALSD_GET_TERMCAPS USER_TIMEOUTACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETLOGOFF_TIMEOUTSD_LOGOFF_WAIT_INTERVALFORCE_ON_CON_CHARACTERISTICS SD_CONNAMEOUTNAMEINNAME OUTPATH_PTR CONSOLE_PORT OUTPUT_PORT INPUT_PORTCONPKT CONSOLE_CHANCONSOLE_FILE_TYPECONSOLE_CHAN_MAPCONSOLE_CHAN_PARAMS SD.SD_CONSOLE UD.SD_CONSOLE UI.SD_CONSOLE SC.SD_CONSOLE}7f M`SD_LOAD_CONFIGSD_LOAD_CONFIGSD_CONFIG_BASE_ADDRSD_SHCON_IPC_IGNORE_PIDS SD_CONFIG_REVPERIODIC_INTERVALFLUSH_INTERVALSD_SCREEN_SAVER_INTERVALSD_HOT_TIMEOUT_INTERVALLOGOFF_INTERVALLOGOFF_OK_AFTER_TIMELOGOFF_OK_BEFORE_TIMEHOT_KEY_ASSIGNMENTS_TABLEHOT_KEY_DEFS_TABLEKEY_TRANSLATION_TABLEHOT_DELIMITER_TABLEHOT_ESCAPE_KEYHOT_MENU_ITEMSHOT_MENU_ITEM_NUMSINPUT_FEEDBACK_STRINGINPUT_FEEDBACK_STRING_SIZEMAX_SCROLL_BEFORE_FLUSHMAIL_INDICATORMAIL_INDICATOR_SIZEMAIL_VIEW_LINEMAIL_VIEW_COLUMNMAIL_VIEW_HEIGHTMAIL_VIEW_WIDTHSD_REMOTE_VIEW_INDICATORSD_REMOTE_VIEW_INDICATOR_SIZESD_REMOTE_VIEW_INDICATOR_LINESD_REMOTE_VIEW_INDICATOR_COLUMNSD_REMOTE_VIEW_INDICATOR_HEIGHTSD_REMOTE_VIEW_INDICATOR_WIDTHSD_REMOTE_INPUT_INDICATORSD_REMOTE_INPUT_INDICATOR_SIZESD_REMOTE_INPUT_INDICATOR_LINE SD_REMOTE_INPUT_INDICATOR_COLUMN SD_REMOTE_INPUT_INDICATOR_HEIGHTSD_REMOTE_INPUT_INDICATOR_WIDTHCEO_MAIL_VIEW_LINECEO_MAIL_VIEW_COLUMNPAD_PATH_PREFIXPAD_PATH_SUFFIXMAX_CONLOG_SIZESD_SPECIAL_PROGRAMS_LISTCHARACTER_SET_PALETTESD_WP_SHELL_CLI_LETTERSD_MAIN_MENU_TITLESD_MAIN_MENU_FOOTERSD_NOTEPAD_TITLESDSCREENPRINT_TITLESDCALCULATOR_TITLE_ONESDCALCULATOR_TITLE_TWOSDCALENDAR_TITLESD_READ_MAIL_TITLESD_INPUT_MAIL_TITLESD_COMMAND_TITLESD_DEFAULT_CLI_INIT_CMDSD_CLI_PATHNAMESDSCREENPRINT_OUTPUT_NAMESDSCREENPRINT_ASK_OUTPUT_NAMESD_READ_MAIL_OUTPUT_NAMESD_READ_MAIL_ASK_OUTPUT_NAMESD_READ_MAIL_AUTO_DELETESD_IMMEDIATE_MAIL_DELIVERYSD_MEM_INITIAL_AREASD_CONFIG_FLAGSSD_CONSOLE_INTERRUPT_HANDLINGSD_DEFAULT_CURSOR_TYPESD_DEFAULT_SCROLL_RATESD_DEFAULT_7_OR_8_BIT_MODESD_DEFAULT_KEYBD_LANGSD_DEFAULT_PRIMARY_CHAR_SETSD_DEFAULT_ALTERNATE_CHAR_SETSD_CONFIG_TURBO_LEVELSD_CONFIG_NRM_OFFSD_FLOAT_CLOCK_LINESD_FLOAT_CLOCK_COLUMNSD_FLOAT_CLOCK_WIDTHSD_FLOAT_CLOCK_HEIGHTSD_FLOAT_CLOCK_FORMATSD_FLOAT_CLOCK_FORMAT_LENSD_MONTH_NAMESSD_WEEKDAY_NAMESSD_INPUT_HISTORY_SIZESD_SCROLLBACK_BUFFER_SIZESD_GET_IMAGE_DEFAULTSSD_NO_LOGOFF_USERSSD_LOGOFF_CALL_PROGRAMSD_SHCON_IPC_HANDLINGSD_SHCON_IPC_IGNORE_PNAMESSD_ALT_EXIT_KEYSD_MODEM_DISCONNECT_KEYSD.SD_LOAD_CONFIGUD.SD_LOAD_CONFIGSC.SD_LOAD_CONFIGD6 SD_INTERFACE?G.SYSCASD_INTERCEPT_SYSCALLSD_SYSCALL_INTERCEPTORSD_SYSCALL_DISPATCH_ADDRSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_FIND_CONSOLE_CHANNEL_INFOSD_IS_NAME_CONSOLE?SD_INTF_?WRITE_DATASENS SD_?TLOCK SD_?TUNLOCKSD_RING_7_SYSCALLSD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERRORSD_RING_7_SYSCALL_HANDLER_ADDRSD_SYSCALL_DISPATCH_TBLDEFAULT_DELIM_TBLNULL_ONLY_DELIM_TBLUPPERCASE_XLAT_TBLSD_?IDGOTO_TARGET_TASKSSD_PENDING_FUNKEY_CHARSD.SD_INTERFACEUD.SD_INTERFACESC.SD_INTERFACExa% SD_INPUT_FIELDSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_INPUT_STRINGFLDPKT FLDSCRNPKTSET_FLD_DELIM_TBLSD_REQUEST_INPUT_THROUGH_SPYSD_DIVERT_INPUT_THROUGH_SPYSD_INPUT_IS_AVAILABLE_FROM_SPYSD_SPY_REMOTE_INPUTSD_ABORT_?READ_IN_PROGRESSSD_SET_ACCEPT_UPPERCASESD_SET_ACCEPT_LOWERCASESD_SET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_POSSD_GET_PREV_FROM_INPUT_HISTORYSD_GET_NEXT_FROM_INPUT_HISTORYSDSetAcceptUppercaseSDSetAcceptLowercaseSD_?ESBB_DISABLESD_INPUT_TASK_IDINPUT_ERROR_WINDOWINPUT_CASE_CONVERSIONSD_INPUT_SEMAPHORESD_INPUT_ABORT_ADDRSD_?READ_ABORT_SEMSD_NONTRAIL_DELIM_TBLSD_HOT_INPUT_TYPESD.SD_INPUT_FIELDUD.SD_INPUT_FIELDUI.SD_INPUT_FIELD 2 SD_MONITORSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_VIBSD_MONITOR_STRING_INTO_TIBSD_MONITOR_STRING_INTO_WINDOWSD_MONITOR_ECHO_INTO_VIBSD_MONITOR_ECHO_INTO_TIB SD_OUTPUTSD_OUTPUT_STRINGSD_DIRECT_OUTPUTSD_OUTPUT_STRING_TO_BUFSD_CONSOLE_?WRITESD_FATAL_ERRORCTRLDEF_CTRLICTRLICTRL2OUTPKT NONPRT_TBLDISPLAYABLE_CHARS_TBLWINDOW_PENDFUNCWINDOW_PEND_MISCDSPTBLFUNTBLXFUNTBLXPFUNTBLGFUNTBLWINDOW_SCROLL_COUNT UD.SD_MONITOR UI.SD_MONITOR SD.SD_MONITOR SC.SD_MONITORpK SD_WINDOWS SD_NEW_WINDOWSD_NEW_WINDOW_NO_INITSD_CREATE_WINDOWSD_CREATE_WINDOW_NO_INITSD_CREATE_WINDOW_NO_BOXSD_CREATE_FLOAT_WINDOWSD_ACTIVE_WINDOW SD_TOP_WINDOWSD_FLOAT_WINDOWSD_GET_WINDOW_DESCRIPTORSD_PUT_WINDOW_DESCRIPTORSD_GET_WINDOW_VIEWSD_GET_NEXT_WINDOW_VIEWSD_PUT_WINDOW_VIEWSD_NEW_WINDOW_VIEWSD_REMOVE_WINDOW POPWINDOWSD_REMOVE_WINDOW_NO_FLUSHSD_SUSPEND_WINDOWSD_CLONE_WINDOWSD_RESTORE_WINDOW_FROM_CLONESD_CLONE_WINDOW_JSR SD_RESTORE_WINDOW_FROM_CLONE_JSRSD_SET_WINDOW_SIZESD_SET_WINDOW_POSITIONSD_SCROLL_WINDOW_RIGHTSD_SCROLL_WINDOW_LEFTSD_SCROLL_WINDOW_UPSD_SCROLL_WINDOW_DOWNSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_UPSD_MOVE_WINDOW_DOWNSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_FLUSH_BUT_HOLD_OUTPUTSD_FLUSH_HDW_STATE_ONLYSD_FLUSH_FOR_MONITOR SD_FLUSH_FOR_MONITOR_HOLD_OUTPUT SD_COMPILE_RDLSD_COMPILE_NONFLOAT_TEMP_RDL SD_CLEAR_TIBSD_SYNC_AW_FIELDSSDFlushSDSuspendWindow SDCompileRDLSD_ADJUST_WINDOW_MOD_ZONESSD_ADJUST_AW_MOD_ZONESSD_RESET_MOD_ZONESFLOAT_TOP_WINDOW TOP_WINDOW BOTTOM_WINDOWCURRDLCURRDL_PRIMWNDPRIMARY_WINDOWPRIMARY_WINDOW_SCROLL_COUNTAWDSCAWBUFAWPOSAWATRAWOFSAWSETAWLPPAWCPLAWCPS AW_LIST_HEAD AW_LIST_TAILRDL_REBUILD_COUNTFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_ENDFLUSH_OUTPUT_CNT SD.SD_WINDOWS UD.SD_WINDOWS SC.SD_WINDOWSg  SD_DISPLAY SD_DISPLAYWSLAPSD_DISPLAY_INTO_STRINGSD_DISPLAY_INTO_STRING_JSRSD_DISPLAY_INTO_STRING_FOR_TIB SD_REDRAWWREFRESHSDRedrawSD_FORCE_CURSOR_WRAP_AT_MARGIN SD.SD_DISPLAYMw SD_GET_IMAGE SD_GET_IMAGESD_GET_SCREEN_IMAGESD_GET_SCREEN_IMAGE_JSRSD_GET_IMAGE_BELOW_FLOATSD_GET_IMAGE_BELOW_FLOAT_JSR SD_GET_POS  SD_READ_CHAR SD_READ_CHARREADCHAR SD_GETCHARSD_READ_CHAR_ONLYSD_GETCHAR_ONLYSD_EXTENDED_READ_CHAR SD_XGETCHAR SDXGetCharSD_SPY_REMOTE_GETCHARSD_DISCARD_INPUT_CACHESSD_APPEND_TO_GETCHAR_CACHESD_DISCARD_TYPE_AHEADSDDiscardTypeAheadREAD_CHAR_CONSOLE_CHANUD.SD_READ_CHARUI.SD_READ_CHARSD.SD_READ_CHAR( ' SD_HOT_KEYSSD_CALL_HOT_KEY_ROUTINE SD_PROC_PR SD_CLI_CMDSD_GET_HOT_CALLED_FROM_NAMESD_CONSOLE_TO_HOT_KEY_STATESD_WAIT_FOR_HOT_KEYSD_ENTER_HOT_KEYSD_EXIT_HOT_KEYSD_ABORT_HOT_KEY_HOLDSSDProcPrSDCLICmdSDGetHotCalledFromName NONFN_TBLNULL_TBLHOT_ON_CON_CHARACTERISTICSHOT_OFF_CON_CHARACTERISTICSCOBOL32_ON_CON_CHARACTERISTICSCOBOL32_OFF_CON_CHARACTERISTICSSD_HOT_KEY_UTIDSD_HOT_KEY_LEVELSD.SD_HOT_KEYSUD.SD_HOT_KEYSSC.SD_HOT_KEYS%OY| SDCALCULATORSDCALCULATOR.DSSDCALCULATOR.DE SDCALCULATOR!Z- SDCALENDAR SDCALENDAR.DS SDCALENDAR.DE SDCALENDARAYsd_cscreenprintSD_SCR_PRT_MAX_LEVELS..ud..sd_cscreenprint..sc..sd_cscreenprint SDDumpScreen SDSCREENPRINT1  SD_COMMAND SD_COMMAND SD.SD_COMMAND UD.SD_COMMAND UI.SD_COMMAND SC.SD_COMMAND/sd_mail ..ud..sd_mail ..sc..sd_mail SD_READ_MAIL SD_MAIL_INBOX SDSendMailSD_MAIL_SUPPORT SD_SEND_MAIL SD_INPUT_MAIL SD_OPEN_MAILSD_CLOSE_USERS_PO_BOXSD_LOCK_PO_FILESD_UNLOCK_PO_FILESD_CHECK_FOR_NEW_MAILSD_PO_BOX_CHAN SD_PO_DIRSD_READ_MAIL_ACTIVESD.SD_MAIL_SUPPORTUI.SD_MAIL_SUPPORTUD.SD_MAIL_SUPPORTSC.SD_MAIL_SUPPORT/ɮ% SD_NOTEPAD SD_NOTEPAD SDNotepad SD.SD_NOTEPAD UD.SD_NOTEPAD UI.SD_NOTEPADAfSD_CLI_INTERFACESD_CLI_INTERFACESD_SET_CLI_INIT_CMDSDSetCLIInitCmdUD.SD_CLI_INTERFACESD.SD_CLI_INTERFACE'9vSD_CLOCKSD_FLOAT_CLOCK SD.SD_CLOCK UI.SD_CLOCK SC.SD_CLOCK%֯  SD_MAIN_MENU SD_MAIN_MENUUD.SD_MAIN_MENUSC.SD_MAIN_MENUG# SD_C_SCREEN_IOUtoaBase.NULLDEL..ud..SD_C_SCREEN_IO..sc..SD_C_SCREEN_IOutoaSDbeepSDsetcurSDwriteSDfillSDinput1 SD_C_FILE_IO..sc..SD_C_FILE_IOsd_nopen sd_nwritesd_nreadsd_nseek sd_nclose!SD_C_INTF_DRAW SDDrawBox SDDrawVLine SDDrawHLine]N SD_C_INTF_IMAGE.NULLDEL SDLoadTib SDDisplaySDDisplayIntoString SDGetImageSDGetImageBelowFloatSDGetPosSDMonitorStringSDMonitorStringIntoTIBSDOutputStringx SD_C_INTF_INPUT.NULLDEL SDReadCharSDReadCharOnlySDSetAcceptTimeout SDReturnInput SDObtainInputSDObtainHotKey SDInputStringSDSetAcceptCursorOffsetSDGetAcceptCursorOffset SDGetCharSDSetFieldDelimiterTable' SD_C_INTF_MEM.NULLDELSDMallocSDFree SDPutValue SDGetValuecSD_C_INTF_MENU SDPopUpMenuSDMenu5SD_C_INTF_MESG SDMessage SDMessageOnlySDErrorMessageSDSysErrorMessage SDAskQuestionX SD_C_INTF_MISC SDControlSDSetLogoffInterval SDGetControl SDTurboOn SDTurboOff SDTurboFullSDTurboPartial SDTurboResetSDTemplateMatch SDGetTermcaps/ SD_C_INTF_WIN1SDCreateWindowSDCreateWindowNoBox SDNewWindowSDRemoveWindow FSD_C_INTF_WIN2SDCreateWindowUsingImageSDCreateWindowNoBoxUsingImageSDNewWindowUsingImageSDNewWindowNoInitSDNewWindowNoInitUsingImageSDCreateWindowNoInitSDCreateWindowNoInitUsingImageSDActiveWindowSDGetActiveWindow SDTopWindowSDGetTopWindow SDFloatWindowSDGetFloatWindowSDNewWindowViewSDShiftWindowRightSDShiftWindowLeftSDShiftWindowUpSDShiftWindowDownSDMoveWindowRightSDMoveWindowLeftSDMoveWindowUpSDMoveWindowDownSDSetWindowSizeSDSetWindowPosition G_sd_syssd_sys SC.sd_sys bsstrcpysstrcpy  SD_MESSAGE SD_MESSAGESD_MESSAGE_JSRSD_ERROR_MESSAGESD_ERROR_MESSAGE_JSRSD_SYS_ERROR_MESSAGESD_SYS_ERROR_MESSAGE_JSRSD_MESSAGE_ONLYSD_MESSAGE_ONLY_JSRSD_ASK_QUESTIONSD_ASK_QUESTION_JSR SD.SD_MESSAGE UD.SD_MESSAGE SC.SD_MESSAGESD_POP_UP_MENUSD_POP_UP_MENUSD.SD_POP_UP_MENU' aSD_MENUSD_MENUSD_MENU_CALC_SIZE_ONLY SD.SD_MENU SC.SD_MENU9SD_RETURN_INPUTSD_RETURN_INPUTSD_OBTAIN_INPUT SD_CUT_FIELDSD_PASTE_FIELDSC.SD_RETURN_INPUT\ SD_USER SD_USER_IDSD_SET_USER_IDSD_SET_AND_LOCK_USER_IDSD_UNLOCK_USER_IDSD_GET_USER_IDSDUserId SDSetUserIdSDSetAndLockUserIdSDUnlockUserId SDGetUserIdS SD_CONLOGSD_LOG_CONSOLE_EVENTSD_CLOSE_CONSOLE_LOG_FILECONLOG_OPEN_FLAG CONLOG_SIZESD_CONLOG_DIR_NAME SD.SD_CONLOG UD.SD_CONLOG UI.SD_CONLOG'% SD_DRAW_LINES SD_DRAW_HLINE SD_DRAW_VLINESD_DRAW_UNDERLINEt(XH SD_DRAW_BOX SD_DRAW_BOXDRAWBOXSD_GET_LINEDRAW_INTERSECT_CHARSD_SET_LINEDRAW_STYLESDSetLineDrawStyleSD_SET_BOX_FILL_STYLESDSetBoxFillStyleSD_LD_THICK_THIN SD_LD_ATTRBSD.SD_DRAW_BOXUD.SD_DRAW_BOX'.* sd_get_put.NULLDEL..ud..sd_get_put SD_PUT_VALUE SD_GET_VALUE'1SD_MATCHSD_TEMPLATE_MATCHSD_MATCH SD.SD_MATCH SC.SD_MATCH2 SD_CONTROL SD_CONTROLWCTRLSD_CONTROL_ONLYSD_GET_CONTROL SD_TURBO_ON SD_TURBO_OFF SD_TURBO_FULLSD_TURBO_PARTIALSD_TURBO_RESET SD_BYPASS_ON SD_BYPASS_OFF SD_DISABLE SD_ENABLESD_DISABLE_HOT_KEYSSD_ENABLE_HOT_KEYSSD_BITS_TO_DIGITSSD_DIGITS_TO_BITS SD_LOAD_TIBWREPLACE SDBypassOn SDBypassOff SDDisableSDEnableSDDisableHotKeysSDEnableHotKeys#6 SD_CBCALL?CBADDR?CBBADDR?CBPEEK?CBPOKE?CBSYSF7 SD_SCROLLBACKSD_APPEND_TO_SCROLLBACK_BUFFERSD_SHOW_SCROLLBACK_BUFFERSD.SD_SCROLLBACKUD.SD_SCROLLBACKSC.SD_SCROLLBACK> SD_CALL_LISTS?LBOTSD_EXECUTE_LIST_OF_CALLSSD_INIT_CALLS_LISTSD_SHUTDOWN_CALLS_LISTSD_PERIODIC_CALLS_LISTSD_SCREEN_SAVER_CALLS_LISTSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTSD_PRE_INPUT_CALLS_LISTSD_POST_INPUT_CALLS_LISTSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_PRE_?READ_CALLS_LISTSD_PRE_FLUSH_CALLS_LISTSD_PRE_?CHAIN_CALLS_LISTSD_POST_?CHAIN_CALLS_LISTUD.SD_CALL_LISTSASD_NO_VM_TERMCAPS_TBLSD_NO_VM_TERMCAPS_TBLZB( SD_NO_ICXSD_CALL_ICOBOL_SUBPROGRAMSD_ICX_TERMINATESD_ICX_INTERRUPTSD_ICX_UPDATE_..KTO..ESC..RIPcurrent_opcodeSD_LINKED_WITH_ICX_FLAG UI.SD_NO_ICXBG SD_NO_MAILSD_CLOSE_USERS_PO_BOX SC.SD_NO_MAIL&C7O SD_MODEM_INTFSD_GET_CONNAME_FROM_MODEM_MGRSC.SD_MODEM_INTF CN SD_WLI_DUMMYWHO_LOCKED_IT?WLI?SC.SD_WLI_DUMMY7CSD_PATCH SD_NPATCHSD_PATCH SD_PATCH_LIST ?SD_PATCH ?SD_NPATCH UD.SD_PATCH UI.SD_PATCH  SD_REV_3.60.01 SD_SYSCALL  .KILL  *SD.SYSCALLSC.SD_SYSCALL y0i  SD_URTB% %*2: ??UTSK.UKIL?G.UTSKG?G.UTSKBICTRLSD.SYSCALL ,1 6.KILL.UTSKSC.SD_URTB8x8DY)xx       SD_INIT >C: @ CC!M/!b2SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTD%9 HShv 3Oas{  -CVi    %;Scq/I^y  ?ZBOT?G.SYSCASD_INTERCEPT_SYSCALLSD_MEM_ALLOCATESD_MEM_INITSD_NEW_WINDOW_NO_INITSD_COMPILE_RDLSD_EXECUTE_LIST_OF_CALLSSD_OUTPUT_STRINGSD_MONITOR_STRING_INTO_VIBSD_MONITOR_STRING_INTO_TIBSD_CONSOLE_INITSD_CONSOLE_INIT_MODELIDSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_ABORT_ALL_LOCKSSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_DISABLESD_ENABLESD_CLOSE_CONSOLE_LOG_FILESD_ICX_TERMINATESD_ICX_INTERRUPTSD_DISCARD_INPUT_CACHESSD_DIVERT_INPUT_THROUGH_SPYSD_INPUT_IS_AVAILABLE_FROM_SPYSD_ABORT_HOT_KEY_HOLDSSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_?READ_IN_PROGRESSSD_GET_CONNAME_FROM_MODEM_MGRSD_LOAD_CONFIGSD_SYSCALL_DISPATCH_ADDRSD_CONNAMECONSOLE_CHANICTRLICTRL2CTRLDEF_CTRLAWBUFAWOFSAWPOSNONFN_TBLNULL_TBLSD_INIT_CALLS_LISTSD_SHUTDOWN_CALLS_LISTSD_SPECIAL_PROGRAMS_LISTCONLOG_OPEN_FLAGFLUSH_INTERVALFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_ENDSD_INPUT_SEMAPHORESD_HOT_KEY_UTIDSD_CONFIG_FLAGSSD_CONSOLE_INTERRUPT_HANDLINGSD_CONFIG_TURBO_LEVELSD_DEFAULT_CURSOR_TYPESD_DEFAULT_SCROLL_RATESD_DEFAULT_7_OR_8_BIT_MODESD_DEFAULT_KEYBD_LANGSD_DEFAULT_PRIMARY_CHAR_SETSD_DEFAULT_ALTERNATE_CHAR_SETSD_DYNAMIC_CONFIG_FILENAME?SD_PATCHSD.SYSCALLIt {   $ h | =33 O b s X \   &  ' - 3 6 < 0B 1G 2 O  \  f  p "y  b      _    `  % ? ^ p x            R 3 B      ' ( /5 0C fQ ec r            SD_INITSD_SHUTDOWNSD_TERMINATESD_RESET_FLUSH_TIMERMAP_IN_CON_VM_RECORDMAP_IN_PID_VM_RECORDMAP_IN_VM_RECORDRELEASE_VM_RECORDUNLINK_PID_FROM_CONSOLEASSIGN_SD_CON_NUMASSIGN_SD_CON_NUM_USING_LISTHANDLE_SPECIAL_TURBO_SETTINGIS_PROGRAM_SPECIAL?SD_?KWAIT_HANDLERSD_DECLARE_CON_INTERRUPT_HANDLERSD_DECLARE_SIGNAL_HANDLERSD_SET_SECONDARY_PROGRAM_NAMESD_GET_CONSOLE_STATUSSD_GET_CONSOLE_DEVICE_NAMESDSetSecondaryProgramNameSDGetConsoleDeviceNameCON_VMPID_VMTIBTIBATRTIBOFSATTRBCHARSETSTIB_UPD_COUNTTIB_WNDDSCTIB_WNDFLGTIB_VIEWSCON_ACTIVE_PIDCON_SHUTDOWN_PIDCON_FLAGSRETURN_INPUT_STRINGRETURN_INPUT_SIZEOBTAIN_INPUT_SIZECON_HOT_FROMCON_HOT_KEYACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLACTUAL_CON_TIMEOUTTIB_LMARTIB_RMARTIB_OLMARTIB_ORMARTIB_CLONECON_MODELIDCON_TERMCAPSVIRTUAL_CON_TIMEOUTVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_DELIMITER_TABLEPID_FLAGSCON_PROGCON_PROG_END_PTRCON_USERNAMECON_LISN_UTIDCON_LAST_DELIMCON_CUT_BUFFERCON_CUT_BUFFER_LENCOMPOSITE_IMAGECOMPOSITE_UPD_COUNTSD_CUR_PIDSD_DAD_PIDSD_ACTUAL_DAD_PIDSD_CON_NUMSD_CON_DEVICESD_WORK_DIRSD_WORK_DIR_PATHVM_FILENAME_BASE   l * $ &   ,     VM_PATHNAMEVM_CHANCON_TYPE_LISTNONFNB_TBL?KWAIT_MAILBOX?KWAIT_CHARAOS.VS_REVISIONAOS.VS_TYPEFLUSH_TIMER_TASK_IDSD.SD_INITUD.SD_INITUI.SD_INITUnable to find directory called :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM+>?>CONBATCHNOCON@VCON@WCON@PCCON      0  1  2  3  "              "      (@Y           ! " # $ % & '  ( ) * + ,  -  _.  `/  b0  d1  e2 f3 4 5 6  7  8 9 (: '; /<  /=  0> 3? B@ RA B  C 4D E $F  G  H  I  J  K  L  M  N  O  !P  "Q  #R  $S (T  U V  W X  Y  Z 2[ )p8I YYbYIYNY$4)Ix)7 =)@)   Yy@x)  Yy@x)  ,9Yy@8YYU)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 )4)6I8Ii6II386IYR )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)I/YIYW 9)9Y99y))IYSyiY v)Y99D)xyȉ yyy9 BYi8) @CONSOLE)♻) i )9)99)Y999yظ8))@8)8I9)89)) JI\ JIY9ix9()@9)Iyi*y YYYyyi)YYU; ))8 / / P(P- 03 8P>FKQ XhPm tP  P P;2+9. 3 7< APF I NP     PP   P  !P* - 0 8 =PQ0VPn0w2} P2 0P   P \ )⩻) 8)YYU)9)yyiIx9 ){ Console name not found in Console Types table or out of range! Correct SCREEN_DEMON.CONTYPES and then MAKE_SCREEN_DEMON.VM i  )`Ii)} })YYUIY99U)c )x89% ` y) YYyi9Y)ʙ)  Y)ʙ) ʩ)IYS ) ʩ)ʩ)ˉ Y)ʩ) ʙ) ʩ)@ʙ)I  ) ʩY)ʙ) ʩ)ʙ!) yy)0Yyy0Y9)/yYyi) YYUY0)Y123969495Y9Y)!Ii)9999)99)99)99)O99#() YyyiY)nyyɀiҴ)nyyi9y) y)R8)P).yyYy* YYy yiY9ϫI))I) YY )x')IixI NY9Y:) YYU   IRII8ax-2    P#2+ 3       PP    93 4  P  3  2/ 2 : @2N Q X ` k r wP} J L M  IHK     6 768     #9<D K NGS \4_5d g j q x  P  P         ]ޣ8IU 9)@9Y99y)YiY )I Y9Y)Ii )99(YYo)) 8y9(98)$yy*)ܧIi) 9Y9(Y Unable to load configuration file: ) IYS)YYUi  )Ii  )Ii) IYSY)8 Y)x  ")္II)iY fȂ:PER:CONSOLENOCON))) ţbyYyyyIyyxyYyyb)yl)"Ibyyy) yYy: YYYyyЉIyYYyy)x89Y8y)YĹI8IX)Iȉ艇yyyY8Y) IY) YcYY'Y湁Y9))WYYYȮ癮x)9ˣi99x2))8))oY)Yހx)YY)Yȩ9)))y)%)8)8)8)Y)؃)))-IYy      ,P38@;A@BCfPm r u.N  P  P    P2    $P6 ;<>A#D O R d lr z9 9 P) P$   ' 0 3 : = J M T W _ d m u z         2      ^˫9)9Y99yy 9Y9Y99yyY)m8©y™yyy)i)Ixɇ艆Yyyyx)XYI xɇȉ艇y)iy) xɇ艇yyI)Iy 9Y99908Y؉ɂYȉYyyyYy%8YxYxY)IISYYUxY$8' -x)' yx) ) x ) ')^C^@yI9)  ) ')8) ))8)88) &8Y$YSx(щ8xYI  L  8Y)x))x*щx))x) -) )8WY)xY)Y) 9*) {ׁY9)EConsole Interrupt (y**yIYy)АIYy-щY- ΉQy) Y)y幥))YY) P! 1P9 > G J Q T t y       PP 2  P P P$ ) /&2F7 J4T Z] los{~  42,E2D3)  P PP    ' "(&3. 4 >PCFI)L4S2Z ailvP%   ?  ? 3 P _1  )x)Ή))@xY)˸ P8Y) 88Y)`x) sy)x,fYNy))⹂ )8)8)⹁x))⹁)IP))©x)@))ꙻY)8)x)x)xσ80x0ϔiyy8y IyY)艆Yɇ))8 ) )Y*IyYyi )*),깁Y9Yi ) *IY9 )yYYY)))C)) )y 9)Y9)I9) ) IiY9)xyYyy C1P2!3(42 5 : A3HK NT [ bPj2t {#~45"4544!5422454=# *58 FL O b2 :`  SD_MEM4C&!9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART <BGZm  I.INIT?ZBOTSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ICX_UPDATE_..KTOSD_RING_7_SYSCALLSD_MEM_INITIAL_AREANONFN_TBLSD_CUR_PIDSD_WORK_DIR_PATHSD_RING_7_SYSCALL_HANDLER_ADDRSD_LINKED_WITH_ICX_FLAGSD.SYSCALL  *; Av  3 B K  T SD_MEM_INITSD_MALLOCSD_MEM_ALLOCATESD_MEM_FREESD_MEM_FREE_BPSD_MEM_ALLOCATE_RING_7SD_EXPAND_SHARED_PARTITIONSD_MAP_MEM_TO_VMSD_MEM_ELEMENT_SIZESD_MEM_DIR_NAMESD.SD_MEMUD.SD_MEMUI.SD_MEM:MEM:?SD_VM. +                     0yѹpxIyII)) YY))y晅y)yHx)yx󸀉y Y) ≃8i ɂYi )II)y) 8Ή x։ p8 xYI9YY 8 iI)y9^)xy) )IIyiɂ)x);iyI IމYYxYiY)$xi 幥pi =x);8yI IމYYxYiiY$  幥 pi)8x  9Y08  )I9x)Y9晁)Y9yщx )I  I x))Y9x) yxxy  yi) YYxyɂ  i)I))))IIi Iy)).9Y)T9Y)M9Y)P9YY9i )@9IY999 9)9II38Yy8x ) 9I9Y99 9 e9)Tx9f)`ȂCannot create temporary memory allocation file in directory :SCREEN_DEMON_3.60:MEM Cannot open temporary memory allocation file in directory :SCREEN_DEMON_:SCREEN_DEMON_3.60:MEM     M Q Y _ w   )D]dy        &,/4 8?Dgs|       SD_LOCK!!SD_UNSHARED_DATA_PART  SD.SYSCALL=8K,^k pSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_ALL_LOCKSUD.SD_LOCK ! )O ˙8XIO IIYyUX)# I)8ʩ%x" IIIYS)˙)YY)ʩyYY)I9Y) I  %3;DM S_ enqz  SD_CONSOLE4C&;!9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART]=   !*; KVe}    %/Ih   ).48Iap) :DYjy  SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_REDRAWSD_MONITOR_STRINGSD_OUTPUT_STRINGSD_DRAW_BOXSD_GETCHAR_ONLYSD_EXECUTE_LIST_OF_CALLSIS_PROGRAM_SPECIAL?SD_GET_IMAGE_BELOW_FLOAT_JSRSD_FLOAT_WINDOWSD_SUSPEND_WINDOWSD_ENTER_HOT_KEYSD_EXIT_HOT_KEYSD_TERMINATESD_MATCHSD_MEM_ALLOCATECON_MODELIDCON_TERMCAPSSD_DAD_PIDACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLACTUAL_CON_TIMEOUTVIRTUAL_CON_TIMEOUTVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_DELIMITER_TABLECON_PROGPID_FLAGSPID_VMTIBTIBOFSTIB_UPD_COUNTICTRLICTRL2CTRLPERIODIC_INTERVALSD_SCREEN_SAVER_INTERVALLOGOFF_INTERVALLOGOFF_OK_AFTER_TIMELOGOFF_OK_BEFORE_TIMESD_PERIODIC_CALLS_LISTSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTSD_SCREEN_SAVER_CALLS_LISTFLDPKTOUTPKTREAD_CHAR_CONSOLE_CHANHOT_DELIMITER_TABLEDEFAULT_DELIM_TBLNONFNB_TBLINPUT_CASE_CONVERSIONSD_CONFIG_NRM_OFFCOMPOSITE_IMAGECOMPOSITE_UPD_COUNTAWDSCSD_NO_LOGOFF_USERSCON_USERNAMESD.SYSCALL53lT Het|-<dW}v%; Cn cbx/n > J X l z               #  6 C  P  ]SD_SELECT_CONSOLE_TIMEOUTSD_CONSOLE_MATCH_?CTOSD_RESET_TIMEOUTSSD_SET_ACCEPT_TIMEOUTSD_CLASSIFY_TIMEOUT_ERRORSD_PROCESS_TIMEOUT_ERRORSD_CONSOLE_SET_TIMEOUTSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_INITSD_CONSOLE_OPENSD_CONSOLE_TO_VIRTUAL_STATESD_CONSOLE_INIT_CHARACTERISTICSSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_INIT_DELIMITER_TABLESD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_SET_DELIMITER_TABLESD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_GET_DELIMITER_TABLESD_SET_DELIMITER_TABLESD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_SET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_MODELIDSD_CONSOLE_INPUT_PREPSD_SET_LOGOFF_INTERVALSD_GET_TERMCAPSUSER_TIMEOUTACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETLOGOFF_TIMEOUTSD_LOGOFF_WAIT_INTERVALFORCE_ON_CON_CHARACTERISTICSSD_CONNAMEOUTNAMEINNAMEOUTPATH_PTRCONSOLE_PORTOUTPUT_PORTINPUT_PORTCONPKTCONSOLE_CHANCONSOLE_FILE_TYPECONSOLE_CHAN_MAPCONSOLE_CHAN_PARAMSSD.SD_CONSOLEUD.SD_CONSOLEUI.SD_CONSOLESC.SD_CONSOLE#@OUTPUT@INPUT<                 @                              1   !"#$,% &  @'+(;) ,O*:+)IIѹIyyIy㇩)YIY)8)x)XX) 11) ) Xḣ8X ã 9) IY9Yyi9Yx)x),9iY) IY9Yi9Yx)xxș))))9)|I9) YY8) )I~x F  WARNING: You are about to be logged off due to inactivity!  Press any key to clear this message and avoid logoff...) Y8X  ) yi) Y) )) )IyY) )@) ;ߣ8@  I I IљIxΉxY8؉y)yIљYi) 󉈹89Oy)y)w8)Y YY)♻9)9))I9 Y99)82Y) 1  $ ) ..5)<2? B3E K P X ] h k*n*qv.|768.      (??4G54 %-0 5 8 =)DHN)T X ^f3i m svEF .  ..(;:$? G KGP$X ]$c/l x$~.. ;G     ,ۈ8y))xII}'y  PiYYx)♻9)9))I9 Y99)YY)9ɇyY)8~KЉyY)ȉyѹyΉxYy xYIiى8)IyΉxYixى8)I) yy)Iy)IyY))I)IyѹyΉΉ@ xى8)IyΉΉ@ى8)I))) yy)I)) y)IyѹyΉΉ xى8)IyΉΉى8)I)) Y)9YY 9)P99$) 9Y9999   I9) yxـ [9J)Ή)} ) 9^xUo8O8#IḄ ~?98)9/)8&xY)Ή)|YY) )XXɇ)9$YY9‚xI9xC  G.% ( -"2-;GB E<H:K;N R q vG}; .%&' /   G!   !G /&& /'"*>0#3><"A I RGW"b j sGx"/''#  G#  G#// $,  OR ZG_$0 G$+G-sΝy) z*yI)Iy)i)II}iy)I+I)II)i9Y8I)I9I )J©)) ™Y)™I))IYi9y) 깈8))YYxI}^I)i)II})y))i9YYI)Y)ʙ)y)깈8))YYxI})I)) ))) Yx) ) )y)x9)) 9)x9)9YY11X)) x) )Ix̣) D EFEFQ0 ))Y)Y 9xY) )yy.. #!+!.5EAP@U=^.e'p$x!|/ ."= /"3/    /.#9< B1FL1O*R*U Z1] e h l9or/y/....  SD_LOAD_CONFIG"C !/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTq 4 9ET n w ?ZBOTSD_PUT_VALUESD_MEM_ALLOCATESD_EXPAND_SHARED_PARTITIONNONFN_TBLNONFNB_TBLSD_WORK_DIR_PATHSD_CONFIG_BASESD_DYNAMIC_CONFIG_FILENAMESD_SPECIFIC_PROGRAM_CONFIG_LOADSD.SYSCALL=    *  ;  I  a  x           1 !F #` $w ' ) * + , - . 0 1' 2F 3e 4 5 7 8  9  : ;7 <I =] >l @{ B D  F H J L N P+ RA TQ Vc Xv Z \ ^ ` bSD_LOAD_CONFIGSD_CONFIG_BASE_ADDRSD_SHCON_IPC_IGNORE_PIDSSD_CONFIG_REVPERIODIC_INTERVALFLUSH_INTERVALSD_SCREEN_SAVER_INTERVALSD_HOT_TIMEOUT_INTERVALLOGOFF_INTERVALLOGOFF_OK_AFTER_TIMELOGOFF_OK_BEFORE_TIMEHOT_KEY_ASSIGNMENTS_TABLEHOT_KEY_DEFS_TABLEKEY_TRANSLATION_TABLEHOT_DELIMITER_TABLEHOT_ESCAPE_KEYHOT_MENU_ITEMSHOT_MENU_ITEM_NUMSINPUT_FEEDBACK_STRINGINPUT_FEEDBACK_STRING_SIZEMAX_SCROLL_BEFORE_FLUSHMAIL_INDICATORMAIL_INDICATOR_SIZEMAIL_VIEW_LINEMAIL_VIEW_COLUMNMAIL_VIEW_HEIGHTMAIL_VIEW_WIDTHSD_REMOTE_VIEW_INDICATORSD_REMOTE_VIEW_INDICATOR_SIZESD_REMOTE_VIEW_INDICATOR_LINESD_REMOTE_VIEW_INDICATOR_COLUMNSD_REMOTE_VIEW_INDICATOR_HEIGHTSD_REMOTE_VIEW_INDICATOR_WIDTHSD_REMOTE_INPUT_INDICATORSD_REMOTE_INPUT_INDICATOR_SIZESD_REMOTE_INPUT_INDICATOR_LINESD_REMOTE_INPUT_INDICATOR_COLUMNSD_REMOTE_INPUT_INDICATOR_HEIGHTSD_REMOTE_INPUT_INDICATOR_WIDTHCEO_MAIL_VIEW_LINECEO_MAIL_VIEW_COLUMNPAD_PATH_PREFIXPAD_PATH_SUFFIXMAX_CONLOG_SIZESD_SPECIAL_PROGRAMS_LISTCHARACTER_SET_PALETTESD_WP_SHELL_CLI_LETTERSD_MAIN_MENU_TITLESD_MAIN_MENU_FOOTERSD_NOTEPAD_TITLESDSCREENPRINT_TITLESDCALCULATOR_TITLE_ONESDCALCULATOR_TITLE_TWOSDCALENDAR_TITLESD_READ_MAIL_TITLESD_INPUT_MAIL_TITLESD_COMMAND_TITLESD_DEFAULT_CLI_INIT_CMDSD_CLI_PATHNAMESDSCREENPRINT_OUTPUT_NAMESDSCREENPRINT_ASK_OUTPUT_NAMEM# c e f g h% j4 kQ lg m} n o p q r s w x2 yF z[ tp v { }    %  ' A P  gx SD_READ_MAIL_OUTPUT_NAMESD_READ_MAIL_ASK_OUTPUT_NAMESD_READ_MAIL_AUTO_DELETESD_IMMEDIATE_MAIL_DELIVERYSD_MEM_INITIAL_AREASD_CONFIG_FLAGSSD_CONSOLE_INTERRUPT_HANDLINGSD_DEFAULT_CURSOR_TYPESD_DEFAULT_SCROLL_RATESD_DEFAULT_7_OR_8_BIT_MODESD_DEFAULT_KEYBD_LANGSD_DEFAULT_PRIMARY_CHAR_SETSD_DEFAULT_ALTERNATE_CHAR_SETSD_CONFIG_TURBO_LEVELSD_CONFIG_NRM_OFFSD_FLOAT_CLOCK_LINESD_FLOAT_CLOCK_COLUMNSD_FLOAT_CLOCK_WIDTHSD_FLOAT_CLOCK_HEIGHTSD_FLOAT_CLOCK_FORMATSD_FLOAT_CLOCK_FORMAT_LENSD_MONTH_NAMESSD_WEEKDAY_NAMESSD_INPUT_HISTORY_SIZESD_SCROLLBACK_BUFFER_SIZESD_GET_IMAGE_DEFAULTSSD_NO_LOGOFF_USERSSD_LOGOFF_CALL_PROGRAMSD_SHCON_IPC_HANDLINGSD_SHCON_IPC_IGNORE_PNAMESSD_ALT_EXIT_KEYSD_MODEM_DISCONNECT_KEYSD.SD_LOAD_CONFIGUD.SD_LOAD_CONFIGSC.SD_LOAD_CONFIG :CONFIG:SD                                           !  #  $  %    '!  )"  *#  +$  ,%  -&  .'  0(  1)  2*  3+  4,  5-  7.  8/  90  :1  ;2  <3  =4  >5  @6  B7  D8  F9  H:  J;  L<  N=  P>  R?  T@  VA  XB  ZC  \D  ^E  `F  bG  cH  eI  fJ  gK  hL  jM  kN  lO  mP  nQ  o R  pS  qT  rU  sV  tW  vX  wY  xZ  y[  z\  {]  }^  _  `  a  b  c  d  e  f[)@x2x)8np8I)Iiǎ)@IY9Uxy) y)R8)P).yy).9Y)S9Y)D9YY9yYy Yi x )BxYYqI IY389 )IIi IY9i9 IY3x)9yΉ ?x 9)9 )9Y999Y08  YYqI)Dxy 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 Iy I 8))8Y) Iy IyyyY xY8yy ~I 8yIYYNI9YY򸀉Y9 # ' * - CKs       ! $   ( + 3 8 Hg SD_INTERFACE"Cn!/9SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART]|  +Ig  !8L [fy $4MQV \ f p y   <Wq       *5Ldz    3CXp~ SD_INITSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_TIBSD_OUTPUT_STRINGSD_CONSOLE_?WRITESD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_DELIMITER_TABLESD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_SET_OUTPUT_DELIM_TBLSD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_TO_VIRTUAL_STATESD_SHUTDOWNSD_INPUT_FIELD_TO_FULLSD_XGETCHARUNLINK_PID_FROM_CONSOLEMAP_IN_CON_VM_RECORDSD_MEM_ALLOCATESD_MEM_FREESD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_ALL_LOCKSSD_ABORT_HOT_KEY_HOLDSSD_EXECUTE_LIST_OF_CALLSSD_WAIT_FOR_HOT_KEYSD_ABORT_?READ_IN_PROGRESSSD_INPUT_IS_AVAILABLE_FROM_SPYSD_NEW_WINDOWSD_REMOVE_WINDOWSD_CLOSE_CONSOLE_LOG_FILECTRLICTRLICTRL2SD_CON_NUMSD_CONNAMECON_FLAGSPID_FLAGSCON_ACTIVE_PIDCON_SHUTDOWN_PIDSD_CUR_PIDSD_DAD_PIDCON_LISN_UTIDAWBUFAWOFSAWATRAWPOSAWLPPAWCPLCON_VMTIBVIRTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEVIRTUAL_CON_DELIMITER_TABLEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLVIRTUAL_CON_TIMEOUTCONSOLE_PORTOUTPUT_PORTINPUT_PORTCONSOLE_CHANCONSOLE_FILE_TYPEOUTNAMEINNAMEOUTPATH_PTRCONSOLE_CHAN_MAPCONSOLE_CHAN_PARAMS?KWAIT_MAILBOX?KWAIT_CHARSD_PRE_INPUT_CALLS_LISTSD_POST_INPUT_CALLS_LISTSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_PRE_?CHAIN_CALLS_LISTSD_POST_?CHAIN_CALLS_LISTACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETACTUAL_CON_TIMEOUTNONFN_TBLNONFNB_TBLNULL_TBLSD_CONFIG_FLAGSFLUSH_TIMER_TASK_IDFLOAT_TOP_WINDOWSD_SHCON_IPC_HANDLINGSD_SHCON_IPC_IGNORE_PIDSFLUSH_INTERVALRETURN_INPUT_SIZESD.SYSCALL~(0 tDZ r    , ,,6 Tk|2 ,  ?G.SYSCASD_INTERCEPT_SYSCALLSD_SYSCALL_INTERCEPTORSD_SYSCALL_DISPATCH_ADDRSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_FIND_CONSOLE_CHANNEL_INFOSD_IS_NAME_CONSOLE?SD_INTF_?WRITE_DATASENSSD_?TLOCKSD_?TUNLOCKSD_RING_7_SYSCALLSD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERRORSD_RING_7_SYSCALL_HANDLER_ADDRSD_SYSCALL_DISPATCH_TBLDEFAULT_DELIM_TBLNULL_ONLY_DELIM_TBLUPPERCASE_XLAT_TBLSD_?IDGOTO_TARGET_TASKSSD_PENDING_FUNKEY_CHARSD.SD_INTERFACEUD.SD_INTERFACESC.SD_INTERFACE,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~   /  ,  )x #)xI)ɀi0iix@yyy M [@yyyyy 6iy 8IߍY9)I9c) ♈s yyły) ⩣ )x) yyyy@y Ҏy ߍY9)I9cY)  yyֱyyyy@y  y))) x蹈)8)nyyx)) Y)   Hyy ~͛yyyy@y  Sy)♣  #yy ~Wy .yͤ9v) Y) ѩxY))Y9*) ȂIyIcELOGOFF-TERMyyyy@yY8ቓxyy ~1yyI)IyY9Nyy) YYyY)IxW y89L) xY) ѩxY)ĂIyIc癝yY) x)Y) )) yy }yyyy@yx  8) xyy }f 0 yy8yyy-  . 08,F^Wa%f,ko>yf~5>1f1X%.U%+>f5>42f2,4$1+?.86_<,CFILO1UVX%t2zV}%f#$,26-  2ff5 5f(f-#2$<,A2H6M-TW Z ]afifp.w-}aa-a-,-f #y@y  )♻ yy) xy)9)9)9 Y99i))xy Yyщy)IЉ)) Yyщy)I  Syy |؛yyyy@y)⹂xyy |y ⩁YYY)X xixx i ؉yy |yy |~yyyy@y)xY)8)yI y 8 I)8)YYI8 Iȉy yx)Y)8y)nyy)ɀ)Љ))x)y 998yy)9)9Љ8yy)9)9y)8ɀY)Ȃ9Љ)) 8)9)Vy  y))x )))IY99Y8yy)"y   y)) y9yy)IY8)>8Љ)@YxI  ဉY) 8 I 8 ⩻,⹁.㉁Byy zЉyy YyY) 8 I 8 ⩻,⹁.㉁Byy zY9)ay)) yYIIy9Y99))8 yy)y) )y))y  y)) yyYق))8 yy)))Y8Y OPCINQD_ejmEOJOfP O-,&   f )S,%/32553:@@1H?K8T!W9Z8];b"9    Y@F%T(%+Z.Y1e4_= D.K R V [ `fqTt%xZ{Y.    f. ')y  yY9Y܀Y) 8 I 8 ⩻,⹁.㉁Byy yYyYyY) 8 I 8 ⩻,⹁.㉁Byy yy9Y)Iyy8։)>Ii)I9III)Iy)0Iy iy)))))))0I)I yx)y) yy艇yyyy@y8)⹀ )fyx)Y)8y)nyy)ɀ)Љ)) x))x)yIY))`Y)8)Wy  yy)))@yy)) yYI YyIY))i)`8)xY) 8 Y)xyy x)yy xi9)) y))yɀY)Ȃ9ЉY _yy w䘉yy wۛyyyy@y8x8㉉yy w95yy wyyyy@yIxyyyy@yYy8x8㉓@)8yyyIyyy wX9㸎Ղyy wC)a w1F?I8R!U9X8[;`" 2, E 2,d 2 39@ _,lOsF,OB@,O ) ()฻yyIyyy v9l8yy vڛyyyy@y8x8㉋@)yIyy v9븎,yy vyyyy@yxx㉙88Yyщy8@)Iyy v[9x؂yy vGyy@y)IYyU)©Yyyy vyyyy@y))YyU)©Yyy uȉZyy uyyyy@y2ey8,0 yyN8y,ک کЉzyy uy,ک کЉcyy uy)YY8yyyy@y͎y YN0yy uXBN uO)8))xyyyy@yyy8o u uY)x)Y8yyyy@yXcyy t t)8+8)8yyyy@y'Z2yybx< t ty))8)xy)♀)x)xY8ɇy))♣)) ))))) ♠y)8I4Y t.)M t$ t ))x) tȉێyy tyyyy@yWyA8. yyK8B@9,FORCx,OC-RQf-Q-RQ f-Q> B F NfU Y l p '(ff-b@f-b'-.bDGTf`@j3obv-}1cb-b.[b,. ..  %f Qy.ک کЉGyy sy.ک کЉ0yy s#yy syyyy@y.y偸.^yy s) syyyy@yԎyI) IyIЉ5YY9YY@Y#yy sL xYyy s;)Y024) Y9999Iۂ)4)QYx Y9999Iۂ)4x02YYU))I002IISyi) Yہx)yy)YI>I؉ yI   Y?؉y)@y)dyIi8 Yy1)dyIix) @CONSOLEI)dyIiY))8II)@Iy)yYYYY8I)dyIiY)8)II)@Iy)yYYYY2IYYxIxyYYYyy8IIyI)@Iyx)yY)I8:PER:yIiYƉxy8IiIyIYYy y    I  Y Y   yI ѩx  Y  Y y Y y y y )    L w ~`f   .f f`f   f .   f3fB&Ifaft-L-HLffHM-I M ffI!K-f2G90>fCGHH\fbN ! h7   N 7\QX Y    0 U   Pjlnprtz~jr~  SD_INPUT_FIELD4C&r!92!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTa  +K`q4D [ dp %4CWq *2 : DNSX]bglq   (-37Gb}    0:H_o..RIPSD_CALL_HOT_KEY_ROUTINESD_FLUSHSD_FLUSH_BUT_HOLD_OUTPUTSD_FLUSH_HDW_STATE_ONLYSD_NEW_WINDOWSD_REMOVE_WINDOWSD_REMOVE_WINDOW_NO_FLUSHSD_CREATE_FLOAT_WINDOWSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_CONSOLE_INPUT_PREPSD_RESET_TIMEOUTSSD_CLASSIFY_TIMEOUT_ERRORSD_PROCESS_TIMEOUT_ERRORSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_VIBSD_MONITOR_STRING_INTO_TIBSD_MONITOR_STRING_INTO_WINDOWSD_MONITOR_ECHO_INTO_VIBSD_MONITOR_ECHO_INTO_TIBSD_OUTPUT_STRINGSD_OUTPUT_STRING_TO_BUFSD_REDRAWSD_TERMINATESD_EXECUTE_LIST_OF_CALLSSD_ENTER_HOT_KEYSD_EXIT_HOT_KEYSD_LOG_CONSOLE_EVENTSD_CLOSE_CONSOLE_LOG_FILESD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_GETCHAR_ONLYSD_FIND_CONSOLE_CHANNEL_INFOSD_MEM_ALLOCATESD_RETURN_INPUTSD_RESET_FLUSH_TIMERSD_ADJUST_WINDOW_MOD_ZONESSD_DISCARD_INPUT_CACHESHOT_KEY_ASSIGNMENTS_TABLEKEY_TRANSLATION_TABLEHOT_ESCAPE_KEYRETURN_INPUT_STRINGRETURN_INPUT_SIZEOBTAIN_INPUT_SIZESD_PENDING_FUNKEY_CHARTIBTIBOFSATTRBTIB_UPD_COUNTTIB_LMARTIB_RMARTIB_WNDDSCTIB_WNDFLGAWDSCAWBUFAWPOSAWOFSAWATRAWCPLAWLPPWINDOW_SCROLL_COUNTRDL_REBUILD_COUNTFLOAT_TOP_WINDOWCON_FLAGSPID_FLAGSCON_LAST_DELIMCON_HOT_KEYSD_PERIODIC_CALLS_LISTSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTSD_PRE_?READ_CALLS_LISTICTRLICTRL2CTRLCONLOG_OPEN_FLAGVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_DELIMITER_TABLEACTUAL_CON_DELIMITER_TABLEHOT_DELIMITER_TABLESD_CON_NUMAOS.VS_REVISIONAOS.VS_TYPEINPUT_FEEDBACK_STRINGINPUT_FEEDBACK_STRING_SIZECON_VMPID_VMVM_CHANFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRSD_CUR_PIDCON_ACTIVE_PIDSD_?IDGOTO_TARGET_TASKSSD_HOT_KEY_LEVELSD_REMOTE_VIEW_INDICATORSD_REMOTE_VIEW_INDICATOR_SIZESD_REMOTE_VIEW_INDICATOR_LINESD_REMOTE_VIEW_INDICATOR_COLUMNHg 9AVe| SD_REMOTE_VIEW_INDICATOR_HEIGHTSD_REMOTE_VIEW_INDICATOR_WIDTHSD_REMOTE_INPUT_INDICATORSD_REMOTE_INPUT_INDICATOR_SIZESD_REMOTE_INPUT_INDICATOR_LINESD_REMOTE_INPUT_INDICATOR_COLUMNSD_REMOTE_INPUT_INDICATOR_HEIGHTSD_REMOTE_INPUT_INDICATOR_WIDTHNULL_TBLSD_INPUT_HISTORY_SIZESD_CONFIG_FLAGSSD_MODEM_DISCONNECT_KEYEXTC_SD_INIT_CALLSEXTC_SD_POST_PROC_CALLSEXTC_SD_PRE_FLUSH_CALLSSD.SYSCALL     **1D ^u#7G W .i 0~   "   SD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_INPUT_STRINGFLDPKTFLDSCRNPKTSET_FLD_DELIM_TBLSD_REQUEST_INPUT_THROUGH_SPYSD_DIVERT_INPUT_THROUGH_SPYSD_INPUT_IS_AVAILABLE_FROM_SPYSD_SPY_REMOTE_INPUTSD_ABORT_?READ_IN_PROGRESSSD_SET_ACCEPT_UPPERCASESD_SET_ACCEPT_LOWERCASESD_SET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_POSSD_GET_PREV_FROM_INPUT_HISTORYSD_GET_NEXT_FROM_INPUT_HISTORYSDSetAcceptUppercaseSDSetAcceptLowercaseSD_?ESBB_DISABLESD_INPUT_TASK_IDINPUT_ERROR_WINDOWINPUT_CASE_CONVERSIONSD_INPUT_SEMAPHORESD_INPUT_ABORT_ADDRSD_?READ_ABORT_SEMSD_NONTRAIL_DELIM_TBLSD_HOT_INPUT_TYPESD.SD_INPUT_FIELDUD.SD_INPUT_FIELDUI.SD_INPUT_FIELDr@INPUTo?   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}}xy z                              !  #  %  ' ' * -  *  +  ,  -!  ." #)3I9?9M)3Y9?I9M)3Y9?9MyY9g)) )Y)8)i W)IfiI9giYI QۂȉIY9Y9N9$9%9*9=9>!) 9& sYOY9"9!)9II9Y,y+)I9)i) )ۉYi*کi)Y#%I* 3O)?I9yY))y)))@yi9Y9)Y)0yy   Xyi9"9! ))x x))x)xi)9!I9$9%) i yX8iI9$)!i̹yII)! yyi9! O y)))I9) 8!yɀY)ȂY,Y+)) )ۉYi*کiЉ)) )!iy*)y))IIX9Yȹ9 )+i))I9) E9i,y)yi,999991xy+x -y)I)y yY" Y)x)yi9&Y+iY1)x)iƁY1)*) 8_8i )@xi -y)I) yX+i Oщyyy   & EWKWQW]{cV{     S               +9 B z      C  S     ' . 8F>@G T [ a eWq u }v  R   `R 0HRW     $+x**IyYyYyyyiYCɀ9#)щ iIXYYYiXYYȢ)ȫYXI )XY)xYyYXYȃY)ȫYЉxY)ȫYY)!XXѹY)I)I)YYi)?Y칤9 +K)i9 ) )IYYYiXȫY)!IɹY)X ѩY9))!ɹy* )?YoIYY׳ɀ9#) 8+Y" Y)8i9&Y8 D9YyyiI)9Y9)) )XXi,Y4R))))8I  9*9)Y9)`)Y)x)Qx)> n)x)?8*))Y>Y)+XY)@Yi**!!) x)( 9)@Y8 ,) ) I)I9=Yף*) )ۣ+ܣٻ#yyi )Q ߣأ*۫ڂ,ޣy#yyi݁ Y9=) )ˉYʩ*i* )S)Yy    C, 0=4<@<Q=U:_=c<i<} =: =<   Cv    # 1 4 B?H<O _:n tK{d~e(bcc)gfT! T\[ =     S-5 vKR" %J/_2 5_:_?_B E_H K_N Q_Zfd_g j_m_r u_x }  __S  Q#   %™x))YYY) )?)IY1Y( )}8)x)IY9)9)**iӸY) i9>xY18)x9N) R )i)?xx |X) 6y)?xJ) ) Jy))@Y8.8\Y.yi)?x)Y)əy9yX9))9y8i) yY9 y))9 )  yY9(8>x9(* 8y Yyi* xI9x8*)x9(I)¹ ~y9(9')щ ) )>)=8Y)'i )) I8)xyY9YyyiydyIyiЉ)0I) )) Y9YYi)ՉI))*)I_)()*щY9*y9)ѩ̹) yyYi9 y))9 ) ) i9 i)?)'Y~)#X XIɀXљI‰8y)yYYyy)i)>8,xY)ȫYY) iX )IY {  {  "K/3`= GRMwU ` c i o r uK`R"LL$RO#N#P#R%IT5v    G3@>Gl t z  X       X T (8  (A- 2/7)>:G L[G`fGC(B) <=9J=&XIXȫY+Y)>)=щIi)'y+) ,)=)>))@Yщx)08)'yidyIii y))9 )9 ) 9) 9 Y9)9)09x)))ȫYـ) )xɀ)YȫY Y8i)9)9)iiI )9)8)Iyi9X9y))Iy)yi9))9))X Y S)))9 )) 9)) x I8Y99 9 9 ,xXY)I)X)I9 9)ȫY9 )) )XXYi9 ,)y))?8)ـIx) )yi)?))YXiYi+YYȳȫYXI)I  YI)ـ)Ii)YXYi+xYY)ȫY)XI) I  YI)'8+)x)!+x)Mй889) w) Oщ)$)%)!8)xx)79N88Y)x)79N)"X)x)79N $Y))?щ xYIYy Y)xI)й<   " %T154v> BSH N U~(H@V@CAB@C@@@E@M@| ?< )(CAB9;)@ EE(CAB")+=/<4 O9R;Y ^ dXk o x   L LV 7 LL3*3T 1' $8))) 8o)8i +9)Yy)'yyi9I))I%Y8+) +YyyIyX+YY I8)Yx)Y8yyy)@Yi9Ly9*x)y98Yy9YX*i)Yyyi)ՉII9>YzLiY9>)L u γI)щ li)x¹8)Mй8 ~*))ڹ8)i)"i)79NyXڸiX!x ~ ¹)!)$Xѩ } +Y9)9N4 **y ~x+y9Y+)'Y9'y9 u@ +)y9xYy9**)'YY =i+Y011) Oй )"yy9 y)xi O ) 8Xi)!Y8y O)IyiyyiI)!Y O I)&y9yYyi O9i O)) yxy*`)i9)xyy))yY+x+IYȃYYYiЉI)8y8iX9i))$8)'x 8)?) )88Y))^ RJR'U-'6R=5@ CLFML6O R4Z a e j o s x {R5   4W  5W4v5    A A  /&25WHVT d7g o                  ` R   &v3W{ V  V XV(x))yI乡Yi8)) I8Yx8)i)) 8I)8)N88i)g W)IE9D9C!G*9B+9A,9@)@,)A+)B* G!)C)D Ey)yY)éYй8xYЉ艇yxxi)')!y+Y+xi)')!y+Y+x++)y) )ۉ)I) y)Ii)  ) I)IY9)yΉYYi)i)i))Ii  @ Yxo8oYy )9  ) yyyYyi  Y9xy)'̹yIIy9) 9)9+9)'9yy9 yi )YiI))d84y x y9") y 8Y )Y QY 9)9Y99y))Yճ֦8)ʙ) 8xx )9Y9y)8 Y99yi))8)YYi Y99y ]Y y)pΉ)7^T %(+/^4 7:=RDJKRTUZ'oWv {             W       V(WL  &_i mlkj  h i  $ ' 0 3{8 =ZEaV{_Jf_i_qSw } { {JS{{ J ) y x y9") ))8Ňy 8Y y)YNYYUyI )8 =YNi)Y19(9') IYS) I͉Y9Yyyi) ) ))Qx)> |9Ys p))I0))0)) )1)) +9))8,YY 9) 9))~YY普8 Iyiщ8)'8)8yyY YYȹ8yYxi)'YYyyyY9Yy )8 x8詓ੀyyY Y ȩ8YyIYyЉIx)8 虑8虂่xY Y yY Y YyyIYyЉI{ .o sr"q%p(, 47n:o=EJR W Z_ b i p s w{| {   {   `K {8 JTLf   $ 0 NJV]Y ] `ug,l o r u x {u    t              M-        t ! $ ' 4-: >MA-H M S V [ ` e i ott w z t   -*= + SD_MONITOR4!&=!;SCUxSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTSD_SHARED_DATA_PARTW?  8AU ny   '3A Tt       ( 6 B MW\afkpu #1LR`wSD_FLUSH_FOR_MONITORSD_FLUSH_FOR_MONITOR_HOLD_OUTPUTSD_REDRAWSD_LOG_CONSOLE_EVENTSD_CLOSE_CONSOLE_LOG_FILESD_DRAW_BOXSD_GETCHAR_ONLYSD_NEW_WINDOWSD_REMOVE_WINDOWSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_SET_TIMEOUTSD_MEM_ALLOCATESD_MEM_FREESD_COMPILE_RDLSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_TURBO_OFFSD_TURBO_RESETSD_CLONE_WINDOW_JSRSD_RESTORE_WINDOW_FROM_CLONE_JSRSD_ADJUST_WINDOW_MOD_ZONESSD_APPEND_TO_GETCHAR_CACHESD_APPEND_TO_SCROLLBACK_BUFFERTIBTIBATRTIBOFSATTRBCHARSETSCON_FLAGSTIB_UPD_COUNTTIB_WNDDSCTIB_WNDFLGTIB_VIEWSSD_CUR_PIDPID_FLAGSCON_ACTIVE_PIDCON_TERMCAPSCON_MODELIDSD.SYSCALLAWDSCAWBUFAWOFSAWATRAWPOSAWSETCONLOG_OPEN_FLAGCONPKTCHARACTER_SET_PALETTEUSER_TIMEOUTACTUAL_CON_CHARACTERISTICSACTUAL_CON_TIMEOUTVIRTUAL_CON_CHARACTERISTICSFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_ENDPRIMARY_WINDOWPRIMARY_WINDOW_SCROLL_COUNTCURRDLCURRDL_PRIMWNDMAX_SCROLL_BEFORE_FLUSHSD_CONFIG_FLAGSSD_CONFIG_TURBO_LEVELEXTC_SD_INIT_CALLS|#t >5' 7N_mqy~  : Z J L  2    R      $SD_MONITOR_STRINGSD_MONITOR_STRING_INTO_VIBSD_MONITOR_STRING_INTO_TIBSD_MONITOR_STRING_INTO_WINDOWSD_MONITOR_ECHO_INTO_VIBSD_MONITOR_ECHO_INTO_TIBSD_OUTPUTSD_OUTPUT_STRINGSD_DIRECT_OUTPUTSD_OUTPUT_STRING_TO_BUFSD_CONSOLE_?WRITESD_FATAL_ERRORCTRLDEF_CTRLICTRLICTRL2OUTPKTNONPRT_TBLDISPLAYABLE_CHARS_TBLWINDOW_PENDFUNCWINDOW_PEND_MISCDSPTBLFUNTBLXFUNTBLXPFUNTBLGFUNTBLWINDOW_SCROLL_COUNTUD.SD_MONITORUI.SD_MONITORSD.SD_MONITORSC.SD_MONITOR@< $   P            >   $            &!  &" >#  R$ SCREEN DEMON: Copyright (C) 1988-1995, Threshold, Inc., Auburn, Alabama. All Rights Reserved.@OUTPUT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2I4%])YJ))Y;I< ix))Y;< @ )))98) Y;<  @  0) 1 2JL iJ98) )))йIY;I< i))I;Y< x))Y;< 98) ڙ +9x) )`)) y:iDBy >)7)8i9 & (ɀ(6ɀ&5YYX8=ɀ2ɀ4YRBD)x)x  )щD)0X2y=K6YX58y2XY8ȃYy6YYəyZ2FBIHyX22DYDB鉃xyFYY     (, / 4)7 :"= @ C F$I L&O R%U X [ ^ a f(i l qy|             `              2 !3$ '6* -40 376 95< ? B E H M P S\-c,f.knx }                                    " ) , / 2 6 : ? B F I L"O U [&]YY9F49Yyy2XY8ȃYY=K86IY>) 򩁩:Kx<Ҋ8) =Kx58yJH x20,-51 0B)YBDD ~829Y2YyI4)x:K))i9I9YH X<щ8)x)x x 8) yI)$9)Y)^9@Y9)BD~艼BD8 ~lkjihgfed R)))) I OyYK K?ЉD F) ? )Y 7)Y 0)湎 YIYx   Iyy: ~y2XY8ȃYYЉy8ȫY2Љ4) }4) }4) }ޣ4) }֣4) }Σ4) }ƣ4) }4) }4) }4) }4@)i4 }4ɀi4 }n5y>) }t>)  }h)QY,-4),5J.,-56Ry8x) )8 8)x.0YYx9#)) 8 )1Y)x0^X2҉9)9) )1)Y0^X2ѹ       # * 2 7 ? D L Q T Y \ ` i q t x   "   >    >                               % 6 9 > D G O T W [ ` e"h mBp ~/   /B  B  C'6YY)I̳ډ)8.)8 5.2 |52O |s:K2X~SYy)Iyi6~2XYI02yYyyYyy29I49Yiyy>) |$ | y~ 6YYyyY2yy92Y9IyYy2x785I27ώ)x9)8x.-85.I2-9z)4)I4)x)Yx) Y)IY)I>) {q) FE,}PY,-Yѹ2yyY8I5I2 8I2 {:4)8y}6YYyy29I)Y)) 9Y9YYȉ2~쇉8yyYyyȉy9IY9YIȉ>) ©x)YBDy|yx56y 9)YBDy8|,I-y )|Y z )) z4) z4) zx82Y.-iI2 zb|MY685Y,-8,|F zG|256,-y|, z-|Y,-8,| z>CFDE B% * -!5 8 ; @ C F M R U a h k p s v           B   !    / B   !       " %+G5B>*G O^ a g m q u z                    # *08 @ H K O T Y a f j m r |        () ©xY )9)9Y)YBD92 y yףY)YBD ) yƣ鸁Y)YBD ) yxY)YBD ) y y )9I)BD yXYJ Y)F Y)a8?8 Y)28YY)©ByYDYDBY y ) )9Y x )9yI̹@Iy e y)Iyyy)yyYYI)9YYɹЉiyy yyJyyyy%yyyYYy Y)Y)89)Y xC )9Y)o9Y)#9Y)yy )xY))89)I xGFb 9@) 9YYމyIy0I)9Y0 Y)Y)9)I D xyX,X5iYΉiyIY) xyIĹ)I y) ♼X) {? wyމhyIy0Y ) o~I)YIyIiIIyIiiyyJ)uS )})w\  }h )09YBD }O Y)09YB    $ ( - 8 @ D G N Y a e h o z                    * @ Z^2b fjn vz' 0 /'  9'?"B Gw 1-2  9;       ) ʍDYɀ I)YxY84)@Y9i4 v } Y)YBDx094 vש |Y)YBDx095 v |Y)YBDY096 v |Y)YBD)Y4i4 vi |wY)YBDى8y5.2 v- |;Y)YBDY))8y )9yI9YY ; uY)x) )9I | u)8)x))) 8),剁) 8)x )99Y)) 8ى8)x;8 xyIyyY BD {yYBDY)8) )Y Y uOY)x) 9)I vBD {@yYBDY)8))Y N)鸁Y u)89j)I  ) * )) ))y9 tڣ)89)I * )) t zФ )YBD平 9 8)YBD平 )i9 D8)YBD )i9 Dx)YBD 9 )Y  :      + 8 = A M ] b f r             "          /! 18/> [0h qx/~"       /  /      /  %/2 : BR/_ gw {             * BD )ق@9))ق@9)vy6YY)yyyy2 Y992 ))I)Ii9YY )x,-Y8y92Y5I6X5)xyyyi9yy ))I)Ii9Y8IY s)89)IYYu)59)O69YYX8=7xu4)I4Yـ)294 G= ) )9)) x s>FAYE 9 yABD x)YBD平 9 8)YBD)i 9 D)YBD 9 )7Xy8y 9 )  xXE) iIE) y )Y99)95Y9)989))1Y9Yy 8Y)97 :5Yt\7Y) rQy)999)Y9)9)9Y9) YX8 Iy й8 xB)YBD平 9 x)YBD )i9 D)YBD平 9 )YBD )i9 wƣ8x)8x56YYX8=ys}ys4) ) Y   & 2 7 = @ C U \ _ f i m q t    /               "    * - 6 : @ K O W ^ e i l q v  "  +        !."1 <G L P V a e j t {               +z qy 8)YBD平 9 8)YBD )i9 D)YBD平 9 x)YBD )i9 D)YBD平 9 )YBD )i9 w)4) 8 45969)I9)I9)y9)y6)5YYX8=)yryx-y,r ) Y p4))5)6YYX8= pi v| )YBD平 9 )YBD )i9 D8)YBD平 9 )YBD )i98q7y)yqy6y5yqY o)9 &)I)qY8ȫYyzX8Y)80Yio oYFX8) ) ) )8IF9z)YY)I}).F.0Y o?y0Y8iYIyyy艣9IIyyЉ)t 9)I.),-58ȳYpުX,X-iy8yYy6X5YX8Y)yyy艣9IIyyЉ     " ' 1 8 < B M Q V ` g k q |                         % 0 4 9 C J N T _ c i w    /DE   B/   B/ /  C CFDE"( - 2 5 > B O \/iDlEqw z ~         B/ ,:x6X5YyX8Y)nYyyy9IY9yYy n)9)I)p_Y8ȫYy"ЉX8Y)0Y nNq. nEy8I0ꉃxYyyy艣9IIyy08Y)s 9)I1)oy58ȳYX,X-iy8yIy6X5YX8Y)yyy艣9IIyyЉx6X5YyX8Y)wYyyy9IY9yYy m Dx)YBD幣ـ )YBDɀ i4Y)x*))Q))y8yY*)IyY9 ) ) m9 sL D8)YBD幣ـ x)YBDɀ i4Y)*)YYY9 ) ) l4) l4) lڣ4) ʤ xB)YBD平 9 x)YBD )i9 D)YBD平 9 )YBD )i9 r )8y9)ɩxYY*))Q))y8y 9*8)))x))XYY9n)yyn ) ) Y lY))@89)I- kFO)   B/! -/:D=EBK P W ZB_/f p x |    /DE         B/    B / & - 1 7 @ D J N U a g s {                      " & , 7 ; A L Q a m r w   //-9J)I)m86ȫY2X8Y)iXYyyyy艣9IIyyY9 k)9)I)mh86ȫY2X8Y)-YYYyy艣9IIyyY9 kKFKFJFHF[FIF\JKHI4) k/4) k'yYy7 ) ) lyYY)Ix8 *,-8i.iI0y)@8ع) Y)x)8)Oyىx);IщIѹ88щxyISYYIyI)I  )iyIY؉8yX8)x)щ/yى)8y8YIi2Xـ4ـ5ـ&6ـ( ))Y8yY)y y y)))  )8))xi Yy 8Y$  )9>I88x2Հ$I$) yY) )) )Iι xI))@8@9) D E  ! $ 'B,/6 < D O/\D_Ed  l o t w zB/               B %"( -3 @ E J@R W bo"  "   "          @A?@ @#),2:=BGNQVdsy|'<=<.pJ̮Âx}Y))}y)ɝy)Y)x)) )))81 ")'0<@8F/%0& Fatal Screen Demon error at PC = 00000000000 19() ) ynIy09x L). $12 3 4  7 _j*r mu'/}@e   _/7PV ] Oc?~/E]uf  ?G : " C h|m s    + 26s 0~   . ӝŠ͜Å訠Ԡ젬ɮ㠠҇.3060.171J-LU9-5Π򠠠ƠĠϬ㍐ɠΠҠ卐̳Ş宮 "$&(*,.02468<>@JLNPRTVXZ\^`df"$*,:>FHJLNPZ\5>6 x7 x8 xG=?b[n7:H)/4eKa'Lxvd;| &Er+@A~Jyĵ"p.m% ! ݪ8Y6$Бl c9u0q-SȩF`ឧ̝jCUBQN 3(,}#XVD51w\ziotR ^g]*ٶ_{PWIfOԅk9>29===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: SD_WINDOWS"C5!/.SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART#   2AXo  -CTRLICTRLICTRL2TIBTIBATRATTRBTIBOFSCHARSETSTIB_UPD_COUNTCHARACTER_SET_PALETTESD_DEFAULT_PRIMARY_CHAR_SETCON_TERMCAPSCON_FLAGSPID_VMPID_FLAGSCOMPOSITE_IMAGECOMPOSITE_UPD_COUNTSD_CONFIG_FLAGSSD_PRE_FLUSH_CALLS_LISTSD_GET_SCREEN_IMAGE_JSRSD_GET_IMAGE_BELOW_FLOAT_JSRSD_DISPLAY_INTO_STRING_FOR_TIBSD_OUTPUT_STRINGSD_DRAW_BOXSD_MEM_ALLOCATESD_MEM_FREESD_MEM_FREE_BPSD_CONSOLE_TO_VIRTUAL_STATESD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_EXECUTE_LIST_OF_CALLSG \{ik~$  / A X j 1|  95 /E3[Bpl]hE/:0] D%d r s   Ih   G ;     ) 6 < J X s x !} ) % # ' + , -          SD_NEW_WINDOWSD_NEW_WINDOW_NO_INITSD_CREATE_WINDOWSD_CREATE_WINDOW_NO_INITSD_CREATE_WINDOW_NO_BOXSD_CREATE_FLOAT_WINDOWSD_ACTIVE_WINDOWSD_TOP_WINDOWSD_FLOAT_WINDOWSD_GET_WINDOW_DESCRIPTORSD_PUT_WINDOW_DESCRIPTORSD_GET_WINDOW_VIEWSD_GET_NEXT_WINDOW_VIEWSD_PUT_WINDOW_VIEWSD_NEW_WINDOW_VIEWSD_REMOVE_WINDOWPOPWINDOWSD_REMOVE_WINDOW_NO_FLUSHSD_SUSPEND_WINDOWSD_CLONE_WINDOWSD_RESTORE_WINDOW_FROM_CLONESD_CLONE_WINDOW_JSRSD_RESTORE_WINDOW_FROM_CLONE_JSRSD_SET_WINDOW_SIZESD_SET_WINDOW_POSITIONSD_SCROLL_WINDOW_RIGHTSD_SCROLL_WINDOW_LEFTSD_SCROLL_WINDOW_UPSD_SCROLL_WINDOW_DOWNSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_UPSD_MOVE_WINDOW_DOWNSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_FLUSH_BUT_HOLD_OUTPUTSD_FLUSH_HDW_STATE_ONLYSD_FLUSH_FOR_MONITORSD_FLUSH_FOR_MONITOR_HOLD_OUTPUTSD_COMPILE_RDLSD_COMPILE_NONFLOAT_TEMP_RDLSD_CLEAR_TIBSD_SYNC_AW_FIELDSSDFlushSDSuspendWindowSDCompileRDLSD_ADJUST_WINDOW_MOD_ZONESSD_ADJUST_AW_MOD_ZONESSD_RESET_MOD_ZONESFLOAT_TOP_WINDOWTOP_WINDOWBOTTOM_WINDOWCURRDLCURRDL_PRIMWNDPRIMARY_WINDOWPRIMARY_WINDOW_SCROLL_COUNTAWDSCAWBUFAWPOSAWATRAWOFSAWSETAWLPPAWCPLAWCPSAW_LIST_HEADAW_LIST_TAILRDL_REBUILD_COUNTFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_END88  H U  bFLUSH_OUTPUT_CNTSD.SD_WINDOWSUD.SD_WINDOWSSC.SD_WINDOWS*"" + " # $ % & ' ( *+,5 , - . / 0 1P 2 456. 0  )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)7 w)9) xyy)0YyyY9Y)/yyi Y9091)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) ɀ#90Y9192'93!)494)595)696i) x})) I)xI)Iy 3))x  y y y  )щx9"9y))Yyyi)YY ))8)x)Y艇y  )nyyi Y) i )Ii ) i9 Y   xIy) xyyYyy) IYyЉxi  )y))x  I  y )nyyi ) i  )Ii ) i9 Y y y  xIy) xyyYyy) IYyЉx) ) ))x  8 gy)Y#)iyyry) ! 0# 1%) 2')+),i-Љɀ#)8y )yـ#< " "&   '''!%1:" "   ' 4&8 G N T Y a d i n r v    !))))  yQ)ʎw)))  y()2))щx x) %)y))Y9)I9й `)x  x 8) ~) yy0Љy'')) ) 98)8 yy)9999)9)9Y9 Y Iy й8))8) ))y9)x ))y9) ) )))8) )8Y)y9) )8Y))P)@yy9) ) )))) )i))) )))I9))) )i))) )))I9) ) )))) )i))) ))) I9 ))) )i))) ))) I9 ) ) )yy ɇyyyщyy )yy y )yyYщx yyyyyy )) ) y  yix8Y) )Y  '  )&2'8 F R&['a q&{'    &##'  #$&2 G L R Z'f&v    '& &    '/&2 Y&\ d j r'w z                    !) ) yy88Yyy88Yyy  xixy) ) yy)0YyyY9Y)/yyY)Y9998)I9Y99x)I99Y9)Y)@)@I99Y9)Y99I9)I99Y9Y))) )`)8)))) )@)) ) I9Y9/)I) ) 9))͉Yy yY艤 yyy)x9r)Yy yY艤 yyyyI)9YY)9I)9YY)9)ꩴ y) 9x9))ʩ Yѹ8y Y )9Y )8 Y )Y)))NFS10OFS00 FE))  iy҉8}y) )"I)))8  iy҉8|Գy) i)"I) ) ))) ! 0#!) 1%) )8 2')+),     ( 0 3 E N ^$e vy     (&&    ! 19< E LR Y ^ b hr y ~                      '$'9 J M U&`'j { ~ &  '&         "X }i-) ) )))  8)yy йI iѩ)))))8  iy8  iy҉8y ) I)Љ) ))  ѹ) i) Ii) ) )))  ѹ8) Iy) YyY y) IiyY) ) )))Ȯ8y))Yйx)ȮxyǤ )x))Y xY))Y9 9Y)/yyi йYy  ) 9 ) 9 )9)9)9)9) ))8)@ x", )8)8xIYyI8)Yi99)x)xxI8YyI8)Yi99 ) )xI8YyI8)Yi9)9) )xIYy)P)@)yIYyЉi9)9)XYX)XYX y9)XYX)XYX y9)i)I9) )i) I9)Y9`)/)9)9 )/ 8I   щx ~Yi x) )  щy)9)) I sy yYyyyi)I9I9yYyyi)yI9R999I99 X)   ) )8)ꙃ8   ')&<'H&K k y'&  '&"  '"    "" ( 2";&H K N c j  $     '$  5 J Q V # մ  y yYi9 y   yyYYyYyyyIi XIIIIy!YIi)Y)@x 8  )x )y)y9) y)y9xy 8)99 & 2";#B E H M S h u |  $ SD_DISPLAYCSD_SHARED_DATA_PART    "2BRbpu{CTRLICTRLICTRL2TIBTIBOFSATTRBCHARSETSTIB_UPD_COUNTTIB_WNDDSCTIB_WNDFLGTIB_LMARTIB_RMARTIB_VIEWSDISPLAYABLE_CHARS_TBLCHARACTER_SET_PALETTECON_FLAGSCON_TERMCAPSFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_ENDFLUSH_OUTPUT_CNTPRIMARY_WINDOWAWBUFCURRDLCURRDL_PRIMWNDCOMPOSITE_IMAGESD_FLUSHSD_OUTPUT_STRINGSD_MEM_ALLOCATESD_MEM_FREE_BPSD_RESET_MOD_ZONES gg- YYYS SD_DISPLAYWSLAPSD_DISPLAY_INTO_STRINGSD_DISPLAY_INTO_STRING_JSRSD_DISPLAY_INTO_STRING_FOR_TIBSD_REDRAWWREFRESHSDRedrawSD_FORCE_CURSOR_WRAP_AT_MARGINSD.SD_DISPLAY*";32 ++++-||-+|--||-:++++-||-+|--/cTRCG ;3u ++++-||-+|--||-:++++-||-+|--/cTRCG  b)(93>@<BI9Dx)(>@@@<BI9DE  I9 Y91:999 )/I )09)19)29)39 E)1I)@Y99)295)396II)y)i9798)9йyDY)Y11Y:94 EIY92)x)xY)x) iY)x ~ )x  ))8  ix 8II8 M iY9-) )) )Y))i < BYx z <)9Y)F9Y)X9Y V Q<)9Y9i < BYx I <)9Y)F9Y)B9Y  y)09Y)yY09Y)1))9YI) Iy))Q))yyY9 8Iyi)-) iI-YIi BiY8yi< JU_ Yy KyYyy0Y9yYyi)YyIЉEG)))9)9Y)ȃYYiY)yY)y9)2)8)8y < BYx <9)yyiى8i)88 9iIYYY9Dy)09Y)99Љ)1998)38) )`9)D9)09yiY9& +) )8 8)&)8 I9& + I+y)9()&9'y) )I))8yi)IYQ 8) )i)I)x)y)iIyIIIX9zG))9Yi90- < BY i <)9Y)F9Y)CY9Yii<3) y)i < BYx <)9Y)F9Y)^9Y<)ʩy)i < BYx <)9Y)F9Y)]9Y<)ʙy)x) )xI))8y 8) )i)I)x)y)iIyIIIX9yh)9 < BY1i <)9Y)F9Y)JY9Yi<) yy09YyY09Yyi > <@B&%Y P Q R S T U V Y))  # SD_GET_IMAGEXf  "&SD_COMPILE_RDLSD_COMPILE_NONFLOAT_TEMP_RDLSD_MEM_ALLOCATESD_MEM_FREESD_ACQUIRE_RESOURCESD_RELEASE_RESOURCEAWBUFAWOFSAWATRAWSETAWCPLPRIMARY_WINDOWCOMPOSITE_IMAGECOMPOSITE_UPD_COUNTCURRDLCON_VMICTRLICTRL2CTRLSD_GET_IMAGE_DEFAULTSb PN\No: SD_GET_IMAGESD_GET_SCREEN_IMAGESD_GET_SCREEN_IMAGE_JSRSD_GET_IMAGE_BELOW_FLOATSD_GET_IMAGE_BELOW_FLOAT_JSRSD_GET_POS])))9 )9)9  )9 ) )9) )9))9 )9)9Y9 )I9 )9 )9)9 ) )9 ) )9) )9)I9 )9 )9)9) )))7)@8)I9 8Y)x)dY))xY yY)0yi 0Y9Y)=yyiY9 )090)191 2 2)IiY) )) 8) M))) 8iy)XI Iyyyy00yi)  蹊)0))XIi 90I9 i xi  ɉ8) y)yyyyxi) Y 0yyyxi) `)yyyyi )0Y))Љ9Y9 普))8ɀ 98YȫYYYY 9 9T  %. 1 8 F K z  SD_READ_CHAR4!&!;CU.SD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTSD_SHARED_DATA_PART:7  8M^v  1DWs   $7H Ydtx} '8S j..RIPSD_CALL_HOT_KEY_ROUTINESD_REDRAWSD_FLUSH_IF_NEEDED_JSRSD_REMOVE_WINDOW_NO_FLUSHSD_CONSOLE_INPUT_PREPSD_RESET_TIMEOUTSSD_PROCESS_TIMEOUT_ERRORSD_EXECUTE_LIST_OF_CALLSSD_ENTER_HOT_KEYSD_EXIT_HOT_KEYSD_OUTPUT_STRINGSD_MONITOR_STRINGSD_LOG_CONSOLE_EVENTSD_CLOSE_CONSOLE_LOG_FILESD_FATAL_ERRORSD_TERMINATESD_REQUEST_INPUT_THROUGH_SPYSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_FIND_CONSOLE_CHANNEL_INFOSD_MEM_ALLOCATESD_MEM_FREEHOT_KEY_ASSIGNMENTS_TABLEHOT_ESCAPE_KEYSD_CONFIG_FLAGSCON_FLAGSPID_FLAGSCON_LAST_DELIMSD_PERIODIC_CALLS_LISTSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTRETURN_INPUT_STRINGRETURN_INPUT_SIZEOBTAIN_INPUT_SIZECON_HOT_KEYCONLOG_OPEN_FLAGCTRLICTRLICTRL2CON_VMPID_VMSD_INPUT_SEMAPHORESD_INPUT_TASK_IDSD_INPUT_ABORT_ADDRSD_?READ_ABORT_SEMSD_CUR_PIDCON_ACTIVE_PIDINPUT_ERROR_WINDOWSD_?IDGOTO_TARGET_TASKSSD_HOT_KEY_LEVELSD_HOT_INPUT_TYPEVIRTUAL_CON_CHARACTERISTICSSD_MODEM_DISCONNECT_KEYSD.SYSCALL  SB ' 2$<Qh   SD_READ_CHARREADCHARSD_GETCHARSD_READ_CHAR_ONLYSD_GETCHAR_ONLYSD_EXTENDED_READ_CHARSD_XGETCHARSDXGetCharSD_SPY_REMOTE_GETCHARSD_DISCARD_INPUT_CACHESSD_APPEND_TO_GETCHAR_CACHESD_DISCARD_TYPE_AHEADSDDiscardTypeAheadREAD_CHAR_CONSOLE_CHANUD.SD_READ_CHARUI.SD_READ_CHARSD.SD_READ_CHAR    @INPUT 0( qrstuvwxabcdefgh12345678!"#$%&'(yz{|}~pijklmn`9:;<=>0)*+,-. \]^_ L)5Y9I9 9 9 )5Y9 9 I9 9)5Y9 9 9I9 IY)x 8 x)5I9 Y9 9 98)5Y9 9 9 9I9Y9 Y)@8YI hۂ щ)5I9 Y9 9 x)5I9 Y9 9 8)5Y9 9 9 I99 Y9Y)@8I hۂ)  8 )I98 )9e99)9<)X8i щ yyyi8Y)9<)9e9 щy9i) щx))@x)y)96Y9=9>?GIK9f9g979;I98C)e) )Yi9e)d 9iY9x)hxY 999 <Qx8x)Y)) )I99 9 *)) 9Ɖx)9<)968i y999iY)88Y) xI9 gY)8) щ8 xiI)й n)) xy9))Љ)8)IIY9)y))IY)@UY щ ~S ~oiY))) 889)))8 ) щx x yɂщ)x)8 y8Y99I))Y yiI9 y  щ))Y9I)) 8)I wI9 yYyyix) )Yl$s,zA$,A"N2Y2k=p<1?1;;;9:'#0"%%,19>/DMQ,T-Y.\>c>g l>ru$|,+,1%1/!!+,3+7,=+ LY)8) xY1)8A)69695)I9Y9= eE) 88Y) )x)Y ) 9) Y)) ) I)Y))x) 5)ٮx)h S 5)y  9 #yyi݁ i) )ˉYʩ)ei9e')j)YY 5©x))YYYY)Y1) )I))e9e щ)=9Y9 ~| 9)) 8)I)ӸYY)Y) i)e9e}x)yI) } щ8y)=)yyy9  9yiՁ)x>Y))) ~Z)ق zY)xY12x8)i)9 ~i)Y1) )IYS)hx) 9Y ~#y) x) ) yYщ8y 8)Y8yyY999y9 yi y))1 241 ' CF;K;NS;Z1b'hk2z1&1 51%33<3332765A5A61 4# &&/22V5^6a1i l&|1@1'141  5 4&&')8.A3<BNS1Y)\_(be*hk1sy},! 2  SD_HOT_KEYS"C!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART@ (8GOe~: X x"*FX gr       /DZp  '3B R\ p?ZBOTcurrent_opcodeSD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLOAT_WINDOWSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_CALL_ICOBOL_SUBPROGRAMSD_OUTPUT_STRINGSD_GETCHAR_ONLYSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_TIBSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_SET_TIMEOUTSD_EXECUTE_LIST_OF_CALLSSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_MATCHSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_MEM_ALLOCATESD_MEM_FREESD_CLOSE_CONSOLE_LOG_FILEHOT_KEY_DEFS_TABLESD_HOT_LINKS_TABLEUSER_TIMEOUTACCEPT_TIMEOUTCON_FLAGSPID_FLAGSCON_PROGCON_HOT_FROMCON_LISN_UTIDCON_VMSD_CUR_PIDICTRLCTRLATTRBAWATRSD_WORK_DIR_PATHSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEACTUAL_CON_DELIMITER_TABLEVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_TIMEOUTNONFNB_TBLINPUT_CASE_CONVERSIONCON_USERNAMESD_CLI_PATHNAMEFLOAT_TOP_WINDOWSD_CONNAMEEXTC_SD_HOT_KEY_LISTSD.SYSCALL\ 3 =Gxb}Yex 4C1ROan }  SD_CALL_HOT_KEY_ROUTINESD_PROC_PRSD_CLI_CMDSD_GET_HOT_CALLED_FROM_NAMESD_CONSOLE_TO_HOT_KEY_STATESD_WAIT_FOR_HOT_KEYSD_ENTER_HOT_KEYSD_EXIT_HOT_KEYSD_ABORT_HOT_KEY_HOLDSSDProcPrSDCLICmdSDGetHotCalledFromNameNONFN_TBLNULL_TBLHOT_ON_CON_CHARACTERISTICSHOT_OFF_CON_CHARACTERISTICSCOBOL32_ON_CON_CHARACTERISTICSCOBOL32_OFF_CON_CHARACTERISTICSSD_HOT_KEY_UTIDSD_HOT_KEY_LEVELSD.SD_HOT_KEYSUD.SD_HOT_KEYSSC.SD_HOT_KEYS?4H4D 4 5 C S C D`Rb R Saq a b@qip     Press any key to continue...    ) Y)Y)yE)iI IZ xIi)9)9 ) x8 @>4>>$1>5=FT bIn!r u x { "! I  " I"!   I  IHyy)%Yy9#9"99 9!YI  9$Yy艇yxy)")!) )  )$Iy)YIISY)) )!Y\YYx )!\8 $) yi) Y)8 8)aI99D)I݉).Y)PY)R9)yyY9i .PR)aY9£)9 Iiy).9Y)P9Y)R9YY999D)IЉ8IY999D)IЉ8Љ9D)I):9Yi9Iiy).9Y)P9Y)R9YY99D9D)IЉЉY99D9D)I8   "Y99 ))€Y9) y YYYi9' I9Y)IiY)  I9) 9) 99D "))8Y9:Y)Yـ|  ߍY9)I9c)) YY ֓x ") 9Y9Ɖ )9YyY)) ⩣) @NULL)) ) IyYy" &C+ ,%A+C/+2,5A:?B H TCYA^,c+hmr v'~!   I "D#E )I9IAF8jIzI4G4; 4 7F F F ( 2*I/32 @ 27.DIcIiloru.~< -B0 SDCALCULATOR )UD.SHORT_STATIC ! UD.STATIC  "SC.CODE # SD.CONSTANTS% PROG_ID_HEAD !PROG_ID  5PROG_CT  %?CBDPT '?CBANSI    -  -. SDCALCULATOR  SDCALCULATOR.DS5+ SDCALCULATOR  -32  P Calculator Help| F ,000000000000000000  <5+ NN 00 RE+-x/=* 1240+0000000000000000# z000000000000000{000000000000000{000000000000000{   000000000000000{00  0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    16/% SDCALCULATOR_TITLE_ONE SDCALCULATOR_TITLE_TWO SD_ALT_EXIT_KEY DESCE DTABE DDELE DCR E D E DClrE DMemE  D ^ E! D x E" D< E# D+|-E$ D >E% DFrME&  D v E' D / E(3) D1ED2ED3ED4ED5ED6ED7ED8ED9ED0 E) @D- ED= ED+ ED.ED E* TM Press DSPACEE for Help+ hDSPACEE, pClear FunctionsEntering Data- Memory FunctionsDshiftE.  Moving the Calculator/  Math Functions0  Leaving the Calculator1 %Exit2  %Tape Clear3  %Delete Digit4  %Return Result5  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 6 is somewhat different from/ a desk-type calculator. See the additional help for the math'  functions (+ - x / =) for details. For additional information about a particular0  key, press that key now. Otherwise, press 7  to return to the Calculator...8wm 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.9=3 P Pressing this key deletes the last entered digit or decimal point from the display.:u 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...;% +Use the numeric keys to enter the digits of<( anumbers to be used in calculations. Excess digits=) will be ignored. If the period (.) key is pressed,>B8  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...@*    There are ten separate memories, numbered 0 through 9.A7-  Copies the number currently in the display into memory number 0. An B8.  ( will appear in the display whenever this memory contains a nonzero value.C4*  E Copies the number currently in memory number 0 into the display.D(  Same as unshifted versions, except after pressingEbX  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...F  " 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. GWM  You may move the calculator partially or even completely off the screen if desired.Press any key to return to Main Help screen...H   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 aIyo  s 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 Jj` 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...K  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:LB8  Normal exit. Restarts the interrupted input with the contents of the input field unchanged.M VReturn 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...N %COBEXCP O %COBDSCL P %COBTMP1 Q %COBTMP2 R %COBTMP3 S %COBCHAR T % COBEFLP U %COBWFPV %COBFLPW % ` COBESKY X  COBSINSPECT Y  COBINIT Z  COBSWITCH [  COBSTOP \  COBEXIT ] COBSCREEN_DISPLAY ^ SD_SET_SECONDARY_PROGRAM_NAME _  SD_TURBO_FULL `  SD_GET_VALUEa  SD_NEW_WINDOW b  SD_DRAW_BOX c SD_GET_WINDOW_VIEWd SD_PUT_WINDOW_VIEWe SD_NEW_WINDOW_VIEWf SD_REMOVE_WINDOWg  SD_TURBO_RESETh SD_MOVE_WINDOW_UP i SD_MOVE_WINDOW_DOWN j SD_MOVE_WINDOW_RIGHTk SD_MOVE_WINDOW_LEFT l SD_RETURN_INPUT m  SD_READ_CHARn ! o  !p  ! q  !r  !  s  ! t ) !  u  ! v 8 !  w  ! x G (!  y  ! z V {  &4 |  Z}  08 ~  \|<    :<   i4    D4   v8    N8   <    X<   4    b4   8    l8   <    v<   4    4   8    8   0<    <   DA   A  VC   C  hE   E  zG   G  A   A  C   C  ,E   E  9G   G  FA   A  SC   C  `E   E  m G  G  zA     A   .E   E  @G   G    %4 |4  :4  4 (  @4  F  NF  3  T3   [E 3  `3   gE  l4   {4   4   4   4   4   4   4    4     4     4   4 @3  F  (       E      X       " e      F   z       &        (       :       L   "      F       O      X                *     z        ,      9        ( J H    e         t  &   &   ~     ;         o        z    L          b           $  (     4'     f  "    t"  '    }'  (,     ,   5(1     1   B<6    60# O 6   6& r   r"                !  L "  #  $UK CGC@ C=C5C)C$C!pdhH"fFm|tTcCdre,X0C0C`CC@A0H% P CalculatorSCREEN DEMON@INPUT& d@OUTPUT@CONSOLEApA` M.9D'% zAAAA*/x-+=ER YN(& APA@A A0AA)cSDCALCULATOR.FCBS * 1+ uu@CONSOLE, 2 -2 2.12/E82[m€206,2F1 ut@OUTPUT 2 3 33 34135E83[m€366,3F7 ut@INPUT8 4 94 4:14;E84[m€4<6,4F= SDCALCULATOR.DE>  ?  DERR.REL@  HA  HB 9Y9 999)))) yY )YY)4y()'yYIi6nl8Ypl$P788)) y) 7 ' * - 0!58 ;"?D S V Y \ _ b#gj m p s v#z}     C )) $y) 8i7)4yi7yY)'yYIi77IIY9)9)9) )<9 Y9"9$)L9()()L)$)") )<))) 7I) 98)4yi8yY)'yYIi88I#I      - 0 658 F l os x5z      5 D YY9)90)924) )l98Y9:9<)|9@)@)|)<):)8)l)4)2)0$ 8#I) 9)6tlrhY:)sY&$"   1 48 =5? H K N Q T W#\_ g j$or u x { ~%    % E <x|y)'yYIi>>@?AY()'yYIiBCx|IYy)'yYIi>>@ ? A   %   &! / 2 5 8 ; > A D T W Z ] ` d'il z }      F  ()'yYIiB Cx|IY)yy)$yy) xyy) ֜yy) yy) (yy) Tyy) hyy) |yy) yy) ̋y      !(&+ . 5 8 ? B I L S V ] ` g j q t { ~     G y) ؋yy) ̜yy) yy) yy) yy) yy) 0 yy)D\yy)Vdyy)hlyy)zyy)Dyy)Lyy)Tyy)œ      " % , / 6 9 @ C J M T W ^ a h k r u |      HzF yy)Ԝ,yy)4yy)?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K  600L  700M 8000000000000000{N  @00O  B+0000000000000000 P  K0 Q  L01R  M00S  N+0000000000000000 T  W1 U yy)RyyƉ@iL)NP)9RYTV)V)T)R)N )Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy)   ( - 023 9 < C F M P W Z a d k n u x        V yy) *,yyƉ@iX)Z\)h9^Y`b)b)`)^)Z# |ƉpΉ9ȇ)9Ni9ȧiƉ@ij)ln)49pYrt)t)r)p|)l#J ) ƄER8)31Y   + 0 326 : = F Q X [ y ~ 2    ) W =)NY9v)v)ExR)ƉpΉi=yΉp$  )i)Ƅ؄E8R=8)x=)* !  ) / C F K N T ^ a f i x { ~    X  ~I )igExRxlI)lćiixƉΉpi8ƉpΉiExRx))Ƅؤ I ) ))Ĝnyi )  x I Ɖy@pi)ȜyyƉ@    " % 3 6 C F L R e h t { ~      Y ix)z|)9~Y)))~Ȟ)z#Ʀ x)yyƉ@i)@)9Y))))# )/x98lI)ćiix))y))ޜy))Ĝy)ix)+) l  !2$ + . N S V2Y b h q w z        Z\ BI)9"ći)0i)!9 )clI)i9"i)i . lI)ćii ))y))ޜy   , 4 : = K N V Y [  9\  X01]  Y0 ^  Z1 _  \+0000000000000000 ` f000000000000000{a  n+0000000000000000 b x000000000000000{c 000000000000000{d  0 e  00f  +0000000000000000 g  0 h  00i ))Ĝy|ƉpΉi9$)9i9$iƉ@i) )49Y)))|)#J xlI)އii8))ޜy)+i)HlI)9Jći)0i)I9H)clI)i9Jii ӄ-x     $ + . L Q T2W \ b e q t }      j L ń*8xX8Ì剉8xЄ Ì鉉/8x҄ +8Ì88̄Ƴ=,88ԄƪxÌ8Ìs8Ì8Ee8      # & + . 3 < ? D J M U X \ b k n r u z }     k း8ʄƒÌ8Ì8Rr88)ȄƤ }`I )Ì቉8Dd8)|ƉpΉ9L)9fi9LiƉ@i) )49Y)))|)#J        ! / 2 A D I O ] ` i t { ~   2 l  ÌxCcx Ɖpyi P) ؄$))̇y))܇y))y))y))ޜy))Ĝy)C?))ܔPdy)Pyy)dy     " . 1 4 ; > F I Q T \ _ g j r u {       m  &y) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i) )h9Yž)ž)))# |ƉpΉ      " % , / 6 9 @ C J M T W ^ a   2    n  9)9vi9iƉ@i) )49YԞ)Ԟ)Ҟ)|)#J  ))y))ޜ&y))Ĝ(y|ƉpΉi9)9钔i9i    1 6 92< F I Q T \ _ c f o {  o  rp  tq  lr  +s  -t  00u  "v  HƉ@i) )49Y)))|)#J  ÌxTtx ))P$y)Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy)   $ '2* 0 3 8 > L O U X _ b i l s v }        w  yy) Мyy) yy) yy) *,yyƉ@i))h9Y))))# |ƉpΉ9)9hi9iƉ@i))49Y)))|)#J  Ì       # & F K N2Q U X a l s v   2   x  |x +x)-|ƉpΉ9 )9掔i9 iƉ@i ))49Y)))|)#J 8)+|ƉpΉ90)9i90iƉ@i) ")49$Y&()()&)$|) #J     $ / 6 9 W \ _2b i l o x      y  D  Ì㉉8Mm8ƉpΉ@i Ì눹x)/x9x)+)TlII9VÇi)0i)U9T)bi9Ty iIIII0IƉp0Ή 0i Ì牉xF2     ' * 2 5 ? E R Y p5w         z  fx ƉΉp@)+i)dlII9f܇i)0i)e9d)blIIi9fi))Ĝ*y) i94)968)9:)0)x9>Y9@9B)B)@)>)x):Ğ)8)6)4 )yyh)yh)湄|ƉpΉi9    % 5 : F I V t }         {p )9ʔi9iƉ@iJ)LN)49PYRT)T)R)P|)L#J  Ì퉉 )/x98 )+)lII9Çi)0   / 4 72: @ C O U c j |   q}   ~  00  "  0   0   0   0   0   0   00  i)9)bi9y iIIII0IƉ\Ήp \)+i)lII9  ܇i)0i)9)blIIi9i))Ĝ0y) i9`)9bd)9f)0)9jY9l9n)n)l)j)О)fĞ)d)b)` )yyh)yh)湄|5 & 0 7 G L X [ h           ƉpΉi9)9di9iƉ@iv)`xz)49|Y~))~)||)x#J Á ƄÌY ÌY ÌY Ì Y    ; @ C2F J M Q T Y \ a+fk n s,x}  -  . aÌ)NYÌ񈹈)NYxÌ󈹈) NY8Ì) NY 8Hh8) x;I lI)8އii    +  % ( +,04 7 > A D-IM P W Z ].bf l r     xlI):ii) ) yÄilI)ܜއii)yiIå9)+)lII9 އi)0i) 9)blIIi9 ii|ƉpΉ9 )9 i9 iƉ@i))49      " ' - 0 : A5C H P W g l u x      Y)))|)#J  .I lI)<އii)) (y))>y) (yyi)+)0lII92އi)0i)190)blIIi92ilI)@އii)yiI)) B   2 " ( + 7 : B E K N Y ` p u }    5   FyilI)Dćii8)+)<lI)9>ći)0i)=9<)clI)i9>ii :I ))ܔPdyƉpΉi9@)9ھ,i9@iƄ?)Pyy)dyy)      0 6 J M W c j m r u |       7        tl   L   U   vj   T  i ~  f   8   5    ;   9  > M  < O  w   u   +0  EX.SCA  EX.ADD  EX.SUB  EX.MUL  EX.DIV Μxyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i)`)h9Y))))# |ƉpΉ9d)92       & ) 0 3 : = D G N Q X [ {  2      qi9diƉ@i))49Yž)ž))|)#J  ~I =ƉpΉi تI+YI-YiIxYiI/YiJ mƉpΉ؄$i+ ))9y)pi9Yi䔙Y)aFYiY  )  & + .21 < H K S s v { ~     -   ƉΉp9()pi9(Yi.0Y24   . N Y N> P@ RB TD n > n^ p` rb td ^ `)ii - ƉΉp9))i9y)pi9YiY9YiY     Y  6 7 27:6Q6n u   86     ¦     ✩ 䔩)ii x ))9yƉΉpi9)pi9Yi&(Y*,9Yi68Y:<  & 6 V ) VF XH ZJ \L v FY vf xh zj |l f h)ii / ƉΉp6, 3 A K z966    9 ))i9 y)pi9 YiY9 YiY  )     Y      ڦ        )iiƉΉp|yΉi94)94i94iƉ@i )B"$)49&Y(  76@:I6`6}         W5 *)*)()&|)"#J  }I ƉΉpքƎ){i   2 % ( - 0   C i  A k              }!"#$%&'()*},{./}JKLMNOPQR:;<=>?@JKLMNOPQRABCDEFGHISTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz}|{~  $  &00  (d Ž{Ȁ))ܔPdy)Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i,)B.0)h92Y46)6)4)2      % ( / 2 9 < C F M P W Z a d k n u x    c).# |ƉpΉ9p)9i9piƉ@i>)C@B)49DYFH)H)F)D|)@#J  ~I ƉΉ<i-)99Y))) H)$( % ) , //4B E Q T0Y\ _ i l o r u x$}     y ) 8Ìs8)xY I Ì቉8Dd8Ì8Cc8Ì8Tt88) /x98.Ì |88)2    %)*4 7 < B H K P V \ _ d j z      U  Ì㉉8Mm8Ì뉉8Ì牉8Ff8Ì퉉88) Ì Ì       # ( . 4 7 F I P S          5   7      ~         W  Y r8Ì8Ì 8Ì8Ì񉉉8Ì󉉃8Ì88)NL -*8xX8Ì剉8Ì鉉8/+8Ì8=,8)A?xÌ8        # & + . = C I O U X ] ` e k q t y       8Ee8Ì8Ì8Rr8))}ݎ}ۀ ~gI )Ɏǀ) yy) yy) yy) yyƉ@i)H)9Y))) )$ ) I )fd)        " ( I L S V ] ` g j   2   yy)(\yy):dyy)Llyy)Dyy)Lyy)Tyy),yy)4yy)* SD_ACTIVE_WINDOW?  SD_TOP_WINDOW @  SD_READ_CHARA SD_CREATE_WINDOWB SD_REMOVE_WINDOWC SD_SUSPEND_WINDOW D SD_ERROR_MESSAGEE SD_MOVE_WINDOW_LEFT F SD_MOVE_WINDOW_RIGHTG SD_MOVE_WINDOW_UP H SD_MOVE_WINDOW_DOWN I 4$  J  K  C: L M  PH N O  ] P Q  _R   S  aT U  cV W  eX Y  gZ   [$ i   \  ]$ z (   ^ _$  8   ` a  b   c  T  d & e  `  f , g  n  h 3 i  |  j : k    l @ m    n F o    p L q    r R s     t X u@3   ( v  w J ,  x  y$ Y \   z * {  p |-# 0BBBCC91B|}E; $ SCREEN DEMON Calendar |BMCBdB:BKB\ApA0C@Bm(@INPUT~# `@OUTPUT@CONSOLEBA@A0BY zA +! ABAABAPAN A cSDCALENDAR.FCBS 3 uu@CONSOLE 4 4 434E84[m€46,4F ut@OUTPUT  5 5 535E85[m€56,5F ut@INPUT 6 6 636E86[m€66,6F  zSDCALENDAR.DE  z  .COBACDT  19  0!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ,0000  .(  0(  219  .COBACTM  DERR.REL  301 9Y9 999)))) yHY )9()Mi9(yy))KTyYXI)XSii )@>Y @>  ##(+ .$257@ L O T W ] ` l o r u x {%     % Y)@>8(Y)9)9.)9Y9 9"9$9&)&)$)") )>)))D @>D4))Ɏǀ))񀉎)rr))>     %& B K NR U X [ ^%b         HY>)>8(Y)9()9*0,)9.Y90929496)6)4)2)0).>),)*)(D >D4 HY98)8)&    &  ! $ '&,7 S \ _c f i l&ps v'z} #  ݎ))DFBY)C ѶI FY8Y8) ޶I )9t)Mi9tyy))Kdy)9|)i9|yyH))Qi99T      %" * 4 : =(BE H)L\7g s v z8      i9i)Oy iyIII)y`yy)nKyy))i99|i9i)yy)yyƉ@iL)NP)|9RYTV)V)T)RH)N< )\yyƉ@iX)Z\)9^ 9  " % . 8 ? B G J O R W Z _ b   4"   (Y`b)b)`)^\)Z¦ rt<r)rr) ~ȶI )|Wyy)xSyy)u)]y)iXI)[Yii8)Y[yyi))~fy)i   4"  ! $ '*+3 6 ; > Q T [ ^ g j t z }     E& ǀ)Gy)L湜Lyitit. Yv      $   SDCALENDAR  D.TEN  40000 vt)vYiv rI )Wy iyIIIIÉI) y) $y):Syy)H8yy)f]yy)ryy)yy)Ɯyy)yy) ƋyyƉ@ij)ln)9pYrt)t)r)p$     '9/ 8 > A H K R U \ _ f i p s z }     )lh ZJو)YI))0H))0G))0)0))+))XI)99i)0i)9)fXI)i9i)yHhhi9hi湌)5وi))0)y) )+) XI)   4 "     & 0 I b h r v        J9i)yphph)+i)XI)9Ƈi)0i)9)ci9y()dyYIi)+i)XI)9ȇi)0i)9)ci9y(ih((hhh)))Yi9 9hi9 i)8yyƉ@i) )9Y)))8)     $ C K S k:x         )yKSYi ?RJو)AQI)@)0H)?)0G)>)0)0)=)+)<<)DXI)9F9=i)0i)E9D)fXI)i9Ii)yHhhi9hi湌)5وi)_)0)^y)])+)\X4"     # & 0 : S l r |        I)9^i)yphph)yKSYi)(yyƉ@i) )9Y)))() ))Q9x9i9xiƉ@i) ) 9YȞ)Ȟ)ƞ))֦  |I )0)yl      # , / O T W4Z"c l   4"   yW phhi9ΡhiΜXI)hii)Y)+)XI)9i)0i))))99y))i99yi      ' . 6    m  k  $  "  60000  80000  :02 )XI)99i)0i))))y)gi9y)XI)i9iXI)lii)N)y4hhi9hiXI)pii)Y I XI)t|ii)+)XI)9֜|i)0i)  ' + 1 9 ? B L Q U ` g k q t ~       u9)cXI)i9Շi)0)xyyix})0و)ی|)1))0)0))+)XI)9هi)0)+i)XI)9ޜxi)0i)9)eXI)i9އii)yzhh)ylh)     ! ( 3 J P Y a i y            #)ylh)湌وi)~))0))y))+))e9y)yh)yhyh)yy0h)G湜GyHh湜yHhGyhGi ~I       # + 5 N U Z a f k q u y ~          Y)()ܜHy)lixx(ۉI)|9yY()'yYIilIxyY)'yYIiI(ۉI)|9yY()'yYIillI)l  %    ! & ) . 395 < M R ` c i9k r          dҦY8Ɖ@))9Y ) ))Ğ)2  I r 8) r 8) r8) r8) r8) r 8) r +    (3 8 ;4>"I L X [ g j v y       c  8) r8) r8) r8r8r8r88) r0r9x     ( + 0 3 8 ; @ C R X      /  -      XT  VV  ;00  <07  =01  oXII9ri)0i)))D9yir8rC8x)NFYrrx)YFYrr ~ֶI )+)XI)9Yi)0i)9)cXI)Yi9iXI)v    ! & ) 3 6,;> A E H O R-WZ ] a d r z       Yiix)+) XI)9"Wi)0i)!9 )cXI)Wi9"i)i)w.w,)Y[yyi I Z)7و)'Y)0)&y)%)+)$XI)Y9&iXI)[Yii)Yy[yY)+i)(XI)9*Wi)0i))9()c   % + @ C P [ o u |          ŇXI)Wi9*i)i)vv }I XI)xYiix)YyHYi)+),XI)9.Wi)0i)-9,)cXI)Wi9.i)i)v=v;\Zو)3[Y)2)0)0)1)+)0)c90yH)Yi uI )+)4X  # ) , 6 : > H P ` f y |        I)96Yi)0i)594)cXI)Yi96iXI)[Yii)+)8XI)9:Wi)0i)998)cXI)Wi9:i)i)uu))Yzyi I )+)<XI)9>Wi)0i)=9<)cXI)Wi9>i)i)uJuH ʶI )+)@X   $ * - 9 A Q W n q       >I)9BWi)0i)A9@)cXI)Wi9Bi)i)uu ʶI Ɖ@") $&) 9(Y*,),)*)(<)$ ))W9\9⼔i9\i),SyyƉ@i0)24):96Y8:):)8)6)2r Ɖ<)>@B) DFH)JLN   P U X4["c l u x   4"wR P)P)N)J)D)>r )9R)9T9V9X)X)V)TW)R)9Z)9\9^9`)`)^)\S)Z,  4!) . 1G L O   l   j   n   \y   2   #                          @   \   ^               D   F   q   s   S   U  >01  ?12  @0001  B19  C00  D12  E12  F01  G31  H30  I29  J28   SXI)|WiiXI)~WiixXI)Sii8ЦY ~Ɖ@b) df) 9hYjl)l)j)h<)d n)pr)9tvx)x)v)tĞ)p2 )ss ~I )9)Ui9      # ) , 7 :.?^ c f4i"  4"7  yy))Sy)sgisd ۶I rt)+)XI)9Di)0i)))d9y()'yYIi)Dyph()'yYIii)Dy()'yYIi)Dy()'yYIiirx>Y8rx>    ' / K P T c j y ~     /    Y8rx@Y8r8@Y :I $ YƉ@) )$9Y)))ܞ)> rr I 0    1 ! & )2.8 ; > A D G+Li n q4t"x {*  , E)u)r]`yi I XI)Wiix))Wy)+i)XI)9Si)0i)9)eXI)Si9iixXI)Wii8))Wy)+i)$XI)9&Si)0i)%9$)eXI)Si9&ii nI y)|     ) , 5 = M S ] c f r u ~      yix&  F*&  ))[y)`)]rPyi))[y)`)ZrPyi)xyy)uiu Yx))[y)`)WrPyi8))[y)`)TrPyi aI Y9)      ( + 3 6 A K N V Y c f n q              Y   W   /   -   M   O  e  b  )/  &2   w   z   6"   3%         E   B  W  Z    L  | .REQUIRE_LANG_RT_REV_3.00  sd_cscreenprint   )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SDTurboFullO  SDTurboReset  SDFlushR  SDGetImage  SDNewWindowt  SDRemoveWindow SDSysErrorMessage  SDSetSecondaryProgramName   SDMalloc!  SDFree"  SDwritec#  SDinputc$  sd_nopen%  sd_nwriten&  sd_nclosen' SDSCREENPRINT_ASK_OUTPUT_NAME ( SD_ALT_EXIT_KEYS)  sstrcpyE* TIBr+  TIB_UPD_COUNTE,  AWDSCP-  AWBUFP.  AWOFSP/  AWATRP0  AWSETP1  AWPOSP2 FLOAT_TOP_WINDOW3  TOP_WINDOW4  BOTTOM_WINDOWD5 SDSCREENPRINT_TITLEU6 SDSCREENPRINT_OUTPUT_NAMEN7%SD_SCR_PRT_MAX_LEVELSM88SD_SCR_PRT_MAX_LEVELS 92(ad Printing |SDSCREENPRINTOutput FilenameESC to exit without printing:..ud..sd_cscreenprintC;..sc..sd_cscreenprintC< 8= >()   y   y))0 yp88y) 9 ) 8Y 9 9ȩ8))xi))))#yY   8 )9yyyi  )X x9) 9) 9 Yy) yx p8 y $)2*R%jn&'?xYi) ))Ю y 8y ) ))4y)) y  ̹)J)cyyy  ̹ )2yyy  )yyy  )yy ~xx 8! ' +48=7AD*H(W6bv###@[ y ~  yy)y  ฮ y ~`xy y y)X ).?G"NT XA ISDDumpScreenB SDSCREENPRINTC D .REQUIRE_LANG_RT_REV_3.10E SD_COMMAND4C&!9$!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART LYiz SD_NEW_WINDOWSD_REMOVE_WINDOWSD_MONITOR_STRINGSD_MENUSD_GETCHARSD_TURBO_FULLSD_TURBO_RESETSD_SET_SECONDARY_PROGRAM_NAMESD_ADJUST_AW_MOD_ZONESCTRLDEF_CTRLSD_COMMAND_TITLEAWBUFAWPOSAWOFSFLUSH_INTERVALSD_ALT_EXIT_KEYA D N [  h  uSD_COMMANDSD.SD_COMMANDUD.SD_COMMANDUI.SD_COMMANDSC.SD_COMMANDSD_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||   $      =                        HNNNYNWW              $  Y)    ` ))y)ޤ9)))9y9)乣ـ) YIY8 8 x)8NInIx) YȫY809xcظY) ȫYI)硩y9:i90i)))Xy))物y))) 9Yc8) 9Y 89Y))) )9 )yyNONE  "%(+. 47 :I NSX ] b gk p u ~    #;@CM  sd_mail   )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SDTurboFullO  SDTurboReset  SDReadChar  SDDrawHLinet  SDFlushL  SDNewWindowt  SDRemoveWindow  SDPopUpMenud  SDMenu! SDSysErrorMessage " SDSetSecondaryProgramName #  SDMalloc$  SDFree% utoa&  SDsetcur'  SDwriter(  SDfill)  SDinputr*  sd_nopen+  sd_nwriten,  sd_nread-  sd_nclosen.  sstrcpys/ SD_READ_MAIL_ASK_OUTPUT_NAME0 SD_READ_MAIL_AUTO_DELETE1 SD_ALT_EXIT_KEYT2 SD_READ_MAIL_ACTIVEE3  SD_PO_BOX_CHAN4 SD_LOCK_PO_FILET5 SD_UNLOCK_PO_FILEV6  SD_SEND_MAIL7 SD_CHECK_FOR_NEW_MAILE8  sd_sys9 SD_WORK_DIR_PATH:  SD_PO_DIRI;  SD_OPEN_MAIL<  SDbeep= TIBe>  TIB_UPD_COUNTA?  AWDSCP@  AWBUFPA  AWOFSPB  AWATRPC  AWSETPD  AWPOSPE FLOAT_TOP_WINDOWF  TOP_WINDOWG  BOTTOM_WINDOWDH SD_READ_MAIL_TITLEI SD_READ_MAIL_OUTPUT_NAMEJKLM NOE;: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_MAILPDDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQHNNYYNWWRHNNYYNWWS ..ud..sd_mailDT ..sc..sd_mailDU)  )Y )))ɮ)   y   y))Y)0)y yy)y y) ) y )))Y))Y ɀY  )Y?  Y9 )Y)K8)P Y90*42L&S;V:]/p+y4|56VɀY Y9 )(Y y) 9 ) 8Y 9 9ȩ8 y \8i9v 8))8i9f 8) y8i9H)Z)))#y   ) yN8i9) Ny8I 8 N8 y !/V+q-,-.W[ y 8Y) 8y  )  ) )N)4)yyy  ̹)2)cyyy  ̹ )yyy  )yyy  )yy } x) y ~  y yy.  J$'/=0Ma(s((X   8) y ~c ̹ y yy) 8 )I9J I9K)9L))9)N9yy)i)txI) y }p9Y))) }YɀY x  )Y? 8ɀYYـ ɀYr " -"41P/a 9YgQt r)Y t9 YɀYx Y9 ɀYx }4Y yIIIIIIIII)? 􈹁Y9 ) #;Z RP[ \ ] ^ _ ` a b c d e f g h i j k l m6Y)LY y |8i 8) y 8i  9 IY9 9 I)Y8 򩉁8)yDY8 򩉁8)yy))c)%y)))3y) ))4y9 y)y) )y x):))X)R) ),)) 8) y 8i  9 #-h(y(((/  -nIY9) )%)y )F9 y) 8) y 8iY     ) y 8i x  9  Y9) y 9 IY9 ) )J)yy    8 8) y z))c))y) )J)y("/2-[-~/(((o y )))x9t9.99ϣ)N)y)yy)J))y)y ? @yy })c9) x ?y z ?x))x)qx 򁉁8))I98 򁉁8. %(+058IDOVmp!v2p ))cI9 򁉁8))cI9)c9x)c98 y |)c98Y98)9 y {)c9)9x)9)c P x y |=))Y RT yIIIIIIIIIT R)  x x)Y 8 iy  )  x !$>A_1dgpq+! { yIIIIIIIIIyT RI9Y Ry y r 4s /t  u  v  w  x  y  z  {  |  }  ~  .                   8i 8)$ yxi89$IY9)@ yIIIIIIIII)$) x)$ yxix9$IY9)I yIIIIIIIII9Z9$ Zy 8)$ y8i 8)$ yxi89$IY9)_ yIIIIIIIII)$)> 8 y-29/I-iy/--/ mIIIIIIIIIY)0Z)y y)&y Z) yIIIIIIIII<)> y x y )  I)9)I9 ɀY $    )Yx))@ ȹ8)Y yIIIy)  ) )? ?y } yII &#/3F.Ym >IyI9 yIIIy I9 I9 I9 YI9 ) y))Y89~9z y))y y)Kx y)F)) y y yIIIy) yyIIIIIIIII y))c) yy  yIIIIIIIII y)>)c) yy ɀYx  ~ /)G(_(h((  I9y8 yyIIYI yY9  8 I9Y) y))Y X 8))@8Yѩ𸇩)ѹ )ϙx 􁉁x ѩ )Yx))y):)DNUXckquI/e@ ¾))F))y))c))y)B)yY) (&+.147>  29隤9鶬ڤ9̤ܤ.99)Y )9) Y y }l 88ѹx8y ~)yYyy }@鸩 ))  )9)y) )y )L)6) ) yx)^  #(-36GRU`pt()6)) y))) ) :<щ8)YxɀYй̹ @щɀY x))?yy :7yx))?yy :'yy) < :ʸa8A )98x))8yIIIy))فx8 >(#0@(I'Y(b'fjn))I ))I ))x) ))9x9)Byyi)DY x))888) y }8 }8 y }tY8)x IYx)ϙ8 y vL) y x ? ׵yy uP ~)$,!52]imsv{3))Y YɀY 8 )Y) K8) )@  YɀY x)Yyy xx))Y ) I90y8)) y))yYĮ晤YY9y)iyYyi) )妮"AM[j3p3uy<}"3$3#y)Kx) I |)Y 8 |y y) Y)Y )I J)) ) )8=05%<B#G3JR8V      J  V & 3 5 L U SD_READ_MAIL JSD_MAIL_INBOX Y SSDSendMail T@-i  yx)  y)޾)  y 77)7 d [  .REQUIRE_LANG_RT_REV_3.10 SD_MAIL_SUPPORT9CC0!C!]iSD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTSD_UNSHARED_DATA_PART4 $AO e pz ( H hu $ 5 >HPU[_din s SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_CREATE_FLOAT_WINDOWSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_WINDOWSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_DRAW_BOXSD_GETCHARSD_OUTPUT_STRINGSD_MESSAGE_JSRSD_SYS_ERROR_MESSAGE_JSRSD_ERROR_MESSAGE_JSRSD_MEM_ALLOCATESD_MEM_FR  EE_BPSET_FLD_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_TURBO_FULLSD_TURBO_RESETSD_SET_SECONDARY_PROGRAM_NAMESD_MENUSD_READ_MAILMAIL_INDICATORMAIL_INDICATOR_SIZEMAIL_VIEW_LINEMAIL_VIEW_COLUMNMAIL_VIEW_HEIGHTMAIL_VIEW_WIDTHSD_INPUT_MAIL_TITLEPERIODIC_INTERVALNONFN_TBLNONPRT_TBLNULL_TBLICTRLICTRL2CTRLAWDSCAWPOSAWOFSAWATRCON_USERNAMESD_WORK_DIR_PATHSD_IMMEDIATE_MAIL_DELIVERYSD_ALT_EXIT_KEYEXTC_SD_PERIODIC_CALLSEXTC_SD_PRE_PROC_CALLSEXTC_SD_SCREEN_SAVER_CALLSSD.SYSCALL  4 a   - 6 I [ m SD_SEND_MAILSD_INPUT_MAILSD_OPEN_MAILSD_CLOSE_USERS_PO_BOXSD_LOCK_PO_FILESD_UNLOCK_PO_FILESD_CHECK_FOR_NEW_MAILSD_PO_BOX_CHANSD_PO_DIRSD_READ_MAIL_ACTIVESD.SD_MAIL_SUPPORTUI.SD_MAIL_SUPPORTUD.SD_MAIL_SUPPORTSC.SD_MAIL_SUPPORT ^: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{|}~<> =                                                MSG.00000  (  !  @j"  D#  $  %  &  '   (  !)  "*  $+  &,  ,-  ..  0/ (0 21 S2  23  34  4 5  56  67  88  :9  ;:  <;  ><  @=  B>  DVYYNYNWW?  H@  IA  JB  LC  ND  OE  QF  RY G S Select recipient: select, exitH)Y) xйy9)x)9) ™) ™)8)xщ8)8Y9) ™) ™ )85)) )Yѩ8YY)ѹ 9 )II3Y08 Ή )@9Yy89F) Yɇ8YyqIWARNING: Unable to set SCREEN DEMON `@ON Ready For Mail' flag))YyqY)IIY9i)II):9YY9ɇ) 9)9Yyɇ) Y9y)E))N )))N )) )@ lY oIx9 * 99) ݊x9) Y9i)) y) 7) ߇ x9Y99)) x9)9 0x)) y) 8) ѧ)E)   889) Unable find SCREEN DEMON Post Office directory 'SD_POST_OFFICE' in the SCREEN_DEMON directory. The SD_INIT_MAIL macro will create this directory.Y2IY9iII39) GUnable to open SCREEN DEMON Stamp file SD_STAMP_DEPTY1   ! &+)*,)/(26 >A&D'GO*T1Z3`:ek2q%v 13 2   8  ?   ?    ? + 1?7 d n?t x.} 9   ?  ? ?.Z a n.    ?  I092) YyqI LUnable to read SCREEN DEMON Stamp file LII3x9V) ~B8 Y 8 ?xY9Yx x븴98) Yy% ~Unable to obtain a message number from SCREEN DEMON Stamp DeptYy% }Y089*) Yyq yUnable to access recipient's SCREEN DEMON Post Office Box)  )@j9)D9I9YY Ȅ)(湁Y9Y$IY9i)9) 9Y9YyP) 9YyX) yyyiY9)N)8 )Y)9yЉ9Y) 9Yb)yyiy)Ny)8)YyЉ9Y) 9Y9)d9j)yy)Ii) 9YJ89r)yyi) Ii) 9Y096) Yy r9>) iUnable to write message to message text fileUnable to create message text file )@8y) Yi)@Yy88) Y Y9i9 Y )@9I9YY8)99)9)Yy‚)yx)Yy)$9)+9YY9Y)9YY99YLYy{9) sUnable to obtain use of recipient's SCREEN DEMON P  ? ?% C H?M UZ `?  ?     ? ? ! 5?@ F.I L P k     .8 . ?<0@ G M R U?[.g l ?  ?   ?    ? ? J;ost Office Box))8))@)Yy)?IIi9i)9IyiIi)@)i9)YYi9YyP {TYyq)A89)I8x)yйxzނxYI9IiY9ɇ.BOX)yYyy!yy))-9Yy)i9pIyy)-9Y)) 9Y9YYyyyyĩ)):9Y)):9Y)yiJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECYyÇɇSD_INPUT_MAIL)i)H))F)3x9) *Can't allocate memory for message line inputͮ  YyRTVX)~Z  9h)"Y9yYyi)N)) )eY9yYyi)8Y9h)")Ѯ98)y888 T9x9h)"9)9Y)9Y)9YIyYiyi9)%)  x ! $[9hy)ޤyIiih@¹x9h~xIYRxx Jz) I) IY ?9iy) Y9yix 4Ή@ONΉ@ALL9i9)I) )8PYIYyN8Yny8 ~ -' s)Y)N)4yIΉy)PYIYyN8Yny82HM?R U \ b?m t? .  ?? ?)#/!5>] chlo,s v y |   ;.;9 F.P U?` fj px.?  ;)KX M ~- 3$-HD)Y)N)J )9ӁY  )K)Ѯ9)y)yx8 } i ~ 8 } OI)ӋyY9 K )Ӌyx9 )KY u )ӆ8Y)i9ӁY K Z ,)YIY8xx }#8 -)8 "$&())I ) 9Yi)y Ky)II) 9YK8Y9ih@ 9hYIx9 S) 89))))))9)􈸣9y)" yYyyix)x9)%)) ͅy) v |d89))))))Y99))x9ǣ9y)" yYyyi)ȁ98) )) ͅy)h vg    ͮ)F)H)O<>Y9@I9dx9 Y)RY9  YP Xy普yy  Yyyi Iy) )йxx8) >9 )J )|9Yi)  x 89hIx)|96)Y)щYd )" Y9i ) No Post Office boxes found)yyI9,)i8i 9)i8i@ON@ALL)@)@Y9y)IY9i9 )@9I;Rk;~; ; #&+ . 1 4 7; @CG/ .. % ( .3"9#@ C F I L R f/   $. B.K L 9yx8txY99)Ii IY9iyx))9)@9)9Yyx )9Yy) Y9)9I9yx)):9)y 9Y9,Y Y) y) Y9i )y"IY38 9Ή)9YY)Y)q)  "$&@)L9) xUnable to open Post Office directory! Stamp Department cannot be rebuilt!9Y9Y)Ii Y9999 )+9 Y) Yx)9yiYyP)~ŝ?    .+ /?= N?\ c?k n s ?  ?. ? ??        $Oi w?? M SD_NOTEPAD4C&!9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART p}   :Ziw     SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_MONITOR_STRINGSD_INPUT_FIELD_TO_FULLSD_DRAW_BOXSD_READ_CHARSET_FLD_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_MEM_ALLOCATESD_MEM_FREE_BPSD_ERROR_MESSAGE_JSRSD_TURBO_FULLSD_TURBO_RESETSD_SET_SECONDARY_PROGRAM_NAMENONPRT_TBLNONFN_TBLCON_USERNAMEPAD_PATH_PREFIXPAD_PATH_SUFFIXSD_NOTEPAD_TITLESD_ALT_EXIT_KEYSD.SYSCALL? D N W d  q SD_NOTEPADSDNotepadSD.SD_NOTEPADUD.SD_NOTEPADUI.SD_NOTEPADSD_NOTEPADD DESCE=Exit DC2E=Prev Page DC4E=Next PageBPage !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ o?       )#) )YF % )I9 Unable to allocate memory for notepad page!F 6Y9)YIi 6):9)D9)9I9)x Yx F)IIIY9Yi F 6  Yy)`9)9 4) y)F 4Y)9i)99)0Y)) F)yy 9)Y@8) Y F)@y)@ Y9Yyyixx8݃ߊ8 m S 44 J 4aY4 =i ~8 x | UoO"UyxY@ Wyx)@Y >xY) iY@   ~m) 4Yy 6 F8 % )) yi 6 F 4 Yy‚)8Px F?)yy) YY9YyYYy@xyi F: 4@^yI) Fyii F?) )9@Yy 6Âyi F)Y9yYy))>y Yyy  #&+3z }! $"      ! $ '+ 1 4Q##               $#(, 2E$Yy$  SD_CLI_INTERFACE"!C1KSD_UNSHARED_DATA_PARTSD_SHARED_DATA_PART D MZj{   SD_REDRAWSD_NEW_WINDOWSD_REMOVE_WINDOWSD_MONITOR_STRINGSD_FLUSHSD_PROC_PRSD_SET_SECONDARY_PROGRAM_NAMESD_MEM_ALLOCATESD_MEM_FREE_BPNONFN_TBLNONPRT_TBLSD_DEFAULT_CLI_INIT_CMDSD_CLI_PATHNAMEEXTC_SD_INIT_CALLSSD.SYSCALLNDTfgfv SD_CLI_INTERFACESD_SET_CLI_INIT_CMDSDSetCLIInitCmdUD.SD_CLI_INTERFACESD.SD_CLI_INTERFACE YK SD_CLI_INTERFACE       :UTIL:SD_CLI_ACCESS.ACLfGI))vIYR8)`9$)I)Y)Y)x),9YIY9Y9i)$))8) y) YyyxyyyyyY9    " ' *03?ITX \ bilou   SD_CLOCK%C!/SD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART LYiq #1AFK bSD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_CREATE_FLOAT_WINDOWSD_MONITOR_STRING_INTO_WINDOWSD_FLOAT_CLOCK_LINESD_FLOAT_CLOCK_COLUMNSD_FLOAT_CLOCK_WIDTHSD_FLOAT_CLOCK_HEIGHTSD_FLOAT_CLOCK_FORMATSD_FLOAT_CLOCK_FORMAT_LENSD_MONTH_NAMESSD_WEEKDAY_NAMESAWDSCICTRLEXTC_SD_PRE_FLUSH_CALLSSD.SYSCALL48 F Q  \SD_FLOAT_CLOCKSD.SD_CLOCKUI.SD_CLOCKSC.SD_CLOCKCNYRMONMAMDANDADHRMHMIAP   .6>   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "$&(*,  C)ѩxy9) )0 9Y99) y. yi 9Y8yy )8 Y X)%8 ) Y XY908I9Y)X)) azY)Y)Y X)azY))) y)Y Y  ) z) r)  j) Ď ]) ) N) a FYyY)ȃYYd 1YyY)ȃYY)M ) ) yY'  )  y)  ~q9 ։ ) ~AMPMy)) йY9 iy y)y) AZIi9 9YI8AZxYyyYiyIii9 yy>yy) YyYyy)8Yyy9 9 I9y)Yyy!9 9 )lIY)d99I9    "%(ARk f  SD_MAIN_MENU!&SD_UNSHARED_DATA_PARTY(/FXkySD_MENUSD_CALL_HOT_KEY_ROUTINESD_MAIN_MENU_TITLESD_MAIN_MENU_FOOTERHOT_MENU_ITEMSHOT_MENU_ITEM_NUMSSD_HOT_TIMEOUT_INTERVALSD_HOT_KEY_LEVEL+ ,8GSD_MAIN_MENUUD.SD_MAIN_MENUSC.SD_MAIN_MENU &               VYYNYNWW       "&\)98Y  9 x8I)))  " ',169 =CHQT Y  SD_C_SCREEN_IO  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT SD_ADJUST_WINDOW_MOD_ZONES SD_OUTPUT_STRING SET_FLD_DELIM_TBLM  sstrcpy_ SD_INPUT_STRINGB TIBI  TIB_UPD_COUNTN  AWDSCP  AWBUFP!  AWOFSP"  AWATRP#  AWSETP$  AWPOSP% FLOAT_TOP_WINDOW&  TOP_WINDOW'  BOTTOM_WINDOWD( %UtoaBase))UtoaBase* '.NULLDEL+*.NULLDEL, -*...ud..SD_C_SCREEN_IO/..sc..SD_C_SCREEN_IO0 ) 1)Y9 )098 Yѩ8ȩYiy0 9y  Y҉Yiyy8 X Y x  𨹁8) y9 Xx  yy  )9)) 􅉁IyIIIIIIII򅉃Iـɀ) 􁹇  )0)M`""!%2)X Y y Yi 𑹀 􅉁IyIIIIIIII 𩙩Y yyyyi x  0x9y)YyIyi   )).8)yI9 ).) I9 ) 򉹋y I9 ) y I9))8)))Y)))) y )IyIIIIIIII)I] 0 *0!`!g!3)YY)Y)YIyIIIIIIII 8 9yi ) YyIyi x)Y)YIyIIIIIIII x9y)YyIyi)Y)YIyIIIIIIII  )9))Y)Y  9yy)YyIyi )Y)Y x9y)YyIyi)Y)Y      ))˸)k!r!4sY ) I9 8I9 )N)) 𬹫I9Y9 Y  y YiI9) 9 I9 I9 ɀYI9 YـY9 9y)Y9)Yـ/*L#V#_l#5 utoa6 SDbeep7SDsetcur8SDwrite9 SDfill:SDinput;  < .REQUIRE_LANG_RT_REV_3.10= SD_C_FILE_IO  )..LOW32K  I.INIT  SD_INIT.  sd_sys +w ..sc..SD_C_FILE_IO ) 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 ))) xi)) I9 Y9     I9Y99 )))®8)/8Y xi)) I9 Y) Y9 Y999I  )))Үx 8 򁉉89 )))Ү i) I9Y )))i ;    sd_nopen 8 2 pt  x t z v  _sd_nwritesd_nreadsd_nseek Asd_nclose .REQUIRE_LANG_RT_REV_3.10  SD_C_INTF_DRAW  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SD_DRAW_BOXO  SD_DRAW_VLINET  SD_DRAW_HLINET TIBD  TIB_UPD_COUNTT  AWDSCP  AWBUFP  AWOFSP  AWATRP!  AWSETP"  AWPOSP# FLOAT_TOP_WINDOW$  TOP_WINDOW%  BOTTOM_WINDOWD&) I9 I9 I9 I9)x999 9 yi  y999 9 y yi  y) I9 I9 I9999 yi y) I9 I9 I9999 yi y3U|' SDDrawBox( YSDDrawVLine) SDDrawHLine* + .REQUIRE_LANG_RT_REV_3.10, SD_C_INTF_IMAGE   )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT SD_MONITOR_STRING  SD_MONITOR_STRING_INTO_TIB SD_OUTPUT_STRING SD_GET_SCREEN_IMAGE_JSRT SD_GET_IMAGE_BELOW_FLOAT_JSR  SD_LOAD_TIBE  SD_DISPLAY SD_DISPLAY_INTO_STRING  SD_GET_POS! TIBG"  TIB_UPD_COUNTT#  AWDSCP$  AWBUFP%  AWOFSP&  AWATRP'  AWSETP(  AWPOSP) FLOAT_TOP_WINDOW*  TOP_WINDOW+  BOTTOM_WINDOWD, '.NULLDEL--.NULLDEL.-/) 􅹅y) 􅹅y) 9yY y ) 􅹮) 􅹮)9y))) Y  y YiIx Iy9 y)) Y  y YiIx Iy9 y)) Y  y YiIx Iy9 y# 1:C![-q--0 SDLoadTib1  SDDisplay2SDDisplayIntoString3 +SDGetImage44SDGetImageBelowFloat5=SDGetPos6KSDMonitorString7tSDMonitorStringIntoTIB8SDOutputString9 .REQUIRE_LANG_RT_REV_3.10: SD_C_INTF_INPUT   )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SD_GETCHAR SET_FLD_DELIM_TBL   SD_READ_CHAR SD_READ_CHAR_ONLY  SD_SET_ACCEPT_TIMEOUT  SD_RETURN_INPUTI SD_OBTAIN_INPUTI SD_INPUT_STRINGI  SD_SET_ACCEPT_CURSOR_OFFSET ! SD_GET_ACCEPT_CURSOR_OFFSET " TIBG#  TIB_UPD_COUNT_$  AWDSCP%  AWBUFP&  AWOFSP'  AWATRP(  AWSETP)  AWPOSP* FLOAT_TOP_WINDOW+  TOP_WINDOW,  BOTTOM_WINDOWD- '.NULLDEL...NULLDEL/.0)) 8) I99y))) 8) I99y)) I99y))x)8 Y y YiI9 I9)89 y9) y) I9)9 y89 y y8Y9))) )8Kd.1o) 􅹅y) I99y)9y))) 9yIY89y Y89 y  )) Y  !#"7DWgl2 SDReadChar3 SDReadCharOnly4@SDSetAcceptTimeout5 OSDReturnInput6 SDObtainInput7SDObtainHotKey8 SDInputString9SDSetAcceptCursorOffset:SDGetAcceptCursorOffset; SDGetChar<,SDSetFieldDelimiterTable= >> .REQUIRE_LANG_RT_REV_3.10? SD_C_INTF_MEM   )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SD_MALLOCM  SD_MEM_FREE_BP  SD_PUT_VALUE  SD_GET_VALUE TIBG  TIB_UPD_COUNTP  AWDSCP  AWBUFP  AWOFSP!  AWATRP"  AWSETP#  AWPOSP$ FLOAT_TOP_WINDOW%  TOP_WINDOW&  BOTTOM_WINDOWD' '.NULLDEL((.NULLDEL)(*w) y) ))8 Y  y YiI9 I99 yi y)))9 I999 yi  y)x))$(Af+SDMalloc,  SDFree- SDPutValue. ESDGetValue/ x0 .REQUIRE_LANG_RT_REV_3.101  SD_C_INTF_MENU  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LO  GOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SD_POP_UP_MENU  SD_MENUU TIBM  TIB_UPD_COUNTU  AWDSCP  AWBUFP  AWOFSP  AWATRP  AWSETP!  AWPOSP" FLOAT_TOP_WINDOW#  TOP_WINDOW$  BOTTOM_WINDOWD%)) 􍹭y8x  yyxY ))) 􍹭y8x  yyx   yy8   yi  y88   yi   y   y  y yyxY)8  y晓y) ) 6EVn& SDPopUpMenu' *SDMenu( .REQUIRE_LANG_RT_REV_3.10)  SD_C_INTF_MESG  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT SD_SYS_ERROR_MESSAGE_JSR  SD_MESSAGE SD_MESSAGE_ONLYS SD_ERROR_MESSAGE SD_ASK_QUESTIONE TIBA  TIB_UPD_COUNTO  AWDSCP  AWBUFP!  AWOFSP"  AWATRP#  AWSETP$  AWPOSP% FLOAT_TOP_WINDOW&  TOP_WINDOW'  BOTTOM_WINDOWD() I9 I9)x y99 yi y99 y yi y) I9 I9)x y99 yi y99 y yi y) I9 I9)x y99 yi y))8 IY) I *B[p)rՇ  i  ))xY I998 y yx I9 I999 x yi   y8 y yi  y y)1Vj* SDMessage+ FSDMessageOnly,SDErrorMessage-SDSysErrorMessage. SDAskQuestion/ H0 .REQUIRE_LANG_RT_REV_3.101  SD_C_INTF_MISC  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT  SD_CONTROL SD_SET_LOGOFF_INTERVAL  SD_GET_CONTROL  SD_TURBO_ONR  SD_TURBO_OFF  SD_TURBO_FULLL SD_TURBO_PARTIAL  SD_TURBO_RESET  SD_TEMPLATE_MATCHE! SD_GET_TERMCAPSC" TIBG#  TIB_UPD_COUNTP$  AWDSCP%  AWBUFP&  AWOFSP'  AWATRP(  AWSETP)  AWPOSP* FLOAT_TOP_WINDOW+  TOP_WINDOW,  BOTTOM_WINDOWD-) 99y) I99y)9y)Y)9y)Y)9y)Y)9y)Y)9y)Y)9y))  yY)Y)9) yyy)Y #2AP_n |!"". SDControl/SDSetLogoffInterval0 SDGetControl1 ,SDTurboOn2 ;SDTurboOff3 JSDTurboFull4YSDTurboPartial5 hSDTurboReset6rSDTemplateMatch7 SDGetTermcaps8 9 .REQUIRE_LANG_RT_REV_3.10:  SD_C_INTF_WIN1  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT SD_CREATE_WINDOW SD_ACTIVE_WINDOW SD_CREATE_WINDOW_NO_BOX   SD_NEW_WINDOWD SD_REMOVE_WINDOW TIBR  TIB_UPD_COUNTD  AWDSCP  AWBUFP!  AWOFSP"  AWATRP#  AWSETP$  AWPOSP% FLOAT_TOP_WINDOW&  TOP_WINDOW'  BOTTOM_WINDOWD())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 y8 I9 I9 I9 I999 9 9 y 3inx)yi yxY9 y ))x I9 I9 I9 I999 9 9 yi y8 I9 I9 I9 I999 9 9 y yi yxY9 y )) 9y R*SDCreateWindow+SDCreateWindowNoBox, SDNewWindow-SDRemoveWindow. / .REQUIRE_LANG_RT_REV_3.100  SD_C_INTF_WIN2  )..LOW32K  I.INIT  SD_INIT.  TIBATR  CTRL  TIBOFS  ATTRBS  CHARSETS  SD_CUR_PID  CON_ACTIVE_PID  CON_PROG  CON_USERNAME  CON_TERMCAPS LOGOFF_INTERVAL  PERIODIC_INTERVAL   FLUSH_INTERVAL  ACCEPT_TIMEOUT SD_CREATE_WINDOW SD_ACTIVE_WINDOW SD_CREATE_WINDOW_NO_BOX   SD_NEW_WINDOWD SD_NEW_WINDOW_NO_INITO SD_CREATE_WINDOW_NO_INIT  SD_TOP_WINDOWD SD_FLOAT_WINDOWW  SD_NEW_WINDOW_VIEW! SD_SCROLL_WINDOW_RIGHT" SD_SCROLL_WINDOW_LEFTT# SD_SCROLL_WINDOW_UPF$ SD_SCROLL_WINDOW_DOWNT% SD_MOVE_WINDOW_RIGHT& SD_MOVE_WINDOW_LEFTT' SD_MOVE_WINDOW_UPF( SD_MOVE_WINDOW_DOWNT) SD_SET_WINDOW_SIZE* SD_SET_WINDOW_POSITION+ TIBS,  TIB_UPD_COUNT_-  AWDSCP.  AWBUFP/  AWOFSP0  AWATRP1  AWSETP2  AWPOSP3 FLOAT_TOP_WINDOW4  TOP_WINDOW5  BOTTOM_WINDOWD6)) 􍹭y88 I9 I9 I9 I9 99 9 9  yi  y I9 I9 I9 I9 99 9 9 y y yyxY9 y @  )) 􍹭y88 I9 I9 I9 I9 99 9 9  yi  y F7ߛ I9 I9 I9 I9 99 9 9 y y yyxY9 y )) 􍹭y88 I9 I9 I9 I9 99 9 9  yi  y I9 I9 I9 I9 99 9 9 y y yyxY9 y6;EY8 ))x I9 I9 I9 I999 9 9 yi y8 I9 I9 I9 I999 9 9 y yi yxY9 y )) 􍹭y88 I9 I9 I9 I9 99 9 9  yi  y I9<rw9 I9 I9 I9 99 9 9 y y yyxY9 y ))x I9 I9 I9 I999 9 9 yi y8 I9 I9 I9 I999 9 9 y yi yxY9 y )) 􍹭y -2<w:4*k I9 I9 I9 I9 99 9 9 ;SDCreateWindowUsingImage<SDCreateWindowNoBoxUsingImage=,SDNewWindowUsingImage>SDNewWindowNoInit?BSDNewWindowNoInitUsingImage@SDCreateWindowNoInitAXSDCreateWindowNoInitUsingImageB YC yi  y I9 I9 I9 I9 99 9 9 y y yyxY9 y ))x9y I999 yY9y )Y9y )) x9yxY9y )Y9y EJTg}Db )) x9yxY9y )Y9y ) 9yy)) I99y)) I99y)) I99y)) I99y)) I99y))    / A!T"Y"l#q#$$%%&&Ew$ I99y)) I99y)) I99y) I9 I999 y) I9 I999 y ''"('(:)?)Y*s+F m8G hzHSDActiveWindowI$SDGetActiveWindowJ 5SDTopWindowKVSDGetTopWindowL gSDFloatWindowMSDGetFloatWindowNSDNewWindowViewOSDShiftWindowRightPSDShiftWindowLeftQSDShiftWindowUpRSDShiftWindowDownSSDMoveWindowRightTSDMoveWindowLeftU7SDMoveWindowUpVOSDMoveWindowDownWgSDSetWindowSizeXSDSetWindowPositionY Z .REQUIRE_LANG_RT_REV_3.10[  sd_sys  &sd_sysSC.sd_sys0(ɂ򇉧))  Ii 9 Y  sstrcpy  .NULLDELsstrcpy2'))9  X yyYIi xY9 SD_MESSAGE"CL!/#SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTn DQa it  SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_DRAW_BOXSD_MONITOR_STRINGSD_GETCHARSD_MENUSD_MENU_CALC_SIZE_ONLYAWBUFAWPOSAWOFSAWCPLCTRLACCEPT_TIMEOUTSD.SYSCALL &S .= P ]  jSD_MESSAGESD_MESSAGE_JSRSD_ERROR_MESSAGESD_ERROR_MESSAGE_JSRSD_SYS_ERROR_MESSAGESD_SYS_ERROR_MESSAGE_JSRSD_MESSAGE_ONLYSD_MESSAGE_ONLY_JSRSD_ASK_QUESTIONSD_ASK_QUESTION_JSRSD.SD_MESSAGEUD.SD_MESSAGESC.SD_MESSAGETL Error!Press any key to continue... Yes|No||   #                             HNNYYNWW             #D)YyyII ))Y9 ) y II8 )i )iIi  ާ))  )IY)i )i )i )I)i9Y9:щxyyy)'I)|Y)|)|9Yxi)|9Y ) ɁYIY999:)x))Y9))I9 I))Y9 IYI8 )i )iIi x )Y9)I9Y )Y9 I89 9 9) ) i)) Y9)J) 8)PY9)$))y9 )))y IY9 9 I9)y) y9 i)' )| 8¹ ~Yi Y7 iyX) y9 ) )x ) 8 x|!~YxY)i I8y)y' Yyi) y9 ) I) )YY9 ) )PYY9 )xY IyY))))칭y) I) Ii) Ii yi)' )| 8¹ ~Yi Y7 iyyX  Xـ) ) 8 ) 8 x|!~Y8Y)i8)xXـ) YYI)0όi IXYȃYYY)칉IO乂Y  * -5    ! , CH    8 N ]eu      "(0 ; > A D щ89۸   SD_POP_UP_MENUCSD_SHARED_DATA_PART SD_MENUNONPRT_TBL  .SD_POP_UP_MENUSD.SD_POP_UP_MENU Select: to selectv) ` R) n 9F )9Y99 99I9 )VY9)YN9)YN9)WW9)9)9)999&i)  ) 99F)IyYy*Tb m   SD_MENUCLSD_SHARED_DATA_PART `m}   1@SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_DRAW_BOXSD_GETCHARSD_TURBO_FULLSD_TURBO_RESETSD_ADJUST_AW_MOD_ZONESAWDSCAWBUFAWPOSAWOFSAWCPSAWCPLAWLPPNONPRT_TBLSD_CUR_PIDCON_ACTIVE_PIDCON_TERMCAPSCHARACTER_SET_PALETTESD_ALT_EXIT_KEYSD_MODEM_DISCONNECT_KEY58 ? U _SD_MENUSD_MENU_CALC_SIZE_ONLYSD.SD_MENUSC.SD_MENUDDDDDDDDSDSDDSDDDDDDDDDPNPNADDDDNDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD)4I9Qy)4Y9) < Q8 x )Y i )Y i )Yi8 )Yix )Yi))&NYyyi96YY 9))y)P%Nx)yi97YY9))$H8)y9)y9$ yL N))y9V))y9W)I9X)yyi9S) )yyi9TY9U9: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) Q%Nx 84fy "y yY YYyi)595 Q 84Ay "y yY YYyi)595 Q)8X4YY)&NYyi96)x)PX5YY)y97&N < y)j)h)n)l)Yy Q щxy)6)74Ȁ̅y "YIi 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<> ))y)10Yx)Y) i9 ) i9 Ɖefdb ie,  (EMb 49AFbx~  ?)Y)yi)yYyyyIY8i) yI9YyyЉI8iY9;)<9 h\IZ ?8XyYȃ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)<;XC R X [b l uz     3A DK N U[ dn q z   SD_DRAW_LINES~DHMRW \ft  CTRLAWBUFAWCPLAWLPPAWCPSSD_CUR_PIDCON_ACTIVE_PIDSD_CONFIG_FLAGSCON_TERMCAPSCHARACTER_SET_PALETTESD_LD_THICK_THINSD_LD_ATTRBSD_FLUSHSD_GET_LINEDRAW_INTERSECT_CHARSD_ADJUST_AW_MOD_ZONES, , 9FSD_DRAW_HLINESD_DRAW_VLINESD_DRAW_UNDERLINE)98)9) ))yy9 ))yy ))yYXyiI9IY9)-9))8)9Y9)))x)幢9);9i I)y)8Y))p89Ii))i 9Y8 )) 9x)) 9 ))yy9 ))yYXy ))yyiI9IY9)|9))x)9) 9)))x)幢9):9)y )))p89)I)9YI) 9x " 2 A J Q W Zp{          7BJQbhk r z SD_DRAW_BOX"C!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTb <@EJO T ^ jtCTRLAWBUFAWCPLAWLPPAWCPSNONPRT_TBLCON_TERMCAPSSD_CUR_PIDCON_ACTIVE_PIDSD_CONFIG_FLAGSCHARACTER_SET_PALETTESD_FLUSHSD_ADJUST_AW_MOD_ZONES _x   $2 SD_DRAW_BOXDRAWBOXSD_GET_LINEDRAW_INTERSECT_CHARSD_SET_LINEDRAW_STYLESDSetLineDrawStyleSD_SET_BOX_FILL_STYLESDSetBoxFillStyleSD_LD_THICK_THINSD_LD_ATTRBSD.SD_DRAW_BOXUD.SD_DRAW_BOX%'))&(%%)))&)&)')')))))(()))))))))))'&'&)&'))%%((%))())5799685599969697979999988999999999997676967995588599899  k))  ))y9 ))y9 ))yyYY)y9y ))yyԹY)y9ȫY9!Y ~Y) )ݘ *iY9)͉yyYyi) !9Yiyyi ԁY9)|9)x)9) 9))x)幢9):9)Y )ݘ =i))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։!"#$y։++++))py >+9)I?+9 щ@+9IA+9) !9I9 щ!9I9)x )Ii ))|Y)Y )Y y Y YyiX) yi !IY)͉)9yYyyi))YY )I9 ) 9xY) yI))x))!8YY)8iyIȫYY$I)Y)) x)Y)Y)Sisi)Didi)RiriљYY))Y))Y))Yi)) )) A Q X ]ehk s      1ANTZb i    k        N \ i  2!kY )))  Y      sd_get_put  )..LOW32K  I.INIT  SD_INIT.  SD_MALLOCO  SD_MEM_FREE_BP '.NULLDEL  .NULLDEL ..ud..sd_get_put ) Y99 ) x ) 9 Y) x)ȃI9)9II ) )8Y9 I ĹI yyyiyyi y y Yi Y   8 Y) )/Yx Y  y YiIy8 x )Y Y)IIy8 )9IIy晓y%0  щYII剁Y yyi yyi)) y ) y晓yщY)9)Y 9 yyyi 9) ) xyY 9)y x)9 ) )Y  yyyyi)) 𪋈8 )Y Y)II8 )98) 9Y9)  ) y ~Yyщ)/)y2 d r 4*Y   yi yyi) )Y 9)Y9 SD_PUT_VALUE mSD_GET_VALUE   .REQUIRE_LANG_RT_REV_3.10  SD_MATCHCSD_SHARED_DATA_PART48I! Q \SD_TEMPLATE_MATCHSD_MATCHSD.SD_MATCHSC.SD_MATCH{)) )N9 Y   )Y9)ѹy ) x )xY+x )Y ʹ*x)*xY ʹ )Y 8i8y Y )( SD_CONTROLa 0GfSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_INIT_CHARACTERISTICSSD_CONSOLE_INIT_DELIMITER_TABLESD_CONSOLE_TO_VIRTUAL_STATESD_FLUSHCTRLDEF_CTRLTIBTIBOFSATTRB7 4>CR| ` k w = X = XGTa{   (= 2X ==FXNG^TSD_CONTROLWCTRLSD_CONTROL_ONLYSD_GET_CONTROLSD_TURBO_ONSD_TURBO_OFFSD_TURBO_FULLSD_TURBO_PARTIALSD_TURBO_RESETSD_BYPASS_ONSD_BYPASS_OFFSD_DISABLESD_ENABLESD_DISABLE_HOT_KEYSSD_ENABLE_HOT_KEYSSD_BITS_TO_DIGITSSD_DIGITS_TO_BITSSD_LOAD_TIBWREPLACESDBypassOnSDBypassOffSDDisableSDEnableSDDisableHotKeysSDEnableHotKeysB))8 )))8 ))8)8)xy)x)8x)))8)y))))x 9)) 00i9) ʙ) ʩ)) 09) ʙ)) 09) ʙ) ʙ))8 09)x) ʩ)) ))x)x) )) ) ) )) ) ))ʙ))ʩ)) ) )y)0BY9Yx)) )yY)YЧ٩ɂ@ 9)) y)0IiЉ)0)1   + / 2@ D G MU [ c for u x             $ ( 8J MW Z SD_CBCALL4DKS!Z4aO?CBADDR?CBBADDR?CBPEEK?CBPOKE?CBSYS))8 􂚁Y)y 9y)) 8)))y9 yi x)))y9 yi)y  y)))y9 yi)y9 yi)y9 yi )YY)iH Ei AY    )y 9yi)y 9yi)y 9 yi)y 9yɇ SD_SCROLLBACK"C!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART t  )3 MY^chm    SD_NEW_WINDOWSD_REMOVE_WINDOWSD_MONITOR_STRINGSD_ADJUST_AW_MOD_ZONESSD_OBTAIN_INPUTSD_RETURN_INPUTSD_GET_HOT_CALLED_FROM_NAMESD_SET_SECONDARY_PROGRAM_NAMESD_TURBO_FULLSD_TURBO_RESETSD_GETCHARSD_EXPAND_SHARED_PARTITIONCON_TERMCAPSAWDSCAWBUFAWOFSAWPOSSD_SCROLLBACK_BUFFER_SIZESD_HOT_KEY_UTIDVIRTUAL_CON_DELIMITER_TABLENONPRT_TBLSD_CON_DEVICESD_MEM_DIR_NAMENONFN_TBLSD_WORK_DIR_PATHEXTC_SD_SHUTDOWN_CALLSSD.SYSCALLVD%b{ SD_APPEND_TO_SCROLLBACK_BUFFERSD_SHOW_SCROLLBACK_BUFFERSD.SD_SCROLLBACKUD.SD_SCROLLBACKSC.SD_SCROLLBACK "S#    :?SB_.TMP y8xy  9I)8У y )y Ii Yi YYXxXYyy9YyXyXi  Ix)x) x9(y9)yYi)  I ))l)&)) 9+9,$))89.)Y9*&(8)*89)X* &3y& (,x()y)yi)*)Y8)i$yyyy00yi ,x &8&*y9b)y)yi)*8 (( ,xiJYIY)+))y9,)Ix m8x))̾))&)Y y)* &XXx &XXI)yy)i))O))Iـyyy詑8ੋ8yyY YiȩYyɇyy鉑虉8虃88yY yYyYyɇ؉SD_SHOW_SCROLLBACK_BUFFER FKHI)E9)IIIIIY9i9II38   ! (- 4 9N Q T] c f k n q u }                   & ;A UY w {            & ) . 3 6 ; > HN Q c f m p u z } !"   $  )@9I9Y999 9:)999II3+)#Ή ? # #%8  %9Y999Y0x # )xΉ ?)x Y99YYYqI$&$+ 6; C$Vm p$ $ $ $   SD_CALL_LISTS!:SD_UNSHARED_DATA_PARTHMRdz1H_w?ZBOTICTRLEXTC_SD_INIT_CALLSEXTC_SD_SHUTDOWN_CALLSEXTC_SD_PERIODIC_CALLSEXTC_SD_SCREEN_SAVER_CALLSEXTC_SD_PRE_HOT_CALLSEXTC_SD_POST_HOT_CALLSEXTC_SD_PRE_INPUT_CALLSEXTC_SD_POST_INPUT_CALLSEXTC_SD_PRE_PROC_CALLSEXTC_SD_POST_PROC_CALLSEXTC_SD_PRE_?READ_CALLSEXTC_SD_PRE_FLUSH_CALLSEXTC_SD_PRE_?CHAIN_CALLSEXTC_SD_POST_?CHAIN_CALLS  /I^t"&*.26/?LBOTSD_EXECUTE_LIST_OF_CALLSSD_INIT_CALLS_LISTSD_SHUTDOWN_CALLS_LISTSD_PERIODIC_CALLS_LISTSD_SCREEN_SAVER_CALLS_LISTSD_PRE_HOT_CALLS_LISTSD_POST_HOT_CALLS_LISTSD_PRE_INPUT_CALLS_LISTSD_POST_INPUT_CALLS_LISTSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_PRE_?READ_CALLS_LISTSD_PRE_FLUSH_CALLS_LISTSD_PRE_?CHAIN_CALLS_LISTSD_POST_?CHAIN_CALLS_LISTUD.SD_CALL_LISTSl:   " &&*.26O;ypxI) Iyy pxIy ѹpIxЉɉx    .  SD_NO_VM_TERMCAPS_TBLSD_NO_VM_TERMCAPS_TBL`h`' SD_NO_ICX!SD_UNINITIALIZED_DATA_PART~ t SD_CALL_ICOBOL_SUBPROGRAMSD_ICX_TERMINATESD_ICX_INTERRUPTSD_ICX_UPDATE_..KTO..ESC..RIPcurrent_opcodeSD_LINKED_WITH_ICX_FLAGUI.SD_NO_ICX ) SD_NO_MAIL!  5SD_CLOSE_USERS_PO_BOXSC.SD_NO_MAIL ) SD_MODEM_INTF' =SD_GET_CONNAME_FROM_MODEM_MGRSC.SD_MODEM_INTF ) SD_WLI_DUMMY',:>WHO_LOCKED_IT?WLI?SC.SD_WLI_DUMMY )  SD_PATCH&! !1SD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTR \ e m z   SD_NPATCHSD_PATCHSD_PATCH_LIST?SD_PATCH?SD_NPATCHUD.SD_PATCHUI.SD_PATCH            .@'Fo'Hq'Hq#pMAKE_SD_NO_VM_TERMCAPS_TBL.CLI # [!equal,,RCS] **************************************************************** $Id: make_sd_no_vm_termcaps_tbl.cli,v 1.4 1995/07/11 20:47:51 mark Exp mark $ $Log: make_sd_no_vm_termcaps_tbl.cli,v $ Revision 1.4 1995/07/11 20:47:51 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_NO_VM_TERMCAPS_TBL.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 SD_NO_VM_TERMCAPS_TBL.OB file, which must be included when linking a program with the optional SD_INIT_NO_VM.OB module. This SD_NO_VM_TERMCAPS_TBL module should be recreated if the SD_TERMCAPS.SR file is modified. [!end] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] x/s masm/ps=masm_32char.ps/o=SD_NO_VM_TERMCAPS_TBL & SD_NO_VM_TERMCAPS_TBL SD_TERMCAPS pop .@'Fo|'Hq'Hq SPY.CLI  [!equal,,RCS] **************************************************************** $Id: spy.cli,v 1.4 1995/07/11 20:51:21 mark Exp mark $ $Log: spy.cli,v $ Revision 1.4 1995/07/11 20:51:21 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 SPY.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_spy %1-% pop .nlnlSD_POSSESS_ICX_1.52.PATsd_possess_icx_1.51.pat.@'Fo_'Hq'Hq  aSD_POSSESS_ICX_1.70.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.70.pat,v 1.4 1995/07/11 20:50:22 mark Exp mark $ ; ; $Log: sd_possess_icx_1.70.pat,v $ ; Revision 1.4 1995/07/11 20:50:22 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 for ICOBOL. ; ;This file applies only to revision 1.70 of the Interactive COBOL ; interpreter running under AOS/VS or AOS/VS II, using Screen Demon ; revision 3.60 %PROGRAM ;These patches modify ICX's op code dispatch table so that appropriate ; functions are routed through Screen Demon handlers. DISPATCH_OP.ZERO 0 #dispatch\ ^+1 0 [] dispatch @. SD_OP.ZERO_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.STP 0 #(dispatch+(116*2))\ ^+1 0 [] dispatch+(116*2) @. SD_OP.STP_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.CHN 0 #(dispatch+(120*2))\ ^+1 0 [] dispatch+(120*2) @. SD_OP.CHN_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.XIT 0 #(dispatch+(171*2))\ ^+1 0 [] ;This patch prevents ICX from requesting BELL line discipline when it ; calls the UNIX emulation function ioctl() during initialization. ; This in turn prevents the undesirable single-character binary read ; task from starting. set_terminal_state+243 [LCALL ioctl,0,3] [LCALL SD_ICX_IOCTL_NO_BELL_LD,1,3] ^+1 [] [] ^+1 [] [] ^+1 [] [] ;This patch diverts control through Screen Demon when ICX attempts to call ; its standard prg_run() function. This allows the name of the ICOBOL ; program about to begin (or resume) executing to be obtained. prg_run [WSAVR 14] [LJMP SD_ICX_PRG_RUN,1] ^+1 [] [] ^+1 [LDASP 0] [] ;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. accept_field [WSAVR 33] [LJMP SD_ICX_ACCEPT_FIELD,1] ^+1 [] [] ^+1 [XCALL ensure_curses_initialized,1,0] [] ^+1 [] [NOP] ^+1 [] [NOP] ;Replace ICX's character entry loop in its accept_field() function with ; more efficient Screen Demon routine. accept_field+414 [XCALL fetch_key,1,0] [LJSR SD_ICX_INPUT_FIELD,1] ^+1 [] [] ^+1 [] [] ;Replace ICX's fetch_key() function. fetch_key [WSAVR 4] [LJMP SD_ICX_FETCH_KEY,1] ^+1 [] [] ^+1 [LDASP 0] [] ;These patches allow Screen Demon to know when the external debugger process ; ICDEB has control, so that screen flushes in ICX can be inhibited. send_disconnect_event+2 [LWLDA 2,debug_msbuf,0] [LPSHJ SD_ICX_DEBUGGER_DISCONNECT,1] ^+1 [] [] ^+1 [] [] send_disconnect_event+2151 [LCALL sys_irec,0,1] [LJMP SD_ICX_DEBUGGER_?IREC,1] ^+1 [] [] ^+1 [] [] ^+1 [] [NOP] ;End of patch .@'Fo'Hq'HqqNAMTB_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: namtb_defines.sr,v 1.4 1995/07/11 20:48:07 mark Exp mark $ ; ; $Log: namtb_defines.sr,v $ ; Revision 1.4 1995/07/11 20:48:07 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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Definitions for building ICOBOL subroutine linkage table ; ; Screen Demon rev 3.60.01 .TITLE NAMTB ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; 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 ;Entry point referenced by ICX .ENT NAMTB ;Define the Name Table partitions: ;NAMTB_PART will be where the table itself is built .PART NAMTB_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .ALIGN 1 NAMTB: ;NAMTB_NAMES_PART will be where the routine names are stored .PART NAMTB_NAMES_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS ;Define a macro to add a specified routine to the table. ; ; Call format: ; NAME routinename {, referencename} ; "routinename" is the actual entry point for the routine. ; "referencename" is the name that will appear in CALL "" statements ; within ICOBOL programs. If not specified, "routinename" will be used. .MACRO NAME .IFG .ARGCT ;List routine as an external symbol .EXTL ^1 ;Add its name to the name storage area .PART NAMTB_NAMES_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS ?NM = . .IFG (.ARGCT-1) .TXT "^2" .ELSE .TXT "^1" .ENDC ;Add routine to the NAMTB itself .PART NAMTB_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .DWORD ?NM*2 .DWORD ^1 .ENDC % ;Define the BEGIN_SD.CALLS macro referenced in the SD_CALLS.SR file ; (which will be assembled with this definition file) so that it ; does nothing, since no special initialization is needed. .MACRO BEGIN_SD.CALLS % ;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 NAME macro above to create an entry for ; a Screen Demon call. .MACRO SD.CALL NAME ^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 ; finishes up the NAMTB table properly. The end of the NAMTB ; is indicated by an entry consisting of a -1. .MACRO END_SD.CALLS .PART NAMTB_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .DWORD -1 % ;Declare the ?CB calls so that they will be placed in the Name Table. ; Note that Screen Demon provides compatible versions of these calls ; that do not require the LANG_RT.LB Common Language Runtimes. NAME ?CBADDR NAME ?CBBADDR NAME ?CBPEEK NAME ?CBPOKE ;;; NAME ?CBRUNTM ;Not implemented in SD_CBCALL NAME ?CBSYS .EOF .@'Fo6'Hr'Hrp=SD_DEBUGGER_CONFIG.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_debugger_config.sr,v 1.7 1995/07/11 20:49:01 mark Exp mark $ ; ; $Log: sd_debugger_config.sr,v $ ; Revision 1.7 1995/07/11 20:49:01 mark ; Updated revision and copyright ; ; Revision 1.6 1994/06/08 16:53:38 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:17:19 mark ; Added the question SPECIFIC_PROGRAM_CONFIG_LOAD? ; ; Revision 1.4 1994/03/17 17:11:54 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 Wo rdPerfect 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 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 ; On Shift HOME, call the special routine that displays the ; current screen appearance of the program being debugged. HOT_KEY SHIFT_HOME LINKED SD_VIEW_TARGET_SCREEN MENU View Program Screen ; On Up-Arrow-key, call the special routine that obtains the ; previous entry from input history. HOT_KEY UP LINKED SD_GET_PREV_FROM_INPUT_HISTORY ; On Down-Arrow-key, call the special routine that obtains the ; next entry from input history. HOT_KEY DOWN LINKED SD_GET_NEXT_FROM_INPUT_HISTORY ; On Shift Up-Arrow-key, call the special routine that allows the ; scrollback buffer to be accessed. HOT_KEY SHIFT_UP LINKED SD_SHOW_SCROLLBACK_BUFFER ;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 i @ f 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 routi ne 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 i s 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? 2048 ;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? 8192 ;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 speci fier 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 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 .@'Hu.'H}'Huf,{ROOT_SCREEN_DEMON_SLI.OB ,w 9ROOT_SCREEN_DEMON_SLI.OBSN.ROOT_SCREEN_DEMONROOT_SCREEN_DEMON_SLI.OBEND_ROOT_SCREEN_DEMON_SLI.OBXG?ROOT_SD_INIT_CALLSROOT_SD_INIT_CALLSXG?ROOT_SD_PERIODIC_CALLSROOT_SD_PERIODIC_CALLSXG?ROOT_SD_SHUTDOWN_CALLSROOT_SD_SHUTDOWN_CALLSXG?ROOT_SD_PRE_HOT_CALLSROOT_SD_PRE_HOT_CALLS<XG?ROOT_SD_POST_HOT_CALLSROOT_SD_POST_HOT_CALLS XG?ROOT_SD_PRE_INPUT_CALLSROOT_SD_PRE_INPUT_CALLS!eXG?ROOT_SD_POST_INPUT_CALLSROOT_SD_POST_INPUT_CALLSXG?ROOT_SD_HOT_KEY_LISTROOT_SD_HOT_KEY_LISTE SL.DERR.HOOK SL.DERR.IHOOK SL.DERR.HOOK*JND.ROOT_SCREEN_DEMON_DUMMYND.ROOT_SCREEN_DEMONNDAT.ROOT_SCREEN_DEMON ROOT_SCREEN_DEMON_SLI.OB?SL_INTERFACE_START ?SL_INTERFACE_PART?SL_INTERFACE_END ND.ROOT_SCREEN_DEMON NDAT.ROOT_SCREEN_DEMONSN.ROOT_SCREEN_DEMON  ROOT_SCREEN_DEMON_SLI.OB  END_ROOT_SCREEN_DEMON_SLI.OB  ROOT_SCREEN_DEMON.SLO #     XG?ROOT_SD_INIT_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_INIT_CALLS ND.ROOT_SCREEN_DEMON 9   XG?ROOT_SD_PERIODIC_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_PERIODIC_CALLS ND.ROOT_SCREEN_DEMON 9   XG?ROOT_SD_SHUTDOWN_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_SHUTDOWN_CALLS ND.ROOT_SCREEN_DEMON 9   XG?ROOT_SD_PRE_HOT_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_PRE_HOT_CALLS ND.ROOT_SCREEN_DEMON 9   XG?ROOT_SD_POST_HOT_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_POST_HOT_CALLS ND.ROOT_SCREEN_DEMON 9    XG?ROOT_SD_PRE_INPUT_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_PRE_INPUT_CALLS ND.ROOT_SCREEN_DEMON 9    XG?ROOT_SD_POST_INPUT_CALLS?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_POST_INPUT_CALLS ND.ROOT_SCREEN_DEMON 9    XG?ROOT_SD_HOT_KEY_LIST?SL_INTERFACE_PART END_ROOT_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKROOT_SD_HOT_KEY_LIST ND.ROOT_SCREEN_DEMON 9    SL.DERR.HOOK  SL.DERR SL.DERR.IHOOK SL.DERR.HOOK ND.ROOT_SCREEN_DEMON_DUMMYND.ROOT_SCREEN_DEMONNDAT.ROOT_SCREEN_DEMON .@'GT}'H}'Hs-ROOT_SLI_SCREEN_DEMON.OB  ROOT_SLI_SCREEN_DEMON! SD_UNSHARED_DATA_PARTL^t%;Pf}EXTC_SD_INIT_CALLSEXTC_SD_PERIODIC_CALLSEXTC_SD_SHUTDOWN_CALLSEXTC_SD_PRE_HOT_CALLSEXTC_SD_POST_HOT_CALLSEXTC_SD_PRE_INPUT_CALLSEXTC_SD_POST_INPUT_CALLSEXTC_SD_HOT_KEY_LIST?ZBOTROOT_SD_INIT_CALLSROOT_SD_PERIODIC_CALLSROOT_SD_SHUTDOWN_CALLSROOT_SD_PRE_HOT_CALLSROOT_SD_POST_HOT_CALLSROOT_SD_PRE_INPUT_CALLSROOT_SD_POST_INPUT_CALLSROOT_SD_HOT_KEY_LIST?SL.USER.STATICS.INIT@      k3)   !$'*-0 .@'GU'Hv'Hs/SD_COBOL32_INTF.OB  SD_COBOL32_INTF&EXTC_SD_SHUTDOWN_CALLSCOBCLOSASD_COBOL32_SHUTDOWN )  .@'G`/'Hv'HtAiSDCALCULATOR.OB  SDCALCULATOR )UD.SHORT_STATIC ! UD.STATIC  "SC.CODE # SD.CONSTANTS% PROG_ID_HEAD !PROG_ID  5PROG_CT  %?CBDPT '?CBANSI    -  -. SDCALCULATOR  SDCALCULATOR.DS5+ SDCALCULATOR  -32  P Calculator Help| F ,000000000000000000  <5+ NN 00 RE+-x/=* 1240+0000000000000000# z000000000000000{000000000000000{000000000000000{   000000000000000{00  0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    16/% SDCALCULATOR_TITLE_ONE SDCALCULATOR_TITLE_TWO SD_ALT_EXIT_KEY DESCE DTABE DDELE DCR E D E DClrE DMemE  D ^ E! D x E" D< E# D+|-E$ D >E% DFrME&  D v E' D / E(3) D1ED2ED3ED4ED5ED6ED7ED8ED9ED0 E) @D- ED= ED+ ED.ED E* TM Press DSPACEE for Help+ hDSPACEE, pClear FunctionsEntering Data- Memory FunctionsDshiftE.  Moving the Calculator/  Math Functions0  Leaving the Calculator1 %Exit2  %Tape Clear3  %Delete Digit4  %Return Result5  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 6 is somewhat different from/ a desk-type calculator. See the additional help for the math'  functions (+ - x / =) for details. For additional information about a particular0  key, press that key now. Otherwise, press 7  to return to the Calculator...8wm 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.9=3 P Pressing this key deletes the last entered digit or decimal point from the display.:u 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...;% +Use the numeric keys to enter the digits of<( anumbers to be used in calculations. Excess digits=) will be ignored. If the period (.) key is pressed,>B8  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...@*    There are ten separate memories, numbered 0 through 9.A7-  Copies the number currently in the display into memory number 0. An B8.  ( will appear in the display whenever this memory contains a nonzero value.C4*  E Copies the number currently in memory number 0 into the display.D(  Same as unshifted versions, except after pressingEbX  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...F  " 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. GWM  You may move the calculator partially or even completely off the screen if desired.Press any key to return to Main Help screen...H   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 aIyo  s 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 Jj` 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...K  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:LB8  Normal exit. Restarts the interrupted input with the contents of the input field unchanged.M VReturn 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...N %COBEXCP O %COBDSCL P %COBTMP1 Q %COBTMP2 R %COBTMP3 S %COBCHAR T % COBEFLP U %COBWFPV %COBFLPW %COBESKY X  COBSINSPECT Y  COBINIT Z  COBSWITCH [  COBS TOP \  COBEXIT ] COBSCREEN_DISPLAY ^ SD_SET_SECONDARY_PROGRAM_NAME _  SD_TURBO_FULL `  SD_GET_VALUEa  SD_NEW_WINDOW b  SD_DRAW_BOX c SD_GET_WINDOW_VIEWd SD_PUT_WINDOW_VIEWe SD_NEW_WINDOW_VIEWf SD_REMOVE_WINDOWg  SD_TURBO_RESETh SD_MOVE_WINDOW_UP i SD_MOVE_WINDOW_DOWN j SD_MOVE_WINDOW_RIGHTk SD_MOVE_WINDOW_LEFT l SD_RETURN_INPUT m  SD_READ_CHARn ! o  !p  ! q  !r  !  s  ! t ) !  u  ! v 8 !  w  ! x G (!  y  ! z V {  &4 |  Z}  08 ~  \|<    :<   i4    D4   v8    N8   <    X<   4    b4   8    l8   <    v<   4    4   8    8   0<    <   DA   A  VC   C  hE   E  zG   G  A   A  C   C  ,E   E  9G   G  FA   A  SC   C  `E   E  m G  G  zA     A   .E   E  @G   G    %4 |4  :4  4 (  @4  F  NF  3  T3   [E 3  `3   gE  l4   {4   4   4   4   4   4   4    4     4     4   4 @3  F  (       E      X       " e      F   z       &        (       :       L   "      F       O      X                *     z        ,      9        ( J H    e         t  &   &   ~     ;         o        z    L          b         $  (  @     4'     f  "    t"  '    }'  (,     ,   5(1     1   B<6    60# O 6   6& r   r"                !  L "  #  $UK CGC@ C=C5C)C$C!pdhH"fFm|tTcCdre,X0C0C`CC@A0H% P CalculatorSCREEN DEMON@INPUT& d@OUTPUT@CONSOLEApA` M.9D'% zAAAA*/x-+=ER YN(& APA@A A0AA)cSDCALCULATOR.FCBS * 1+ uu@CONSOLE, 2 -2 2.12/E82[m€206,2F1 ut@OUTPUT 2 3 33 34135E83[m€366,3F7 ut@INPUT8 4 94 4:14;E84[m€4<6,4F= SDCALCULATOR.DE>  ?  DERR.REL@  HA  HB 9Y9 999)))) yY )YY)4y()'yYIi6nl8Ypl$P788)) y) 7 ' * - 0!58 ;"?D S V Y \ _ b#gj m p s v#z}     C )) $y) 8i7)4yi7yY)'yYIi77IIY9)9)9) )<9 Y9"9$)L9()()L)$)") )<))) 7I) 98)4yi8yY)'yYIi88I#I      - 0 658 F l os x5z      5 D YY9)90)924) )l98Y9:9<)|9@)@)|)<):)8)l)4)2)0$ 8#I) 9)6tlrhY:)sY&$"   1 48 =5? H K N Q T W#\_ g j$or u x { ~%    % E <x|y)'yYIi>>@?AY()'yYIiBCx|IYy)'yYIi>>@ ? A   %   &! / 2 5 8 ; > A D T W Z ] ` d'il z }      F  ()'yYIiB Cx|IY)yy)$yy) xyy) ֜yy) yy) (yy) Tyy) hyy) |yy) yy) ̋y      !(&+ . 5 8 ? B I L S V ] ` g j q t { ~     G y) ؋yy) ̜yy) yy) yy) yy) yy) 0 yy)D\yy)Vdyy)hlyy)zyy)Dyy)Lyy)Tyy)œ      " % , / 6 9 @ C J M T W ^ a h k r u |      HzF yy)Ԝ,yy)4yy)?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K  600L  700M 8000000000000000{N  @00O  B+0000000000000000 P  K0 Q  L01R  M00S  N+0000000000000000 T  W1 U yy)RyyƉ@iL)NP)9RYTV)V)T)R)N )Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy)   ( - 023 9 < C F M P W Z a d k n u x        V yy) *,yyƉ@iX)Z\)h9^Y`b)b)`)^)Z# |ƉpΉ9ȇ)9Ni9ȧiƉ@ij)ln)49pYrt)t)r)p|)l#J ) ƄER8)31Y   + 0 326 : = F Q X [ y ~ 2    ) W =)NY9v)v)ExR)ƉpΉi=yΉp$؎)i)Ƅ؄E8R=8)x ` =)* !  ) / C F K N T ^ a f i x { ~    X  ~I )igExRxlI)lćiixƉΉpi8ƉpΉiExRx))Ƅؤ I ) ))Ĝnyi )  x I Ɖy@pi)ȜyyƉ@    " % 3 6 C F L R e h t { ~      Y ix)z|)9~Y)))~Ȟ)z#Ʀ x)yyƉ@i)@)9Y))))# )/x98lI)ćiix))y))ޜy))Ĝy)ix)+) l  !2$ + . N S V2Y b h q w z        Z\ BI)9"ći)0i)!9 )clI)i9"i)i . lI)ćii ))y))ޜy   , 4 : = K N V Y [  9\  X01]  Y0 ^  Z1 _  \+0000000000000000 ` f000000000000000{a  n+0000000000000000 b x000000000000000{c 000000000000000{d  0 e  00f  +0000000000000000 g  0 h  00i ))Ĝy|ƉpΉi9$)9i9$iƉ@i) )49Y)))|)#J xlI)އii8))ޜy)+i)HlI)9Jći)0i)I9H)clI)i9Jii ӄ-x     $ + . L Q T2W \ b e q t }      j L ń*8xX8Ì剉8xЄ Ì鉉/8x҄ +8Ì88̄Ƴ=,88ԄƪxÌ8Ìs8Ì8Ee8      # & + . 3 < ? D J M U X \ b k n r u z }     k း8ʄƒÌ8Ì8Rr88)ȄƤ }`I )Ì቉8Dd8)|ƉpΉ9L)9fi9LiƉ@i) )49Y)))|)#J        ! / 2 A D I O ] ` i t { ~   2 l  ÌxCcx Ɖpyi P) ؄$))̇y))܇y))y))y))ޜy))Ĝy)C?))ܔPdy)Pyy)dy     " . 1 4 ; > F I Q T \ _ g j r u {       m  &y) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i) )h9Yž)ž)))# |ƉpΉ      " % , / 6 9 @ C J M T W ^ a   2    n  9)9vi9iƉ@i) )49YԞ)Ԟ)Ҟ)|)#J  ))y))ޜ&y))Ĝ(y|ƉpΉi9)9钔i9i    1 6 92< F I Q T \ _ c f o {  o  rp  tq  lr  +s  -t  00u  "v  HƉ@i) )49Y)))|)#J  ÌxTtx ))P$y)Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy)   $ '2* 0 3 8 > L O U X _ b i l s v }        w  yy) Мyy) yy) yy) *,yyƉ@i))h9Y))))# |ƉpΉ9)9hi9iƉ@i))49Y)))|)#J  Ì       # & F K N2Q U X a l s v   2   x  |x +x)-|ƉpΉ9 )9掔i9 iƉ@i ))49Y)))|)#J 8)+|ƉpΉ90)9i90iƉ@i) ")49$Y&()()&)$|) #J     $ / 6 9 W \ _2b i l o x      y  D  Ì㉉8Mm8ƉpΉ@i Ì눹x)/x9x)+)TlII9VÇi)0i)U9T)bi9Ty iIIII0IƉp0Ή 0i Ì牉xF2     ' * 2 5 ? E R Y p5w         z  fx ƉΉp@)+i)dlII9f܇i)0i)e9d)blIIi9fi))Ĝ*y) i94)968)9:)0)x9>Y9@9B)B)@)>)x):Ğ)8)6)4 )yyh)yh)湄|ƉpΉi9    % 5 : F I V t }         {p )9ʔi9iƉ@iJ)LN)49PYRT)T)R)P|)L#J  Ì퉉 )/x98 )+)lII9Çi)0   / 4 72: @ C O U c j |   q}   ~  00  "  0   0   0   0   0   0   00  i)9)bi9y iIIII0IƉ\Ήp \)+i)lII9܇i)0i)9)blIIi9i))Ĝ0y) i9`) 9bd)9f)0)9jY9l9n)n)l)j)О)fĞ)d)b)` )yyh)yh)湄|5 & 0 7 G L X [ h           ƉpΉi9)9di9iƉ@iv)`xz)49|Y~))~)||)x#J Á ƄÌY ÌY ÌY Ì Y    ; @ C2F J M Q T Y \ a+fk n s,x}  -  . aÌ)NYÌ񈹈)NYxÌ󈹈) NY8Ì) NY 8Hh8) x;I lI)8އii    +  % ( +,04 7 > A D-IM P W Z ].bf l r     xlI):ii) ) yÄilI)ܜއii)yiIå9)+)lII9 އi)0i) 9)blIIi9 ii|ƉpΉ9 )9 i9 iƉ@i))49      " ' - 0 : A5C H P W g l u x      Y)))|)#J  .I lI)<އii)) (y))>y) (yyi)+)0lII92އi)0i)190)blIIi92ilI)@އii)yiI)) B   2 " ( + 7 : B E K N Y ` p u }    5   FyilI)Dćii8)+)<lI)9>ći)0i)=9<)clI)i9>ii :I ))ܔPdyƉpΉi9@)9ھ,i9@iƄ?)Pyy)dyy)      0 6 J M W c j m r u |       7        tl   L   U   vj   T  i ~  f   8   5    ;   9  > M  < O  w   u   +0  EX.SCA  EX.ADD  EX.SUB  EX.MUL  EX.DIV Μxyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i)`)h9Y))))# |ƉpΉ9d)92       & ) 0 3 : = D G N Q X [ {  2      qi9diƉ@i))49Yž)ž))|)#J  ~I =ƉpΉi تI+YI-YiIxYiI/YiJ mƉpΉ؄$i+ ))9y)pi9Yi䔙Y)aFYiY  )  & + .21 < H K S s v { ~     -   ƉΉp9()pi9(Yi.0Y24   . N Y N> P@ RB TD n > n^ p` rb td ^ `)ii - ƉΉp9))i9y)pi9YiY9YiY     Y  6 7 27:6Q6n u   86     ¦     ✩ 䔩)ii x ))9yƉΉpi9)pi9Yi&(Y*,9Yi68Y:<  & 6 V ) VF XH ZJ \L v FY vf xh zj |l f h)ii / ƉΉp6, 3 A K z966    9 ))i9 y)pi9 YiY9 YiY  )     Y      ڦ        )iiƉΉp|yΉi94)94i94iƉ@i )B"$)49&Y(  76@:I6`6}         W5 *)*)()&|)"#J  }I ƉΉpքƎ){i   2 % ( - 0   C i  A k              }!"#$%&'()*},{./}JKLMNOPQR:;<=>?@JKLMNOPQRABCDEFGHISTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz}|{~  $  &00  (d Ž{Ȁ))ܔPdy)Pyy)dyy) xyy) :yy) Xyy) vyy) ȋyy) ܋yy) Мyy) yy) yy) *,yyƉ@i,)B.0)h92Y46)6)4)2      % ( / 2 9 < C F M P W Z a d k n u x    c).# |ƉpΉ9p)9i9piƉ@i>)C@B)49DYFH)H)F)D|)@#J  ~I ƉΉ<i-)99Y))) H)$( % ) , //4B E Q T0Y\ _ i l o r u x$}     y ) 8Ìs8)xY I Ì቉8Dd8Ì8Cc8Ì8Tt88) /x98.Ì |88)2    %)*4 7 < B H K P V \ _ d j z      U  Ì㉉8Mm8Ì뉉8Ì牉8Ff8Ì퉉88) Ì Ì       # ( . 4 7 F I P S          5   7      ~         W  Y r8Ì8Ì 8Ì8Ì񉉉8Ì󉉃8Ì88)NL -*8xX8Ì剉8Ì鉉8/+8Ì8=,8)A?xÌ8        # & + . = C I O U X ] ` e k q t y       8Ee8Ì8Ì8Rr8))}ݎ}ۀ ~gI )Ɏǀ) yy) yy) yy) yyƉ@i)H)9Y))) )$ ) I )fd)        " ( I L S V ] ` g j   2   yy)(\yy):dyy)Llyy)Dyy)Lyy)Tyy),yy)4yy)*HPU[_din s SD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_CREATE_FLOAT_WINDOWSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_WINDOWSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_DRAW_BOXSD_GETCHARSD_OUTPUT_STRINGSD_MESSAGE_JSRSD_SYS_ERROR_MESSAGE_JSRSD_ERROR_MESSAGE_JSRSD_MEM_ALLOCATESD_MEM_FREE_BPSET_FLD_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_TURBO_FULLSD_TURBO_RESETSD_SET_SECONDARY_PROGRAM_NAMESD_MENUSD_READ_MAILMAIL_INDICATORMAIL_INDICATOR_SIZEMAIL_VIEW_LINEMAIL_VIEW_COLUMNMAIL_VIEW_HEIGHTMAIL_VIEW_WIDTHSD_INPUT_MAIL_TITLEPERIODIC_INTERVALNONFN_TBLNONPRT_TBLNULL_TBLICTRLICTRL2CTRLAWDSCAWPOSAWOFSAWATRCON_USERNAMESD_WORK_DIR_PATHSD_IMMEDIATE_MAIL_DELIVERYSD_ALT_EXIT_KEYEXTC_SD_PERIODIC_CALLSEXTC_SD_PRE_PROC_CALLSEXTC_SD_SCREEN_SAVER_CALLSSD.SYSCALL  4 a   - 6 I [ m SD_SEND_MAILSD_INPUT_MAILSD_OPEN_MAILSD_CLOSE_USERS_PO_BOXSD_LOCK_PO_FILESD_UNLOCK_PO_FILESD_CHECK_FOR_NEW_MAILSD_PO_BOX_CHANSD_PO_DIRSD_READ_MAIL_ACTIVESD.SD_MAIL_SUPPORTUI.SD_MAIL_SUPPORTUD.SD_MAIL_SUPPORTSC.SD_MAIL_SUPPORT ^: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{|}~<> =                                                MSG.00000  (  !  @j"  D#  $  %  &  '   (  !)  "*  $+  &,  ,-  ..  0/ (0 21 S2  23  34  4 5  56  67  88  :9  ;:  <;  ><  @=  B>  DVYYNYNWW?  H@  IA  JB  LC  ND  OE  QF  RY G S Select recipient: select, exitH)Y) xйy9)x)9) ™) ™)8)xщ8)8Y9) ™) ™ )85)) )Yѩ8YY)ѹ 9 )II3Y08 Ή )@9Yy89F) Yɇ8YyqIWARNING: Unable to set SCREEN DEMON `@ON Ready For Mail' flag))YyqY)IIY9i)II):9YY9ɇ) 9)9Yyɇ) Y9y)E))N )))N )) )@ lY oIx9 * 99) ݊x9) Y9i)) y) 7) ߇ x9Y99)) x9)9 0x)) y) 8) ѧ)E)   889) Unable find SCREEN DEMON Post Office directory 'SD_POST_OFFICE' in the SCREEN_DEMON directory. The SD_INIT_MAIL macro will create this directory.Y2IY9iII39) GUnable to open SCREEN DEMON Stamp file SD_STAMP_DEPTY1   ! &+)*,)/(26 >A&D'GO*T1Z3`:ek2q%v 13 2   8  ?   ?    ? + 1?7 d n?t x.} 9   ?  ? ?.Z a n.    ?  I092) YyqI LUnable to read SCREEN DEMON Stamp file LII3x9V) ~B8 Y 8 ?xY9Yx x븴98) Yy% ~Unable to obtain a message number from SCREEN DEMON Stamp DeptYy% }Y089*) Yyq yUnable to access recipient's SCREEN DEMON Post Office Box)  )@j9)D9I9YY Ȅ)(湁Y9Y$IY9i)9) 9Y9YyP) 9YyX) yyyiY9)N)8 )Y)9yЉ9Y) 9Yb)yyiy)Ny)8)YyЉ9Y) 9Y9)d9j)yy)Ii) 9YJ89r)yyi) Ii) 9Y096) Yy r9>) iUnable to write message to message text fileUnable to create message text file )@8y) Yi)@Yy88) Y Y9i9 Y )@9I9YY8)99)9)Yy‚)yx)Yy)$9)+9YY9Y)9YY99YLYy{9) sUnable to obtain use of recipient's SCREEN DEMON P  ? ?% C H?M UZ `?  ?     ? ? ! 5?@ F.I L P k     .8 . ?<0@ G M R U?[.g l ?  ?   ?    ? ? J;ost Office Box))8))@)Yy)?IIi9i)9IyiIi)@)i9)YYi9Yy P {TYyq)A89)I8x)yйxzނxYI9IiY9ɇ.BOX)yYyy!yy))-9Yy)i9pIyy)-9Y)) 9Y9YYyyyyĩ)):9Y)):9Y)yiJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECYyÇɇSD_INPUT_MAIL)i)H))F)3x9) *Can't allocate memory for message line inputͮ  YyRTVX)~Z9h)"Y9yYyi)N)) )eY9yYyi)8Y9h)")Ѯ98)y888 T9x9h)"9)9Y)9Y)9YIyYiyi9)%)  x ! $[9hy)ޤyIiih@¹x9h~xIYRxx Jz) I) IY ?9iy) Y9yix 4Ή@ONΉ@ALL9i9)I) )8PYIYyN8Yny8 ~ -' s)Y)N)4yIΉy)PYIYyN8Yny82HM?R U \ b?m t? .  ?? ?)#/!5>] chlo,s v y |   ;.;9 F.P U?` fj px.?  ;)KX M ~- 3$-HD)Y)N)J )9ӁY  )K)Ѯ9)y)yx8 } i ~ 8 } OI)ӋyY9 K )Ӌyx9 )KY u )ӆ8Y)i9ӁY K Z ,)YIY8xx }#8 -)8 "$&())I ) 9Yi)y Ky)II) 9YK8Y9ih@ 9hYIx9 S) 89))))))9)􈸣9y)" yYyyix)x9)%)) ͅy) v |d89))))))Y99))x9ǣ9y)" yYyyi)ȁ98) )) ͅy)h vg    ͮ)F)H)O<>Y9@I9dx9 Y)RY9  YP Xy普yy  Yyyi Iy) )йxx8) >9 )J )|9Yi)  x 89hIx)|96)Y)щYd )" Y9i ) No Post Office boxes found)yyI9,)i8i 9)i8i@ON@ALL)@)@Y9y)IY9i9 )@9I;Rk;~; ; #&+ . 1 4 7; @CG/ .. % ( .3"9#@ C F I L R f/   $. B.K L 9yx8txY99)Ii IY9iyx))9)@9)9Yyx )9Yy) Y9)9I9yx)):9)y 9Y9,Y Y) y) Y9i )y"IY38 9Ή)9YY)Y)q)  "$&@)L9) xUnable to open Post Office directory! Stamp Department cannot be rebuilt!9Y9Y)Ii Y9999 )+9 Y) Yx)9yiYyP)~ŝ?    .+ /?= N?\ c?k n s ?  ?. ? ??        $Oi w?? M .@'G\'H}'HtgX SD_SPY.OB   SD_SPY<"Cp!/:SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTF '2 :G\l|)<Qar     3Sl 0 Pp x       + E R^ pSD_INITSD_SHUTDOWNSD_FLUSHSD_NEW_WINDOWSD_NEW_WINDOW_NO_INITSD_REMOVE_WINDOWSD_CREATE_WINDOWSD_FLOAT_WINDOWSD_SUSPEND_WINDOWSD_OUTPUT_STRINGSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_TIBSD_MONITOR_STRING_INTO_WINDOWSET_FLD_DELIM_TBLSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_SPY_REMOTE_INPUTSD_SPY_REMOTE_GETCHARMAP_IN_VM_RECORDRELEASE_VM_RECORDMAP_IN_CON_VM_RECORDMAP_IN_PID_VM_RECORDASSIGN_SD_CON_NUM_USING_LISTSD_GETCHARSD_DRAW_BOXSD_MENUSD_MEM_ALLOCATESD_MESSAGE_JSRSD_ERROR_MESSAGE_JSRSD_PROC_PRSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_DECLARE_CON_INTERRUPT_HANDLERSD_DECLARE_SIGNAL_HANDLERSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_SET_DELIMITER_TABLESD_CONSOLE_SET_TIMEOUTSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_MATCHSDDumpScreenAWDSCAWBUFAWOFSAWATRAWPOSTIBICTRLCTRLNONFN_TBLNONPRT_TBLSD_WORK_DIR_PATHSD_CONLOG_DIR_NAMEVM_CHANCONSOLE_CHANSD_CON_NUMSD_CUR_PIDPID_VMPID_FLAGSCON_FLAGSFLUSH_INTERVALACTUAL_CON_CHARACTERISTICSSD_CON_DEVICECON_USERNAMESD_INPUT_SEMAPHORESD.SYSCALLY\bt     SD_SPYSD_SPY_SHARED_DATASD_SPY_UNSHARED_DATAFUN_MENU_FLAGSSD.SD_SPYUD.SD_SPYSC.SD_SPY FN05020SCREEN DEMON 3.60.01Console Status DisplayConsole Log Status PID Username2Program   Select Console Enter console name or use arrow keys to position highlight to desired console.  DNEWLINEE selects console shown and provides menu of options. DESCE exits program.                 >~!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~     DSPACEE moves menu highlight. DNEWLINEE selects highlighted item. DESCE exits menu.G You are running SCREEN DEMON Console Status Display in View mode.Valid commands are:DESCE..........Exit to main screen (E)DSPACEE........Pause/unpause display (P)DUp ArrowE.....Move status line up (U)DDown ArrowE...Move status line down (D)DSHIFTE DHOMEE...Remote input begin/end (R)' (^C^C also exits remote mode) Press any key to continue...4 Do you want to exit Remote Input mode (Y,N)?       SD_SPY_TERMINATIONS.LOG    @  D                0         " f f   ll00:00   ! "  #  $  %  &  ~ '   (  )  *  +  ,  -  .  HNNYYNWW/  0  1   2   3   4  5 View|Logging|Terminate|All/Active|Next Page|Prev Page|Detail On/Off|Exit||Display a current image of selected console's screen and watch as it changes.|Record console sessions and play them back.|Force an orderly shutdown of the program now running on selected console.|Alternate between showing all consoles or just those active under SCREEN DEMON.|Display next screenful of consoles.|Display previous screenful of consoles.| ON: show all PIDs. OFF: only most recently active PID for each console. |Exit from SCREEN DEMON Console Status Display.||Begin Logging|End Logging|Resume Logging|Playback||Start recording events occurring on selected console into new log file.|Stop recording events occurring on selected console. |Continue recording events occurring on selected console into existing log file.|Play recorded sessions from selected console's log file. ||6 v7 ~8  ~9  :  ;  <  6 =  >  ?  @  A  B  C  D   E  F  G  H  I J K L  M  N  O P)! Viewed console already controlled by PID 99999@Q R S T  U  V W (X :Y  (Z  *[  ,\  -]  .^  0_  2`  4a  5b  7c  8d  9e :f)\iIIY)~Ȥ)  ;yIYY$I piΤІTւI9Y)CI"9Y)CIi89 ); Cannot allocate memory for loading SCREEN_DEMON.VM records 9 )1 dCannot access SCREEN_DEMON.VM file header record ̩Y)8bY)8Y̹IYIl )9 Y99yǂ )xI )9IY99yǂ8I 9Y99\yǃ8I0980)I):9Y0)yyyY9i8 )99Y99yLjxI098(Ɖ@  )9)9YY@(Ɖ@  )91Y9Y@8PROGRAMTERMINATELDETAIL9 )#  Error starting auxiliary SPY tasks )9IY9yǀx )8 )9r)9YyǫiIY։ALLII hyI) Yrb8  %9)4 wY)))ih jx)$8h)Yf0))x9Y)OyyjI  J > ! $ ' , 1*6+9 <OGOU Z ] c f i s       O  O# & 7O? B I LAQ?Y e |O    $O $O O   -O2 5 < ?  H K N S Z d m p s v {      8        gYlyY) ȫYYyIiY̱II ˨II8Y) ȫYYIiY̱IIYy ˨IyI)l YYقxY ˨I8Yxx) i8 I 8 y8 ޫYɣʣy)x)yйyq)ʀYIɐ8x) x˨Ԏ Iʫx8 )89 Yx9 )@ ),8Y Y8ã8ffɨ0)9Y)yy9 9 xləx)Il ~? a ~;9)AYIl8--- There are no consoles running a SCREEN DEMON program --- )Ir) fI8yYyf ) )B)Y)y)N)y9y)yfyɀ S xfG)9Y)yy 9f) YcYY'Y湻9 Nf)I9 f2) Iifj ~S ~lщ)hI) x) yy) )yIhIy)h0)QIIY9yY)PIj)Y      " ) 0 < E N b v                        E   5 !?* .52 9 B G J Y ] ` c h n u x }               ?      # ( 5 8 > R W ^@b g n@s v {        hfl)I) IXXi8 }9 ) @Error on input from console  |̎i) r) Yyyiu xr) Y) yyirΉ )иp |ry)iry) yirb8Il |[9 I8Specified console name is an unknown console device.)u xIu<syx )Qyqy)ZyzyAZazx WYur)$ {ۮ {  _8ˀxfjxYl {You cannot Terminate your own console!Specified console not active under Screen DemonA process with a status of OUT cannot be Terminated9hII {Q9V)& 9r)/ 9II {79z)3 ̣x8))yxI) X)xI))Ѹ }8 )9)YIY)Ny ~9Nn8Y8y븤9)6xx)ЩYy z`YYY      Do you really want to terminate that process? (Y,N)  Send     0 5 : F K V ] b8j n vz  @      &   #    % (-2 U Z ] c  % %           #E(F+ 2 9 @ C KN U!a;e y|     O i ing Terminate command to selected process...y ) Y )/щx8IyYY Ii9 9 N)I) yY9yyy9)yy)I9)yy) ݧI) 9Yi9 Y9YY ?i9 9) yy9!)ݧIyYy9x)yy y) YcYY'Y9L) yy Yy)yy) 9Yi9 Y9YY i9 9 ) yy9 )@I) 9Yi9 Y9YY  ))y   yyi9 9):yyyI)0Y)ȃYYyY) Y),9Y) 9YY) YcY))9Y) 9Yi9 Y9YYè9 )-9Y)Oyy) 9Yi9 Y9YYÙxYYÑ9 ) 9)9YYÉ8YYÂ8YYÀx terminated by at Console: PID: Status: Program: Screen image: Cursor position = (t)ڤ))u<sy { 8AZ zt~ȤIu {98IyI)BIy9R)yy)II):9Yr) ݧIY9Y w C V a e l o u z }                           & 2 8 ~                    @        ! - 0F5 8 > A I&p%          kx)x NIR98)9IIViewed PID is no longer running on selected consoleѸ x 8) azYEQ8PxUDRI   I fYԮ T)x)8)8)x))Y8)99x)9)98Y9) ™) v~ { ~x g)W TYIY ;C @ ~ã %IxY9) ™ҜXd r )9&) Yyy x))y 9 The process you are viewing is not the active one on that console. You must be viewing the active one in order to enter input mode.Y| 9)@9Y99y Br)9Y9y8  <)) YcYY'Y湁Y9 YIY9y)>։Y)Y) 艇y~)))yo9Y9Y‚999)=)2-*YIY) azYYxN)YYb)Yy|)x |))˙8)˙8) ʙ) ʙ ~)YNxUnable to connec O  ! ( - 2 ; @ C JKV-e2k p/s4x0             I           ! % + . E R X a s%v z  H  CO - / 2 4           *O<?BEHLQV _!t{ OO    N>OmLt to keyboard of viewed consoleCannot enter Remote Input mode for processes whose status is either `out' or `susp'.Viewed console is no longer active under Screen DemonProcess running on viewed console not responding)|)8) )8IYSѹ8)|)))˙8)˙8) ʙ) ʙ })YNyi 9)9Y99y8)8ɇ)YYbYvΣ|)) )xx x v8v฻)Y)8)8)ȫYyyxйzx)9)9)99)9) Y99)Vz) 9!ݧI ) ™y8))y 8 ~8)IɈx9z )yyYɺ z) YcYY'Y湳z)9 NݧIiz*) 9 IyYyqyz )I|)x9zJ)yyxzJ)y9vy8)0i9rIyy D EPausedRemInpyɀ898inact ))89xkill )89expire)8$xinput )89out ) 898susp 9xrun 艇y 19Y)OCO O         & + . 6 ? F K SOZ _ c8f i7l o    =               $ )@3@6 > G Q X b      nfY湤4艇 ^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 { | } ~ deleteTimOutcmshPr<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))y 8+)8Iy@yYyy!Iyy))-9Yy)i9\Iyy)-9Y)) 9Y9YYyyyyĩ)):9Y)湞YJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECyyX `XyYYUyIYSy     ! ,89OhO     O Oo,) 8 xI))IyyIYyyYiyIiI ҈ɇȉ艇y) 8x y)YyIIy") b xI))IyyIybyYiyIiI ɇȉ艇  " ( /4 E J U jm t        plq0l))  / T28:46r .@'Fq#'Hu'HuSCREEN_DEMON.H  /* ****************************************************************************** * $Id: screen_demon.h,v 1.4 1995/07/11 21:05:26 mark Exp mark $ * * $Log: screen_demon.h,v $ * Revision 1.4 1995/07/11 21:05:26 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 * ****************************************************************************** */ /************************************************************************* *** screen_demon.h *** *** *** *** C declarations for SCREEN DEMON routines and data structures *** *************************************************************************/ /************************************************************************* *** *** *** 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 *** *** *** *************************************************************************/ /* Define macro to convert a narrow bit number into a mask value */ #define MASKOF(bitnum) (1 << (15-bitnum)) /* Define size of an MV word relative to the sizeof() operator */ #define WORDSIZE sizeof(short) #define DBLWORDSIZE sizeof(int) /* If PARU.H has not been included yet, the needed symbols will be defined */ /* here, which saves LOTS of compile time if PARU.H is not otherwise needed. */ #ifndef $MXFN #define $MXFN 32 #define $MXUN 16 #endif #ifndef NULL #define NULL 0 #endif /* Screen size constants */ #define CPL 162 /* Characters per line */ #define LPP 24 /* Lines per page */ #define CPS (CPL * LPP) /* Characters per screen */ /* User Control word (CTRL) flag bit numbers */ /* Bits not listed are reserved, and should not be assumed to be zero! */ #define BYPASS_B 15 /* Bypass mode - screen watching disabled */ /* bit 14 is reserved */ #define REFSCN_B 13 /* Refresh screen at next flush */ /* bit 12 is reserved */ #define TURBO_B 11 /* Turbo display mode (optimized displays) */ #define PARTURBO_B 10 /* Turbo level is only partial, not full */ /* Note that TURBO bit must also be set */ #define FLUSH_B 9 /* A flush is necessary because a display */ /* string has been mapped in cur VIB since */ /* last screen output occurred */ #define UNDER_CEO_B 8 /* This process is running as an integrated */ /* application under CEO or CEO Light */ #define UNDER_WPSHL_B 7 /* This process is running as a Shell-compatible */ /* application under WordPerfect Library or Office */ #define NO_HOT_KEYS_B 6 /* If set, hot keys are disabled */ #define IGNRDLMODMAP_B 5 /* Ignore RDL modification zone entries, * compare entire image at flush time. */ /* User Control word (CTRL) flag bit masks */ #define BYPASS MASKOF(BYPASS_B) /* Bypass mode - auto features */ /* are disabled */ #define REFSCNF MASKOF(REFSCN_B) /* Refresh screen before next flush */ #define TURBO MASKOF(TURBO_B) /* Turbo display mode (display */ /* optimization is active) */ #define PARTURBO MASKOF(PARTURBO_B) /* Turbo level is only partial, */ /* not full. TURBO bit must */ /* also be set. */ #define FLUSH MASKOF(FLUSH_B) /* A flush is necessary because */ /* a display string has been */ /* mapped into cur VIB since */ /* last screen output occurred. */ #define UNDER_CEO MASKOF(UNDER_CEO_B) /* This process is running as an */ /* integrated application under */ /* CEO or CEO Light. */ #define UNDER_WPSHL MASKOF(UNDER_WPSHL_B) /* This process is running */ /* as a Shell-compatible */ /* application under */ /* WordPerfect Library */ /* or Office. */ #define NO_HOT_KEYS MASKOF(NO_HOT_KEYS_B) /* If set, hot keys are disabled */ #define IGNRDLMODMAP MASKOF(IGNRDLMODMAP_B) /* Ignore RDL modification zone entries, * compare entire image at flush time. */ /* Attribute flag bit numbers */ /* Bits in high byte are global for entire window and are */ /* are not stored with individual character positions. */ /* Bits not listed are reserved, and should not be assumed to be zero! */ #define DIM_B 15 /* Dim on */ #define BLINK_B 14 /* Blink on */ #define UNDER_B 13 /* Underline on */ #define REVRS_B 12 /* Reverse video on */ #define CHSET_1B 11 /* Low char set palette slot # bit */ #define CHSET_2B 10 /* Mid char set palette slot # bit */ #define CHSET_3B 9 /* Hi char set palette slot # bit */ #define PROTF_B 8 /* Protect on */ #define PAGEMODE_B 0 /* Window is in page-mode (won't scroll) */ #define ALTSET_B 1 /* Window is now in alternate char set */ #define ALTMAR_B 2 /* Alternate margins are in effect */ #define NOHSCRL_B 3 /* Horizontal scrolling is disabled */ #define PROTEN_B 4 /* Character protection is ENabled */ #define NOBLINK_B 5 /* Blink is disabled */ #define EIGHTBIT_B 6 /* Window is in 8-bit mode, so the top bit * of chars mapped into window is significant */ /* Attribute flag bit masks */ #define NOATTRBS 0 /* All attributes off */ #define DIMF MASKOF(DIM_B) /* Dim on */ #define BLINKF MASKOF(BLINK_B) /* Blink on */ #define UNDERF MASKOF(UNDER_B) /* Underline on */ #define REVRSF MASKOF(REVRS_B) /* Reverse video on */ #define CHSET_M (MASKOF(CHSET_1B)+MASKOF(CHSET_2B)+MASKOF(CHSET_3B)) /* Char set palette slot # */ #define PROTF MASKOF(PROTF_B) /* Protect on */ #define PAGEMODE_M MASKOF(PAGEMODE_B) /* Window is in page-mode */ /* (won't scroll) */ #define ALTSET_M MASKOF(ALTSET_B) /* Window is in alt char set */ #define ALTMAR_M MASKOF(ALTMAR_B) /* Alternate margins are in effect */ #define NOHSCRL_M MASKOF(NOHSCRL_M) /* Horizontal scrolling is disabled */ #define PROTEN MASKOF(PROTEN_B) /* Character protection is ENabled */ #define NOBLINK MASKOF(NOBLINK_B) /* Blink is disabled */ #define EIGHTBIT MASKOF(EIGHTBIT_B) /* Window is in 8-bit mode, so * the top bit of chars mapped * into window is significant */ /* Virtual window buffer structure */ typedef struct { char SDcharacter[CPS]; /* character plane */ unsigned char SDattribute[CPS]; /* attribute plane */ short SDcur_offset; /* cur cursor offset */ /* within char plane */ unsigned short SDcur_attrb; /* current attributes */ short SDPrimCharSetNum; /* prim set palette slot # */ short SDAltCharSetNum; /* alt set palette slot # */ short SDCursorType; /* Cursor Type: */ /* 0 = no cursor */ /* 1 = blinking underscore */ /* 2 = reverse video block   */ /* 3 = blinking reverse video block */ short SDKeybdLang; /* Keyboard Language: */ /* 0 = matches keyboard hardware */ /* 1 = US ASCII in K1, International in K2 */ short SDScrollRate; /* Scroll Rate: */ /* 0 = jump scroll */ /* 1 = smooth 5 rows/sec */ /* 2 = smooth 10 rows/sec */ /* The following definition of IMGSIZ must be maintained so as to */ /* match the aggregate size of the above fields. This is needed */ /* to have the entire structure round up to an even page in size. */ #undef $padSize #define IMGSIZ (CPS + CPS + (sizeof(short) * 7)) #define $padSize (((IMGSIZ + 2047) / 2048) * 2048) - IMGSIZ #if $padSize char SDVIB_padding[$padSize]; #endif } SDVIB; /** Note that in rev 1.31, the SDVIB structure ended with SDcur_attrb. **/ /** In rev 2.01, it ended with SDAltCharSetNum. **/ /* Window view descriptor structure */ typedef struct SDVIEW_struct { short SDViewVIBLine; /* Line # where view begins in VIB */ short SDViewVIBCol; /* Column # where view begins in VIB */ short SDViewTIBLine; /* Line # where view begins in TIB */ short SDViewTIBCol; /* Column # where view begins in TIB */ short SDViewHeight; /* # of lines occupied by view */ short SDViewWidth; /* # of columns occupied by view */ struct SDVIEW_struct *SDViewNext; /* Addr of next view, or */ /* NULL if no more views */ /* rev 2.01 view descriptor ended at this point */ unsigned short SDViewFlags; /* Flags for this view */ /* The following definition of `$size' must be maintained to match */ /* the aggregate size of the above fields. This is needed so that */ /* the size of the entire structure rounds up to an even number of */ /* words. */ #undef $size #define $size ( (sizeof(short) * 6) + sizeof(struct SDVIEW_struct *) + sizeof(unsigned short) ) #if ( $size - (($size / DBLWORDSIZE) * DBLWORDSIZE) ) short SDView_padding; /* extra word of padding if needed */ #endif } SDVIEW; /* Definition of flag bits in view descriptor flags word */ #define VWFCOM 1 /* Compress mode is on for view */ /* Window descriptor structure */ typedef struct SDWINDOW_struct { char *SDWndVIB; /* Byte ptr to window's VIB */ /* really a (char *)(&SDVIB) */ struct SDWINDOW_struct *SDWndAbove; /* Addr of descriptor of window above this one */ struct SDWINDOW_struct *SDWndBelow; /* Addr of descriptor of window below this one */ struct SDWINDOW_struct *SDWndActUp; /* Addr of descriptor of window above this one in active list */ struct SDWINDOW_struct *SDWndActDown; /* Addr of descriptor of window below this one in active list */ unsigned short SDWndFlags; /* Flags, see below */ short SDW_unused; short SDWndTIBLineOffset; /* # of additional lines to add to SDViewTIBLine of all views in window */ short SDWndTIBColOffset; /* # of additional columns to add to SDViewTIBCol of all views in window */ short SDWndVIBLineOffset; /* # of additional lines to add to SDViewVIBLine of all views in window */ short SDWndVIBColOffset; /* # of additional columns to add to SDViewVIBCol of all views in window */ short SDWndHeight; /* # of lines in window image buffer */ short SDWndWidth; /* # of columns in window image buffer */ SDVIEW SDWndView1; /* First wnd view descrip is */ /* contained in wnd descrip */ /* rev 2.01 window descriptor ended at this point */ short SDWndLeftMargin; /* Column offset to window's left margin */ short SDWndRightMargin; /* Column offset to window's right margin */ short SDWndOldLeftMargin; /* Save area for old left margin while */ /* alternate margins are in effect */ short SDWndOldRightMargin; /* Save area for old right margin while */ /* alternate margins are in effect */ long SDWndClone; /* addr of clone area for this * window, or zero if none */ /* The following definition of `$size' must be maintained to match the aggregate size of the above fields. This is needed so that the size of the entire structure rounds up to an even number of words. The definition is split into several lines to avoid a line too long for SCOM to handle. */ #undef $size #undef $size1 #define $size1 ( sizeof(char *) + (sizeof(struct SDWINDOW_struct *) * 4) + sizeof(unsigned short) ) #define $size ( $size1 + (sizeof(short) * 11) + sizeof(SDVIEW) + sizeof(long) ) #if ( $size - (($size / DBLWORDSIZE) * DBLWORDSIZE) ) short SDWnd_padding; /* extra word of padding if needed */ #endif } SDWINDOW; /* Window flag bit masks */ #define WNDINTF 1 /* Internal (allocated memory) VIB area */ /* instead of caller-supplied variable */ #define WNDFLOATF 2 /* Window is a floating window */ #define WNDWRPF 4 /* The last displayable char monitored */ /* into this window caused cursor to */ /* wrap to beginning of next line. */ /* Nonbinary monitor should eat next */ /* . */ #define WNDD400F 8 /* Host program has sent D400 cmds to this */ /* window. View descriptors refer to */ /* hardware windows, not true SD views. */ /* Definition of optional input cache structure for SD_READ_CHAR */ /* and SD_GETCHAR calls. */ #define SD_INBUF_SIZE 32 /* This size is an arbitrary number */ typedef struct { short IBSIZE; /* Input cache buffer data area size */ short IBCHARS; /* # of chars currently in cache buf */ short IBUSED; /* # of chars used from cache buffer */ char IBDATA[SD_INBUF_SIZE]; /* Actual cache data area */ } SDINBF; /* Always initialize IBSIZE offset to the actual size of the input cache */ /* buffer before using this structure with SD_READ_CHAR or SD_GETCHAR */ /* Definition of packet for SD_INPUT_STRING calls */ typedef struct { char *ISBuf; /* Byte ptr to input buffer. If */ /* zero, buffer follows packet */ short ISSize; /* Input buffer size */ short ISChars; /* # of chars currently in input buf */ short ISLine; /* Screen line # */ short ISCol; /* Screen column # */ short ISCurOfs; /* Initial cursor offset within fld */ short ISTimeout; /* Timeout setting (-1 if none) */ char ISDelim; /* Returned delimiter */ char ISRtnFull; /* Return when full flag */ char ISNoEcho; /* Don't echo input flag */ } SDISPK; /* Menu packet definition used by SD_POP_UP_MENU call */ typedef struct { short SDPUM_line; /* 1st screen line used by menu */ short SDPUM_col; /* 1st screen col used by menu */ short SDPUM_default; /* Default selection's item # */ short SDPUM_sel; /* Selected item # */ char SDPUM_selstr[30]; /* Selected item's text */ char SDPUM_items; /* Menu items string, variable length */ } SDPOPUPMENU; /* Menu packet definition used by SD_MENU call */ typedef struct { short SDM_rev; /* Revision: use value of 2, 3, or 4, depending on the format used for the rev-dependent parts of packet */ short SDM_line; /* 1st screen line used by menu */ short SDM_col; /* 1st screen col used by menu */ short SDM_default; /* Default selection's item # */ char *SDM_items; /* Byte ptr to list of selections */ char *SDM_descs; /* Byte ptr to list of selection descriptions (NULL if none) */ short SDM_descline; /* Screen line where description goes */ short SDM_desccol; /* Screen column where description goes */ char *SDM_hdr; /* Byte ptr to header text for menu (NULL if none) */ char *SDM_ftr; /* Byte ptr to footer text for menu (NULL if none) */ char *SDM_keydefs; /* Byte ptr to key action definition table (NULL if none) */ char *SDM_inbuf; /* Byte ptr to SD_GETCHAR input buffer structure (NULL if none) */ char SDM_fmt; /* Menu format: H or V (horizontal or vertical) */ char SDM_wnd; /* Create new window for menu? Y or N */ char SDM_box; /* Draw box around menu selections? Y or N */ char SDM_dirsel; /* Allow direct selection? Y or N (typing 1st letter of an item @  selects and returns it) */ char SDM_cursm; /* Move cursor with highlight? Y or N (Y to keep cursor in front of hi-lighted item) */ char SDM_drawrtn; /* Display menu only, then return? Y or N (does not ask for selection) */ char SDM_topb; /* Top Boundary Type: W, R, I (wrap, return, or ignore on Up cmd at first item */ char SDM_botb; /* Top Boundary Type: W, R, I (wrap, return, or ignore on Down cmd at last item */ unsigned short SDM_hilon; /* Attributes that must be ON for highlighted item */ unsigned short SDM_hiloff; /* Attributes that must be OFF for highlighted item */ short SDM_timeout; /* Timeout setting (-1 if none) */ /* The format of the next part of the packet (8 bytes) is packet rev-dependent: Packet rev 2: char *SDM_delim; Byte ptr to field where menu delimiter can be returned (NULL if none) char *SDM_sel; Byte ptr to a short where # of selected item can be returned (NULL if none) Packet rev 3: char SDM_unused[3]; char SDM_delimiterChar; Delimiter char that ended menu char SDM_unused2[2]; short SDM_selectedItem; Menu item # that was selected Disregard the following weirdness, which makes using the simple names above possible: */ union SDMrevdep_ut { struct SDMrev2_struct { char *SDM_delim_rev2; char *SDM_sel_rev2; } SDMrev2; struct SDMrev3_struct { char SDM_unused[3]; char SDM_delim_rev3; char SDM_unused2[2]; short SDM_sel_rev3; } SDMrev3; } SDMrevdep_u; #define SDM_delim SDMrevdep_u.SDMrev2.SDM_delim_rev2 #define SDM_sel SDMrevdep_u.SDMrev2.SDM_sel_rev2 #define SDM_delimiterChar SDMrevdep_u.SDMrev3.SDM_delim_rev3 #define SDM_selectedItem SDMrevdep_u.SDMrev3.SDM_sel_rev3 /* End of packet rev dependent part of packet */ char *SDM_seltxt; /* Byte ptr to a string where text of selected item can be returned (NULL if none) */ /* New fields added in revision 3.50 (packet rev 4): */ short SDM_maxSize; /* Max # of lines allowed for menu * items if vertical menu, or max # * of columns allowed for menu items * if horizontal. Does NOT include * space for box border or * header/footer, if any. */ char SDM_sort; /* Sort flag - "Y" if menu items are * to be sorted into alphabetic order */ char SDM_unused3; } SDMENU; /* Key action numbers for optional table that SDM_keydefs slot in menu */ /* packet above points to. This table is defined as "unsigned char[256]" */ #define KA_UNSPECIFIED 0 /* Table provides no info for key, */ /* do default action for that key */ #define KA_IGNORE 1 /* Ignore key completely */ #define KA_SELECT KA_IGNORE + 1 /* Return current selection */ #define KA_NEXT KA_SELECT + 1 /* Move to next selection */ #define KA_PREV KA_NEXT + 1 /* Move to previous selection */ #define KA_ABORT KA_PREV + 1 /* Abort menu, return nothing */ #define KA_MAX KA_ABORT /* Highest key action number */ /* Structure of a console event log file record header: */ typedef struct { short LR_EVENT; /* Event code from list below */ short LR_IDATE; /* Timestamp date from ?ITIME */ long LR_ITIME; /* Timestamp time from ?ITIME */ short LR_LEN; /* Size of data area in bytes */ /* char LR_DATA[]; Data area (variable length, */ /* rounded up to word boundary) */ /* short LR_LEN2; A second copy of the data area */ /* size follows the data area. */ } SDCONEV_HDR; /* Event type codes used when logging console events, with structures */ /* of the data logged for each event. */ #define CONEV_SYNC 0 /* Synchronizer record */ /* (must be code zero!) */ /* This record's data has the following structure: */ typedef struct { char LRSY_CON[$MXFN]; /* Console device name */ char LRSY_USER[$MXUN]; /* Username */ char LRSY_PROG[$MXFN*2]; /* Program name (with ICOBOL */ /* program name appended, */ /* if applicable */ SDVIB LRSY_IMAGE; /* Complete screen image */ /* rev 3.5 adds the following fields: */ SDWINDOW LRSY_TIBWND; /* TIB "fake" window descriptor */ SDVIEW LRSY_VIEWS[LPP - 1]; /* Add'l TIB view descriptors */ } SDCONEV_SYNC; #define CONEV_DISPLAY (CONEV_SYNC+1) /* Screen output */ /* Data is the string that was output to console */ #define CONEV_INPUT_AFTER (CONEV_DISPLAY+1) /* Screen input - After */ /* Data has the following structure: */ typedef struct { short LRIA_LINE; /* Screen line # where input occurred */ short LRIA_COL; /* Screen column # where input occurred */ short LRIA_CUROFS; /* Ending cursor offset in field */ char LRIA_unused; /* hi byte of word containing delim */ char LRIA_DELIM; /* Delimiter char */ short LRIA_LEN; /* # of printable chars input */ char LRIA_CHARS[2]; /* Actual input data chars, not * including delimiter. * Not really 2 chars long, but * variable length given by LRIA_LEN */ } SDCONEV_INPUT; #define CONEV_GETCHAR_AFTER (CONEV_INPUT_AFTER+1) /* Single char read, Afterward */ /* Data is the single character returned to caller of GETCHAR */ #define HI_CONEV (CONEV_GETCHAR_AFTER) /* Highest console */ /* log event code */ /* SCREEN DEMON data areas */ extern $ref unsigned short CTRL; /* User control word */ extern $ref SDVIB TIB; /* Terminal Image Buffer */ /* This can also be considered to be the beginning of a SDWINDOW */ /* structure that continues through CHARSETS below */ extern $ref unsigned char TIBATR[CPS]; /* attribute plane of TIB */ extern $ref unsigned short TIBOFS; /* current offset of cursor in TIB */ extern $ref unsigned short ATTRB; /* current attributes of TIB */ extern $ref short CHARSETS[2]; /* primary & alt char set palette */ /* slot #'s for TIB */ extern $ref long TIB_UPD_COUNT; /* Counter that must be incremented */ /* each time the TIB is updated */ extern $ref SDWINDOW *AWDSC; /* Word addr of active window descriptor */ extern $ref char *AWBUF; /* Byte ptr to active window image buffer (actually an SDVIB structure) */ extern $ref short *AWOFS; /* Word addr of short containing cur offset into active VIB */ extern $ref unsigned short *AWATR; /* Word addr of short containing attributes of active VIB */ extern $ref short *AWSET; /* Word addr of cur VIB's char set indicators */ extern $ref char *AWPOS; /* Byte ptr to cur pos in active VIB */ /* *AWPOS must == *AWBUF + *AWOFS !! */ extern $ref SDWINDOW *FLOAT_TOP_WINDOW; /* Addr of top floating */ /* window's descriptor */ extern $ref SDWINDOW *TOP_WINDOW; /* Addr of top nonfloating window's */ /* descriptor */ extern $ref SDWINDOW *BOTTOM_WINDOW; /* Addr of bottom window's descriptor */ extern $ref short SD_CUR_PID; /* PID of current process */ extern $ref short CON_ACTIVE_PID; /* PID of process in control of TIB */ /* Although they are actually character strings, the next two items are * defined as word addresses! Cast to (char *) before using. */ extern $ref short CON_PROG[$MXFN]; /* Name of cur process's program */ extern $ref short CON_USERNAME[($MXUN + 1) / 2]; /* Username of current process */ extern $ref unsigned short CON_TERMCAPS; /* Bit flags describing the */ /* capabilities of the terminal */ /* currently in use */ /* Terminal Capability bit flag definitions: */ /* Mnemonic Bit Mask Means that terminal supports: */ /* ======== ======== ============================= */ #define TC_UNDER 1 /* underscore attribute */ #define TC_REVERS 2 /* reverse video */ #define TC_ALTSET 4 /* alternate character sets */ #define TC_COMPRESS 8 /* compress mode */ #define TC_HDW 16 /* hardware windowing */ #define TC_VSCRL 32 /* scroll up and down */ #define TC_HSCRL 64 /* scroll left and right */ /* (implies that display memory */ /* is wider than display screen) */ #define  ` TC_MARGINS 128 /* left and right margins */ #define TC_CHINDL 256 /* insert/delete character */ #define TC_LNINDL 512 /* insert/delete line */ /* Mnemonic for "all capabilities available" */ #define TC_ALL (~0) extern $ref short LOGOFF_INTERVAL; /* Inactivity time in sec */ /* before shutdown occurs. */ /* (-1 for unlimited) */ extern $ref short PERIODIC_INTERVAL; /* Time in sec between */ /* execution of periodic */ /* routines while an input */ /* is in progress. */ /* -1 = no periodic timeout */ extern $ref short FLUSH_INTERVAL; /* Max time in sec that can */ /* elapse between screen */ /* updates, which normally */ /* occur when an input */ /* begins when Turbo is on. */ /* -1 = no screen updates */ /* except at inputs */ extern $ref short ACCEPT_TIMEOUT; /* ICOBOL ACCEPT timeout setting */ /* SCREEN DEMON calls */ /************************************************************************/ /* NATIVE C CALLS */ /************************************************************************/ void SDControl(); /* Stores the given value into the Screen Demon user control word SDControl(ctrl); unsigned int ctrl; */ void SDSetAcceptTimeout(); /* Sets the timeout in seconds for the next console input to be executed. Use a value of -1 to indicate no timeout. SDSetAcceptTimeout(time); int time; */ void SDSetLogoffInterval(); /* Sets the maximum time in seconds that may elapse between input characters before the process is terminated due to inactivity. Use a value of -1 to indicate no logoff timeout. SDSetSetLogoffInterval(time); int time; */ unsigned int SDGetControl(); /* Returns the current state of the Screen Demon user control word. ctrl = SDGetControl(); unsigned int ctrl; */ unsigned int SDTurboOn(); /* Activates Turbo display optimization at either Full or Partial, depending upon which level was most recently in use. Returns previous state of Turbo setting, which can later be passed to the SDTurboReset() function to restore Turbo back to that. */ unsigned int SDTurboOff(); /* Deactivates Turbo display optimization. Returns previous state of Turbo setting, which can later be passed to the SDTurboReset() function to restore Turbo back to that. */ unsigned int SDTurboFull(); /* Activates Turbo display optimization at Full level. Returns previous state of Turbo setting, which can later be passed to the SDTurboReset() function to restore Turbo back to that. */ unsigned int SDTurboPartial(); /* Activates Turbo display optimization at Partial level. Returns previous state of Turbo setting, which can later be passed to the SDTurboReset() function to restore Turbo back to that. */ void SDTurboReset(); /* Restores Turbo setting to a previous state, as returned by one of the SDTurbo... functions above. SDTurboReset(prevTurboSetting); unsigned int prevTurboSetting; */ void SDBypassOn(); void SDDisable(); /* Disables Screen Demon. Hot keys, Turbo display, etc., will not function. */ void SDBypassOff(); void SDEnable(); /* Reenables Screen Demon if it is disabled. */ void SDDisableHotKeys(); /* Disables Screen Demon hot keys only. All other Screen Demon features remain operational. */ void SDEnableHotKeys(); /* Reenables Screen Demon hot key functionality, if it had been previously turned off using the SDDisableHotKeys() function above. */ void SDLoadTib(); /* Declares that the current terminal screen appearance matches the contents of the given image buffer. SDLoadTib(imgBuf); SDVIB *imgBuf; */ char SDReadChar(); char SDReadCharOnly(); /* Inputs a single character from the console. SDReadCharOnly is the same as SDReadChar except that it does not do hot key processing. An optional timeout argument can be specified for either version. If no timeout argument is given, no timeout is assumed. c = SDReadChar(); c = SDReadChar(timeout) char c; int timeout; */ void SDDrawBox(); /* Draws a box of a specified size into the current window at a specified location. The box drawing characters depend on the terminal model and whether or not line drawing characters are allowed for boxes (see USE_LINE_DRAW_CHARSET_FOR_BOXES? question in the SD_CONFIG file). The label argument is optional; if not supplied, the box will not have a label line. SDDrawBox(line, column, height, width); SDDrawBox(line, column, height, width, label); int line, column, height, width; char *label; */ void SDDrawVLine(); /* Draws a vertical line of a specified length into the current window at a specified position. The line drawing characters depend on the terminal model id and whether or not line draw characters are allowed for lines (see USE_LINE_DRAW_CHARSET_FOR_LINES? question in SD_CONFIG). SDDrawVLine(line, column, length); int line, column, length; */ void SDDrawHLine(); /* Draws a horizontal line of a specified length into the current window at a specified position. The line drawing characters depend on the terminal model id and whether or not line draw characters are allowed for lines (see USE_LINE_DRAW_CHARSET_FOR_LINES? question in SD_CONFIG). SDDrawVLine(line, column, length); int line, column, length; */ void SDSetLineDrawStyle(); /* Specifies whether double or single pixel LineDraw characters are to be used to create lines and box borders, and whether they are to be Bright, Dim, or Reverse Video. The declaration applies to the next SDDrawBox(), SDDrawVLine(), SDDrawHLine(), or window creation call that draws a box. After the drawing operation, the box style will be automatically set back to the default (double width, bright). SDSetLineDrawStyle(style) int style; Possible values for style are: #define LD_STYLE_DOUBLE_BRIGHT 0 #define LD_STYLE_SINGLE_BRIGHT 1 #define LD_STYLE_DOUBLE_DIM 2 #define LD_STYLE_SINGLE_DIM 3 #define LD_STYLE_DOUBLE_BRIGHT_RVID 4 #define LD_STYLE_SINGLE_BRIGHT_RVID 5 #define LD_STYLE_DOUBLE_DIM_RVID 6 #define LD_STYLE_SINGLE_DIM_RVID 7 Any other value for style is treated as double width, bright */ void SDSetBoxFillStyle(); /* Specifies a character and its attributes that is to be used to fill the interior of the next box to be drawn. If an unprintable character (such as a null) is given, the interior of the box will not be affected; this permits drawing a box around data already present on the screen without erasing that data. After the next box is drawn, the box fill style will automatically be set back to the default, which is normal spaces. SDSetBoxFillStyle(fillchar, fillattributes); char fillchar; unsigned short fillattributes; Values for fillattributes are the same as those for the attributes of a character in an image buffer. */ void SDDisplay(); /* Displays a given image to the terminal. SDDisplay(imgBuf); SDVIB *imgBuf; */ int SDDisplayIntoString(); /* Similar to SDDisplay, except that the characters that would be output to the terminal are returned in the given string instead. The return value of the function is the number of characters that were placed in the given string variable. There will not be a terminating null. count = SDDisplayIntoString(s, imgBuf); char *s; SDVIB *imgBuf; int count; */ void SDFlush(); /* Updates the terminal screen so that it matches the current virtual window images. Any screen output that Screen Demon has buffered will be sent to the terminal at this time. */ void SDRedraw(); /* Clears and repaints the entire screen. */ void SDGetImage(); /* Stores a picture of the current terminal image in the given image buffer. Floating windows are included in the picture. SDGetImage(imgBuf); SDVIB *imgBuf; */ void SDGetImageBelowFloat(); /* Stores a picture of th e current terminal image in the given image buffer, but areas normally obscured by floating windows appear as if the floating windows were not present. SDGetImageBelowFloat(imgBuf); SDVIB *imgBuf; */ int SDGetPos(); /* Returns the offset of the cursor within the current window. This can be converted to a line and column with the calculations: line = offset / CPL; column = offset % CPL; The resulting line and column values are offsets from home position, so that the first line on the screen is line 0, and the first column in a line is column 0. offset = SDGetPos(); int offset; */ SDWINDOW *SDNewWindow(); SDWINDOW *SDNewWindowUsingImage(); SDWINDOW *SDNewWindowNoInit(); SDWINDOW *SDNewWindowNoInitUsingImage(); SDWINDOW *SDCreateWindow(); SDWINDOW *SDCreateWindowUsingImage(); SDWINDOW *SDCreateWindowNoBox(); SDWINDOW *SDCreateWindowNoBoxUsingImage(); SDWINDOW *SDCreateWindowNoInit(); SDWINDOW *SDCreateWindowNoInitUsingImage(); /* The SDNewWindow and SDCreateWindow calls create a new Screen Demon window, possibly with a box. SDNewWindow always creates a full-screen window. SDCreateWindow creates a full-screen window internally, but only shows a portion of it on the terminal; the hidden parts of the window image can be ignored. All of these calls return a pointer to the descriptor of the newly created window. There are a few variations of these calls: (1) Full screen window without a box. Note that SDCreateWindow() with no arguments is equivalent to SDNewWindow(). SDNewWindow(); SDCreateWindow(); (2) Full screen window with a box drawn into it automatically at the location and of the size specified. SDNewWindow(line, column, height, width); int line, column, height, width; (3) Partial screen window with a box drawn as a border around it. The box parameters specify the position and size of the visible portion of the window on the terminal screen. The top left corner of the box represents line 1, column 1 of the window image, no matter where the box appears on the terminal screen. SDCreateWindow(line, column, height, width); int line, column, height, width; (4) Partial screen window with no border. The "box" parameters specify the position and size of the visible portion of the window on the terminal screen. The top left corner of the specified rectangular region represents line 1, column 1 of the window image, no matter where the region appears on the terminal screen. SDCreateWindowNoBox(line, column, height, width); int line, column, height, width; (5) The "...UsingImage" versions of the calls expect the first argument to be an (SDVIB *); other parameters, if any, are the same as specified for the non-"...UsingImage" versions. The specified image buffer will be used for the new window instead of an automatically allocated one. This allows the program to treat the window as if it were a memory-mapped display. Changes can be made directly to the image buffer, which will be updated to the terminal screen at the next flush. Note that a C program can access the current active window image buffer even without using the "...UsingImage" calls. The external variable AWBUF, defined as a (SDVIB *) always points to the current active window image buffer. SDNewWindowUsingImage(imgbuf); SDCreateWindowUsingImage(imgbuf); SDNewWindowUsingImage(imgbuf, line, column, height, width); SDCreateWindowUsingImage(imgbuf, line, column, height, width); SDVIB *imgbuf; int line, column, height, width; (6) The "...NoInit" versions of the calls function like the other versions, except that the contents of the new window image are not initialized to be the same as the current screen image. The "...NoInitUsingImage" calls retain the contents of the caller-supplied image buffer; a possible use for this is to display screens from a file. The "...NoInit" versions that do not supply image buffers start with a blank screen image. SDNewWindowNoInit(); SDCreateWindowNoInit(); SDNewWindowNoInit(line, column, height, width); SDCreateWindowNoInit(line, column, height, width); SDNewWindowNoInitUsingImage(imgbuf); SDCreateWindowNoInitUsingImage(imgbuf); SDNewWindowNoInitUsingImage(imgbuf, line, column, height, width); SDCreateWindowNoInitUsingImage(imgbuf, line, column, height, width); SDVIB *imgbuf; int line, column, height, width; */ void SDRemoveWindow(); /* With no arguments, the current active window is removed. SDRemoveWindow(); Otherwise, a pointer to the window descriptor of the window to be removed is specified. SDRemoveWindow(wndDsc); SDWINDOW *wndDsc; */ SDWINDOW *SDActiveWindow(); /* There are two calling formats/uses for this function: (1) Obtain a pointer to the currently active window's window descriptor. wndDsc = SDActiveWindow(); SDWINDOW *wndDsc; (2) Specify a pointer to the window descriptor of the window is to be made the current active window. SDActiveWindow(wndDsc); SDActiveWindow(wndDsc, offset); SDWINDOW *wndDsc; int offset; If a NULL window descriptor pointer is supplied, then a pointer to the current active window's descriptor will be returned in that field. The optional offset argument indicates the desired position of the cursor in the new active window. If the offset value is -1, then the position of the cursor in the former active window is used. If the offset argument is not supplied, then the cursor will be placed at the position specified by the new active window's image buffer cursor offset field. This second call format returns a pointer to the window descriptor of the window that was just made active as the function result. */ SDWINDOW *SDGetActiveWindow(); /* Equivalent to SDActiveWindow() above with no arguments. */ void SDSuspendWindow(); /* Deactivates the current active window, and makes the window that was previously active become the new active window. The deactivated window is not removed. */ SDWINDOW *SDTopWindow(); /* There are two calling formats/uses for this function: (1) Obtain a pointer to the window descriptor of the window that is currently the top nonfloating window. wndDsc = SDTopWindow(); SDWINDOW *wndDsc; (2) Specify a pointer to the window descriptor of the window is to be made the top nonfloating window. SDTopWindow(wndDsc); SDWINDOW *wndDsc; If a NULL window descriptor pointer is supplied, then a pointer to the current top nonfloating window's descriptor will be returned in that field. This second call format returns a pointer to the window descriptor of the window that was just placed on top as the function result. */ SDWINDOW *SDGetTopWindow(); /* Equivalent to SDTopWindow() above with no arguments. */ SDWINDOW *SDFloatWindow(); /* There are two calling formats/uses for this function: (1) Obtain a pointer to the window descriptor of the window that is currently the top floating window. Note that floating windows always remain above nonfloating windows. wndDsc = SDFloatWindow(); SDWINDOW *wndDsc; (2) Specify a pointer to the window descriptor of the window is to be made the top floating window. SDFloatWindow(wndDsc); SDWINDOW *wndDsc; If a NULL window descriptor pointer is supplied, then a pointer to the current top floating window's descriptor will be returned in that field. This second call format returns a pointer to the window descriptor of the window that was just placed on floating top as the function result. */ SDWINDOW *SDGetFloatWindow(); /* Equivalent to SDFloatWindow() above with no arguments. */ SDVIEW *SDNewWindowView(); /* Adds an additional view to a window. The new view is linked into the list of views for the window at a specified existing view. newView = SDNewWindowView(newViewDescription, existingView); SDVIEW *newViewDescription, *existingView, *newView; The re turned result is a pointer to the descriptor of the new view. Note that Screen Demon allocates space for the new view descriptor, and copies the given newViewDescription into it; the caller's view descriptor structure is not made part of the view linked list. */ void SDShiftWindowRight(); void SDShiftWindowLeft(); void SDShiftWindowUp(); void SDShiftWindowDown(); /* Shifts the visible contents of current active window in the direction specified. The actual position of the window on the terminal screen does not change. If no argument is supplied, the shift amount is one line or column, depending on direction. If an argument is supplied, it indicates the number of lines or columns to shift the window. SDShiftWindowRight(columns); SDShiftWindowLeft(columns); SDShiftWindowUp(lines); SDShiftWindowDown(lines); int lines, columns; */ void SDMoveWindowRight(); void SDMoveWindowLeft(); void SDMoveWindowUp(); void SDMoveWindowDown(); /* Moves the visible portion of the current active window in the direction specified on the terminal screen. The contents of the window do not shift. If no argument is supplied, the move amount is one line or column, depending on direction. If an argument is supplied, it indicates the number of lines or columns to move the window. SDMoveWindowRight(columns); SDMoveWindowLeft(columns); SDMoveWindowUp(lines); SDMoveWindowDown(lines); int lines, columns; */ void SDSetWindowSize(); /* Specifies the size of the portion of the current active window visible on the terminal screen. SDSetWindowSize(height, width); int height, width; */ void SDSetWindowPosition(); /* Specifies the position of the portion of the current active window visible on the terminal screen. SDSetWindowPosition(line, column); int line, column; */ void SDReturnInput(); /* Specifies input data to be returned to the input field where the hot key that invoked the current program (or subprogram) was pressed. If a hot key is not currently active, this function has no effect. In the call format where only the string is supplied, a strlen() function will be used automatically to obtain the length of the string; do not use this format if unprintable characters are being returned! To return only a delimiter character, pass a string length of zero. SDReturnInput(string); SDReturnInput(string, stringLen); SDReturnInput(string, stringLen, delimiterChar); char *string; int stringLen; char delimiterChar; */ int SDObtainInput(); char SDObtainHotKey(); /* Fetches the contents of the input field where the hot key that invoked the current program (or subprogram) was pressed. Can also obtain the hot key character itself if desired. returnLen = SDObtainInput(inputString, stringLen, hotKey); char *inputString; int stringLen; char hotKey; int returnLen; The hotKey argument is optional. The stringLen field indicates the maximum number of characters that can be returned to inputString. The return value of the function is the number of characters that were actually returned, or -1 if a hot key is not currently active. If only the hot key character is desired, and not the input area contents, use the alternate call hotKey = SDObtainHotKey(); char hotKey; */ void SDProcPr(); /* PROC's a specified program with arguments. SDProcPr(progcmd); char *progcmd; progcmd should be of the form "programname,arg1,arg2,...,argN\000" */ void SDSetCLIInitCmd(); /* Declares a CLI command string that will be executed whenever the CLI is accessed from the SD_CLI_INTERFACE hot key routine. SDSetCLIInitCmd(cmd); char *cmd; */ void SDCLICmd(); /* Calls CLI to execute a single command and then returns. Guaranteed not to leave the user at a CLI command prompt. SDCLICmd(cmd); char *cmd; */ void SDNotepad(); /* Without arguments, this function invokes the standard Notepad normalled accessed via hot key. Alternatively, a different notepad filename can be supplied as an argument. SDNotepad(); SDNotepad(filename); char *filename; */ void SDUserId(); void SDSetUserId(); /* Declares the name of the operator. Useful to differentiate between operators that sign on under the same AOS/VS name. The specified name remains in effect until the current program ends. SDUserId(username); SDSetUserId(username); char *username; */ void SDSetAndLockUserId(); void SDUnlockUserId(); /* SDSetAndLockUserID() is the same as SDSetUserID() above, except that the declared name will remain in effect for the current console until cancelled with the SDUnlockUserId() function. This allows the specified username to be passed across program CHAIN's and PROC's. SDSetAndLockUserId(username); char *username; */ void SDGetUserId(); /* Returns the username currently in use for the current console. This will be the username declared with the above calls if one has been made, or the AOS/VS username otherwise. The string where the username is to be returned should be at least 16 chars long. SDGetUserId(username); char *username; */ void SDSendMail(); /* Sends a Screen Demon mail message to a specified user under program control. SDSendMail(recipient, message, urgentflag, acknowledgeflag); char *recipient; char *message; char urgentflag; char acknowledgeflag; The urgentflag and acknowledgeflag are optional; if supplied, they should be either Y or N. If the string that "message" points to begins with an "@", the remainder of the message is assumed to be the name of a text file containing the actual message text. */ int SDPopUpMenu(); int SDMenu(); /* Invokes the Screen Demon pop-up menu routine. See the definitions of the SDPOPUPMENU and SDMENU structure typedefs above for a description of packet contents. SDPopUpMenu(popupmenupkt); SDPopUpMenu(popupmenupkt, label); SDPOPUPMENU *popupmenupkt; char *label; The label argument is optional. If not supplied, the menu box label will be "Select:". SDMenu(menupkt, items, header, footer, descs, selstring); SDMENU *menupkt; char *items, *header, *footer, *descs, *selstring; The string arguments are optional, and are simply an alternate way of specifying entries in the menu packet that are (char *) pointers. See COBOL SD_MENU call documentation for details. */ void SDMessage(); /* Creates a new window, displays a message in a box in that window, and waits for the operator to respond, then removes the window. SDMessage(msg); SDMessage(msg, line, column); SDMessage(msg, line, column, label); char *msg; int line, column; char *label; If no position is specified, the box will be centered. If no label is supplied, the box will not have a label. To supply a label but still have the box centered, pass line and column values of -1. */ void SDMessageOnly(); /* Same as SDMessage() above, except that the box is drawn into the current active window, and then returns. It is the caller's responsibility to remove the box, and to ask for user input if desired. SDMessageOnly(msg); SDMessageOnly(msg, line, column); SDMessageOnly(msg, line, column, label); char *msg; int line, column; char *label; */ void SDErrorMessage(); /* Same as SDMessage() above, except that there is no label argument. The box will always have a label of "Error!". SDErrorMessage(msg); SDErrorMessage(msg, line, column); char *msg; int line, column; */ void SDSysErrorMessage(); /* Similar to SDErrorMessage() above, except that the first argument is an AOS/VS system error code. This function will look up the text of the message associated with that error code (in :ERMES), and display that in the box. If a message is supplied with the call, this message will be displayed above the system error message in the box. A box label of "Error!" will always be used. SDSysErrorMessage(errorcode); SDSysErrorMessage(errorcode, msg); SDSysErrorMessage(errorcode, msg, line, column); int errorcode; char *msg; int line, column; */ int SDAskQuestion(); /* Creates a new wind ow and displays the given question in a box in that window along with a menu listing the given answers with the specified default answer highlighted. When the operator selects one of the choices, the window is removed, and the value of the function is the number of the item selected, or zero if the operator aborted the question by pressing . SDAskQuestion(question, defaultsel, answers); SDAskQuestion(question, defaultsel, answers, line, column); SDAskQuestion(question, defaultsel, answers, line, column, boxlabel); char *question; int defaultsel; char *answers; int line, col; char *boxlabel; answers is a string containing a list of allowed answers in the same form as the SDMenu items string. defaultsel is the item number within this list of answers that is the default selection to be initially highlighted. If no position is specified, the box will be centered. If no label is supplied, the box will not have a label. To supply a label but still have the box centered, pass line and column values of -1. */ void SDInputString(); /* Function that inputs a field on the screen. See the definition of the SDISPK packet typedef above for information about the parameters for this call. SDInputString(pkt); SDISPK *pkt; */ void SDSetAcceptUppercase(); void SDSetAcceptLowercase(); /* Specifies case conversion for the next field input to be executed. */ void SDSetAcceptCursorOffset(); /* Specifies the number of character positions from the beginning of the field where the cursor should be placed when the next field input starts. SDSetAcceptCursorOffset(offset); int offset; An offset value of zero implies the first position of the input field. If the offset value is negative, the cursor will be placed just after the last nonspace character in the field. */ int SDGetAcceptCursorOffset(); /* Returns the offset of the cursor within the input field when the most recently executed field input ended. offset = SDGetAcceptCursorOffset(); int offset; */ void SDDiscardTypeAhead(); /* Requests that the contents of the system ring buffer for the current console be discarded when the next input is executed. This applies to SDInputString(), SDReadChar(), SDGetChar(), in addition to standard C getchar() calls, etc. */ void SDGetHotCalledFromName(); /* Returns the name of the program or subprogram that invoked the current hot key routine, or spaces if a hot key is not currently active. SDGetHotCalledFromName(name); char *name; The name string must be at least 32 characters long. */ void SDSetSecondaryProgramName(); /* Declares the name of the currently active routine. This function can be used to identify different subprograms or linked-in subroutines as separate from the main .PR. These names will be visible in the SD_SPY program. If a second argument is supplied, this function will return the name of the previously active routine. This permits declaration of a new name on entry to a subprogram, and restoration of the old name on exit. SDSetSecondaryProgramName(newProgName); SDSetSecondaryProgramName(newProgName, oldProgName); char *newProgName; char *oldProgName; Note that oldProgName should be at least 32 characters long. */ void SDPutValue(); /* Stores an item of a given name with an arbitrary value. The value is treated as a raw string of bytes. If the item already exists, its value will be changed to the new value. SDPutValue(itemName, value, valueLen) char *itemName; char *value; int valueLen; */ int SDGetValue(); /* Retrieves the value of an item previously stored using SDPutValue(). returnLen = SDGetValue(itemName, value, maxLen); char *itemName; char *value; int maxLen; int returnLen; The maxLen argument specifies the maximum number of bytes that are allowed to be returned in the value argument. The returned function value is the number of bytes actually returned in the value string field. If the requested item was not found, a value of -1 will be returned as the function result. */ int SDTemplateMatch(); /* Compares a candidate string against a template string, and returns nonzero if the strings match. result = SDTemplateMatch(candidate, template); char *candidate; char *template; int result; */ unsigned int SDGetTermcaps(); /* Returns a set of bit flags indicating the capabilities of the current terminal. Optionally, the last three characters of the sequence that would be returned from a Read Model Id command sent to the terminal can be returned by this function. The first of those characters is the actual model id indicator. termcaps = SDGetTermcaps(); termcaps = SDGetTermcaps(modelid); char *modelid; unsigned int termcaps; */ void SDGetConsoleDeviceName(); /* Obtains the name of the process's console device. SDGetConsoleDeviceName(conname); char *conname; where conname is a pointer to a string at least 32 bytes long that will receive the name of the process's console device, which will be null-terminated. If the process has a console, the returned name will be that console; e.g., CON14 or VCON6. If the process is running in a batch stream, the returned name will be the first word of the batch stream name, followed by the stream number, if any; e.g., BATCH1. If the process is not running in batch and does not have a console, the returned name will be NOCON, where is a number from 0 to the maximum number of NOCON's declared in SCREEN_DEMON.CONTYPES. */ void SDMonitorString(); /* "Displays" a string of a specified length into the current active window. The terminal screen and the internal terminal image are not affected by this call. SDFlush() must be called to actually update the screen with the "displayed" string. SDMonitorString(string); SDMonitorString(string, stringLen); char *string; int stringLen; If the length argument is not supplied, a strlen() function will be automatically applied to the given string to obtain its length; do not use this format if unprintable characters exist in the given string! */ void SDMonitorStringIntoTIB(); /* Similar to SDMonitorString() above, except that the string is "displayeD" into the internal image of the terminal screen. The current active window image and the terminal screen are not affected by this call. The purpose of this call is to make Screen Demon aware of a change to the terminal screen that it would be otherwise unable to know about. This includes output sent to the terminal via the SDOutputString() function described below. SDMonitorStringIntoTIB(string); SDMonitorStringIntoTIB(string, stringLen); char *string; int stringLen; */ void SDOutputString(); /* Outputs the given string to the terminal without updating either the current active window image or the internal terminal image. SDOutputString(string); SDOutputString(string, stringLen); char *string; int stringLen; If the length argument is not supplied, a strlen() function will be automatically applied to the given string to obtain its length; do not use this format if unprintable characters exist in the given string! */ char SDGetChar(); /* Same as SDReadChar(), but allows optional cache buffer. See definition of the SDINBF structure typedef above for information on the cache buffer. c = SDGetChar(); c = SDGetChar(timeout); c = SDGetChar(timeout, cache); int timeout; SDINBF *cache; To pass a cache buffer without a timeout, pass a timeout value of -1. */ void SDSetFieldDelimiterTable(); /* Specifies a delimiter table to be used for subsequent console inputs. If no argument is supplied, the standard Screen Demon field input delimiters will be used. The table is an AOS/VS format 256-bit delimiter table where the first bit in the table corresponds to NUL, the next to ^A, etc. Bits are set for characters to be treated as delimiters, and clear otherwise. SDSetFieldDelimiterTable(); SDSetFieldDelimiterTable(table); short *table; It is probably most useful to define a delimiter table as unsigned short delimitertable[16];  */ void SDCompileRDL(); /* Tells Screen Demon to rebuild its window display map at the next flush. This call is needed only when window and/or view parameters have been altered directly, instead of through the various function calls. */ char *SDMalloc(); /* Allocates a chunk of memory from the Screen Demon memory allocator. Functions the same as the standard C malloc() routine. mem = SDMalloc(size); int size; char *mem; */ void SDFree(); /* Releases a chunk of memory previously allocated via SDMalloc. Functions the same as the standard C free() routine. SDFree(mem); char *mem; */ /************************************************************************/ /* The COBOL callable routines described in the SCREEN DEMON manual */ /* can also be called from a C program if it invokes them in the */ /* same way that a COBOL program would. Since COBOL always passes */ /* byte pointers to arguments, a C program can pretend to be a */ /* COBOL program by casting all parameters to be passed to these */ /* routines into byte pointers. */ /* */ /* The following macro may be helpful: */ /* */ /* #define BYTE_PTR(x) ((char *)(&x)) {Uncomment if desired} */ /* */ /* For example, the SD_DRAW_BOX routine can be called from COBOL */ /* by using a statement of the form */ /* CALL "SD_DRAW_BOX" USING BOX-LINE, BOX-COL, BOX-HEIGHT, */ /* BOX-WIDTH, BOX-LABEL. */ /* with BOX-LINE, BOX-COL, BOX-HEIGHT, and BOX-WIDTH defined */ /* as PIC 9(4) COMP, and BOX LABEL defined as PIC X(80). */ /* */ /* The equivalent C call is */ /* SD_DRAW_BOX( BYTE_PTR(line), BYTE_PTR(col), BYTE_PTR(height), */ /* BYTE_PTR(width), BYTE_PTR(label) ); */ /* with the variables defined as */ /* short line, col, height, width; */ /* char label[80]; */ /* Note that it is not really necessary to use BYTE_PTR with label */ /* since C will pass a byte ptr in that case anyway (a pointer to a */ /* char is always a byte ptr). However, using BYTE_PTR with a char */ /* field doesn't generate extra code, and serves to emphasize that */ /* the called function expects byte ptrs to everything. */ /* */ /* Also, a field defined as PIC 9(4) COMP is equivalent to a short, */ /* although it may occasionally need to be an unsigned short, */ /* primarily with attribute words and flag words. */ /* A field defined as PIC S9(9) COMP is equivalent to a long. */ /* */ /************************************************************************/ /* The following calls cannot be accessed from COBOL, but are accessible */ /* to C programs. */ /** "Display" a string into the current active window's virtual image **/ $asm void SD_MONITOR_STRING(); /* SD_MONITOR_STRING(s, n); */ /* char *s; Byte ptr to string to "display" */ /* short n; Number of chars in string */ /** "Display" a string into the terminal image, but not physical screen **/ $asm void SD_MONITOR_STRING_INTO_TIB(); /* SD_MONITOR_STRING_INTO_TIB(s, n); */ /* char *s; Byte ptr to string to "display" */ /* short n; Number of chars in string */ /** Marks a specified region of a window to indicate it has changed, * and thus needs to be updated at the next flush. Use this call * if a window image buffer is modified directly, rather than via * a display or SD_MONITOR call. */ $asm void SD_ADJUST_WINDOW_MOD_ZONES(); /* SD_ADJUST_WINDOW_MOD_ZONES(vib, begofs, endofs); */ /* (char *)(SDVIB *vib); Byte ptr to image buffer */ /* that has been modified. */ /* short begofs; Offset from beginning of image */ /* to first modified position. */ /* short endofs; Offset from beginning of image */ /* to last modified position. */ /** Display a string to the physical screen without affecting memory images **/ $asm void SD_OUTPUT_STRING(); /* SD_OUTPUT_STRING(s, n); */ /* char *s; Byte ptr to string to display */ /* short n; Number of chars in string */ /** Get next input character (more efficient than SD_READ_CHAR) **/ $asm void SD_GETCHAR(); /* SD_GETCHAR(s, t, ib); */ /* char *s; Byte ptr to area where input char can be returned */ /* short t; Timeout setting in sec, or -1 if no timeout */ /* SDINBF *ib; Addr of special input buffer structure, NULL if none */ /** Set the console input delimiter table (this routine should be called **/ /** before calling the SD_INPUT_STRING routine) **/ $asm void SET_FLD_DELIM_TBL(); /* SET_FLD_DELIM_TBL(t); */ /* struct delim_tbl *t; Addr of 16-word AOS/VS delimiter table */ /** Rebuild the current Region Display List based on relationships of **/ /** current Windows and their views. This is necessary when windows **/ /** and/or views have been created, moved, or removed by direct **/ /** alterations to the data structures (not using the window calls). **/ $asm void SD_COMPILE_RDL(); /** Invoke a particular hot key routine based on its definition in SD_CONFIG **/ $asm void SD_CALL_HOT_KEY_ROUTINE(); /* SD_CALL_HOT_KEY_ROUTINE(n); */ /* short n; Hot key routine # */ /** Display a message in a box and wait for operator to acknowledge. This **/ /** has the same function as SD_MESSAGE, but is somewhat more efficient. **/ $asm void SD_MESSAGE_JSR(); /* SD_MESSAGE_JSR(s, p, l) */ /* char *s; Byte ptr to message string, null-terminated. */ /* short p; Screen position for box, column # in high byte, */ /* and line # in low byte. If position is -1, */ /* then default box position will be used. */ /* char *l; Byte ptr to box label, null-terminated, or -1 if */ /* no box label is desired. */ /** Display an error message in a box and wait for operator to acknowledge. **/ /** This routine has the same function as SD_ERROR_MESSAGE, but is **/ /** somewhat more efficient. It is equivalent to calling SD_MESSAGE_JSR **/ /** with a label string of "Error!". **/ $asm void SD_ERROR_MESSAGE_JSR(); /* SD_ERROR_MESSAGE_JSR(s, p) */ /* char *s; Byte ptr to message string, null-terminated. */ /* short p; Screen position for box, column # in high byte, */ /* and line # in low byte. If position is -1, */ /* then default box position will be used. */ /** Display a combined system and user error message in a box and wait for **/ /** operator to acknowledge. This routine has the same function as **/ /** SD_SYS_ERROR_MESSAGE, but is somewhat more efficient. **/ $asm void SD_SYS_ERROR_MESSAGE_JSR(); /* SD_SYS_ERROR_MESSAGE_JSR(e, p, s) */ /* short e; system error code */ /* short p; Screen position for box, column # in high byte, */ /* and line # in low byte. If position is -1, */ /* then default box position will be used. */ /* char *s; Byte ptr to user message string, null-terminated, */ /* or NULL if no user message. The user message will */ /* be placed above the system message in the box. */ /* Obtain the current screen appearance. This routine has the same */ /* function as SD_GET_IMAGE, but is simpler to use if a complete */ /* image buffer structure is desired, and is more efficient. */ /* Floating windows are included in the returned image. */ $asm void SD_GET_SCREEN_IMAGE_JSR(); /* SD_GET_SCREEN_IMAGE_JSR( (char *)(&imgbuf) ) */ /* SDVIB imgbuf; Standard image buffer structure */ /* where current screen image will */ /* be returned. */ /* Obtain the current screen appearance, ignoring floating windows. */ /* Similar to SD_GET_IMAGE_BELOW_FLOAT, but is simpler to use if */ /* a complete image buffer structure is desired, and is more */ /* efficient. * / $asm void SD_GET_IMAGE_BELOW_FLOAT_JSR(); /* SD_GET_IMAGE_BELOW_FLOAT_JSR( (char *)(&imgbuf) ) */ /* SDVIB imgbuf; Standard image buffer structure */ /* where current screen image will */ /* be returned. Areas actually */ /* obscured by floating windows */ /* will appear as if the floating */ /* windows were not present. */ /** Allocate memory using Screen Demon's memory allocator. This is **/ /** useful if C runtimes are not being linked with the C program. **/ char *SD_MALLOC(); /* SD_MALLOC(n) */ /* int n; number of bytes of memory to be allocated */ /* Return value is a byte ptr to the allocated chunk, or NULL if */ /* the allocation failed. */ /** Release memory previously allocated using the SD_MALLOC call. **/ /** Useful if C runtimes are not being linked with the C program. **/ $asm void SD_MEM_FREE_BP(); /* SD_MEM_FREE_BP(p); */ /* char *p; byte ptr to memory chunk being deallocated */ /*** Last line of screen_demon.h ***/ .@'Fow'Hu'HujcSDCALENDAR.CO  ******************************************************************************* * $Id: sdcalendar.co,v 1.4 1995/07/11 20:51:11 mark Exp mark $ * * $Log: sdcalendar.co,v $ * Revision 1.4 1995/07/11 20:51:11 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 * ******************************************************************************* IDENTIFICATION DIVISION. PROGRAM-ID. SDCALENDAR. ************************************************************************** *** Screen Demon 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 *** *** *** ************************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. DG-COBOL. OBJECT-COMPUTER. DG-COBOL. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROGRAM-ID-NAME PIC X(12) VALUE "SDCALENDAR ". 01 ORIGINAL-TURBO-SETTING PIC 9(04) COMP VALUE ZERO. 01 SAV-TO-MEM-NM-LINE PIC X(10) VALUE "SD_CAL_L". 01 SAV-TO-MEM-NM-COL PIC X(10) VALUE "SD_CAL_C". 01 SAV-TO-MEM-NM-WIND PIC X(10) VALUE "SD_CAL_W". 01 SAV-TO-MEM-NM-DATA PIC X(10) VALUE "SD_CAL_D". 01 SAV-TO-MEM-LEN PIC 9(4) COMP. 01 SAV-TO-MEM-LEN-RET PIC S9(4) COMP. 01 SAV-TO-MEM. 05 CAL-BOX-MOVE-INCREMENT PIC 9(02) VALUE 2. 05 LEFT-WO-REMOVING PIC X VALUE "N". 05 DOW PIC 9(4). 05 CURRENT-DATE. 10 CURRENT-YEAR-MONTH. 15 CURRENT-YEAR PIC 9(4). 15 CURRENT-MONTH PIC 9(2). 10 CURRENT-DAY PIC 9(2). 05 CURRENT-DATE-R REDEFINES CURRENT-DATE. 10 CURRENT-CENT PIC 9(2). 10 CURRENT-YMD. 15 CURRENT-YY PIC 9(2). 15 CURRENT-MM PIC 9(2). 15 CURRENT-DD PIC 9(2). 05 WORKING-DATE. 10 WORKING-YEAR-MONTH. 15 WORKING-YEAR PIC 9(4) VALUE 0. 15 WORKING-MONTH PIC 9(2). 10 WORKING-DAY PIC 9(2). 05 WORKING-DATE-R REDEFINES WORKING-DATE. 10 WORKING-CENT PIC 9(2). 10 WORKING-YMD. 15 WORKING-YY PIC 9(2). 15 WORKING-MM PIC 9(2). 15 WORKING-DD PIC 9(2). 05 DAYS-IN-WORKING-MONTH PIC 9(2). 05 CAL-WEEKS. 10 CAL-WEEK-FIRST. 15 CAL-WEEK-1 PIC X(21). 10 CAL-WEEKS-REST. 15 CAL-WEEK-2 PIC X(21). 15 CAL-WEEK-3 PIC X(21). 15 CAL-WEEK-4 PIC X(21). 15 CAL-WEEK-5 PIC X(21). 15 CAL-WEEK-6 PIC X(12). 05 CAL-SHIFT-AREA REDEFINES CAL-WEEKS. 10 CAL-FIRST-REST. 15 CAL-FIRST-DAY PIC X(03). 15 CAL-REST-OF-MONTH PIC X(114). 01 CAL-BOX-LINE PIC 9(04) COMP VALUE 5. 01 CAL-BOX-COLUMN PIC 9(04) COMP VALUE 5. 01 CAL-BOX-HEIGHT PIC 9(04) COMP VALUE 11. 01 CAL-BOX-WIDTH PIC 9(04) COMP VALUE 24. 01 CAL-BOX-LABEL. 05 CAL-LABEL-CHAR OCCURS 40 TIMES PIC X. ** the following field's value must equal the length of CALC-BOX-LABEL above: 01 CAL-BOX-LABEL-LEN PIC 9(04) COMP VALUE 40. ** this field will receive the actual length of the Calendar title as * it was defined in the SD_CONFIG file: 01 CAL-TITLE-ACTUAL-LEN PIC S9(04) COMP VALUE ZERO. ** Name of Calendar Title item as it appears in the SD_CONFIG file: 01 CALENDAR-TITLE-NAME PIC X(18) VALUE "SDCALENDAR_TITLE ". 01 HELP-BOX-LINE PIC 9(04) COMP VALUE 8. 01 HELP-BOX-COLUMN PIC 9(04) COMP VALUE 12. 01 HELP-BOX-HEIGHT PIC 9(04) COMP VALUE 15. 01 HELP-BOX-WIDTH PIC 9(04) COMP VALUE 29. 01 HELP-BOX-LABEL PIC X(16) VALUE " Calendar Help| ". 01 PREVIOUS-WINDOW-ADDR PIC X(04). 01 CALENDAR-WINDOW-ADDR PIC X(04). 01 READ-CHAR-TIMEOUT PIC 9(04) COMP VALUE 2. 01 HORIZONTAL-MOVE-DISTANCE PIC 9(04) COMP VALUE 1. 01 VERTICAL-MOVE-DISTANCE PIC 9(04) COMP VALUE 1. 01 ALTERNATE-EXIT-KEY-VALUE PIC S9(04) COMP VALUE -1. 01 ALTERNATE-EXIT-KEY-REDEF REDEFINES ALTERNATE-EXIT-KEY-VALUE. 05 FILLER PIC X. 05 ALTERNATE-EXIT-KEY PIC X. 01 ALT-EXIT-KEY-ACTUAL-LEN PIC S9(04) COMP VALUE ZERO. 01 MAX-GET-VALUE-LEN PIC 9(04) COMP VALUE ZERO. * WORD ALIGNMENT STOPS HERE 01 ORIGINAL-SECONDARY-PROGRAM PIC X(32) VALUE SPACES. 01 CAL-BOX-TOP-MARGIN PIC 9(02) VALUE 2. 01 CAL-BOX-BOTTOM-MARGIN PIC 9(02) VALUE 13. 01 CAL-BOX-RIGHT-MARGIN PIC 9(02) VALUE 55. 01 CAL-BOX-LEFT-MARGIN PIC 9(02) VALUE 1. 01 CAL-BOX-TARGET PIC S9(02) VALUE 0. 01 READ-CHAR PIC X VALUE SPACE. 01 PREV-READ-CHAR PIC X VALUE SPACE. 01 DIM-DATE. 05 DIM-YEAR PIC 9(4). 05 DIM-MONTH PIC 9(2). 05 DIM-DAY PIC 9(2). 01 DIM-DATE-R REDEFINES DIM-DATE. 05 DIM-CENT PIC 9(2). 05 DIM-YMD. 10 DIM-YY PIC 9(2). 10 DIM-MM PIC 9(2). 10 DIM-DD PIC 9(2). 01 DIM-DAYS PIC 9(2). 01 DOW-YEAR PIC 9(4). 01 DOW-YEAR-R REDEFINES DOW-YEAR. 05 DOW-CENT PIC 9(2). 05 DOW-YY PIC 9(2). 01 DOW-MONTH PIC 9(4). 01 DOW-INT1 PIC 9(4). 01 DOW-INT2 PIC 9(4). 01 DOW-INT3 PIC 9(4). 01 LEAP-TEST-YEAR PIC 9(4). 01 LEAP-YEAR-RESULT PIC 9(4). 01 LEAP-YEAR-REMAINDER PIC 9(4). 01 LEAP-YEAR-FLAG PIC X. 88 LEAP-YEAR VALUE "Y". 01 SHORT-MONTH-NAME-ARRAY. 05 FILLER PIC X(36) VALUE "JanFebMarAprMayJunJulAugSepOctNovDec". 01 SHORT-MONTH-NAME-R REDEFINES SHORT-MONTH-NAME-ARRAY. 05 SHORT-MONTH-NAME OCCURS 12 TIMES PIC X(3). 01 LONG-MONTH-NAME-ARRAY. 05 FILLER PIC X(54) VALUE "January February March April May June ". 05 FILLER PIC X(54) VALUE "July August SeptemberOctober November December ". 01 LONG-MONTH-NAME-R REDEFINES LONG-MONTH-NAME-ARRAY. 05 LONG-MONTH-NAME OCCURS 12 TIMES PIC X(9). 01 DAY-LABELS PIC X(19) VALUE "S M T W T F S". 01 DAYS-TO-SHIFT PIC 9. 01 CAL-MONTH-FORMATS. 05 31-DAY-FORMAT. 10 30-DAY-FORMAT. 15 29-DAY-FORMAT. 20 28-DAY-FORMAT. 25 FILLER PIC X(21) VALUE " 1 2 3 4 5 6 7". 25 FILLER PIC X(21) VALUE " 8 9 10 11 12 13 14". 25 FILLER PIC X(21) VALUE " 15 16 17 18 19 20 21". 25 FI LLER PIC X(21) VALUE " 22 23 24 25 26 27 28". 20 FILLER PIC X(03) VALUE " 29". 15 FILLER PIC X(03) VALUE " 30". 10 FILLER PIC X(03) VALUE " 31". 01 CURRENT-TIME. 05 CURRENT-HOUR PIC 99. 05 CURRENT-MIN PIC 99. 05 CURRENT-SEC PIC 99. 01 UNDERSCORE-ON. 05 FILLER PIC 99 COMP VALUE 20. 01 UNDERSCORE-OFF. 05 FILLER PIC 99 COMP VALUE 21. 01 COLON-LIT. 05 FILLER PIC X VALUE ":". 01 PARK-CURSOR-LOCATION. 05 FILLER PIC 99 COMP VALUE 16. 05 PARK-COLUMN PIC 99 COMP VALUE 0. 05 PARK-LINE PIC 99 COMP VALUE 0. 01 WORKING-DAY-LIT. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 WORKING-DAY-FORMAT PIC Z9. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 01 WORKING-DAY-LINE PIC 9(02). 01 WORKING-DAY-COL PIC 9(02). 01 TODAYS-DAY-LINE PIC 9(02). 01 TODAYS-DAY-COL PIC 9(02). 01 DATE-ERROR-MESSAGE. 05 FILLER PIC X(20) VALUE "Invalid date.". 05 FILLER PIC 9(2) COMP VALUE 0. *** Item name used to access the CONFIG value for ALTERNATE-EXIT-KEY, * declared in the word-aligned section above. 01 SD-ALT-EXIT-KEY-NAME PIC X(16) VALUE "SD_ALT_EXIT_KEY ". 01 ESCAPE-KEY. 05 FILLER PIC 9(02) COMP VALUE 27. 01 INVALID-KEY. 05 FILLER PIC 9(02) COMP VALUE 0. ** Value returned from SD_READ_CHAR if a timeout occurred 01 TIMEOUT-OCCURRED-VALUE PIC 9(04) COMP VALUE 128. 01 TIMEOUT-OCCURRED-REDEF REDEFINES TIMEOUT-OCCURRED-VALUE. 05 FILLER PIC X. 05 TIMEOUT-OCCURRED PIC X. * SHIFT-C4 KEY 01 EXIT-WO-REMOVING-KEY-VALUE PIC 9(04) COMP VALUE 219. 01 EXIT-WO-REMOVING-KEY-REDEF REDEFINES EXIT-WO-REMOVING-KEY-VALUE. 05 FILLER PIC X(01). 05 EXIT-WO-REMOVING-KEY PIC X(01). * C1-KEY 01 HELP-KEY-VALUE PIC 9(04) COMP VALUE 220. 01 HELP-KEY-REDEF REDEFINES HELP-KEY-VALUE. 05 FILLER PIC X(01). 05 HELP-KEY PIC X(01). * LEFT-ARROW 01 PREV-DAY-KEY-VALUE PIC 9(04) COMP VALUE 025. 01 PREV-DAY-KEY-REDEF REDEFINES PREV-DAY-KEY-VALUE. 05 FILLER PIC X(01). 05 PREV-DAY-KEY PIC X(01). * RIGHT-ARROW 01 NEXT-DAY-KEY-VALUE PIC 9(04) COMP VALUE 024. 01 NEXT-DAY-KEY-REDEF REDEFINES NEXT-DAY-KEY-VALUE. 05 FILLER PIC X(01). 05 NEXT-DAY-KEY PIC X(01). * UP-ARROW 01 PREV-WEEK-KEY-VALUE PIC 9(04) COMP VALUE 023. 01 PREV-WEEK-KEY-REDEF REDEFINES PREV-WEEK-KEY-VALUE. 05 FILLER PIC X(01). 05 PREV-WEEK-KEY PIC X(01). * DOWN-ARROW 01 NEXT-WEEK-KEY-VALUE PIC 9(04) COMP VALUE 026. 01 NEXT-WEEK-KEY-REDEF REDEFINES NEXT-WEEK-KEY-VALUE. 05 FILLER PIC X(01). 05 NEXT-WEEK-KEY PIC X(01). * C2-KEY 01 PREV-MONTH-KEY-VALUE PIC 9(04) COMP VALUE 221. 01 PREV-MONTH-KEY-REDEF REDEFINES PREV-MONTH-KEY-VALUE. 05 FILLER PIC X(01). 05 PREV-MONTH-KEY PIC X(01). * C4-KEY 01 NEXT-MONTH-KEY-VALUE PIC 9(04) COMP VALUE 223. 01 NEXT-MONTH-KEY-REDEF REDEFINES NEXT-MONTH-KEY-VALUE. 05 FILLER PIC X(01). 05 NEXT-MONTH-KEY PIC X(01). * HOME-KEY 01 CUR-DATE-KEY-VALUE PIC 9(04) COMP VALUE 008. 01 CUR-DATE-KEY-REDEF REDEFINES CUR-DATE-KEY-VALUE. 05 FILLER PIC X(01). 05 CUR-DATE-KEY PIC X(01). * C3-KEY 01 SPECIFY-KEY-VALUE PIC 9(04) COMP VALUE 222. 01 SPECIFY-KEY-REDEF REDEFINES SPECIFY-KEY-VALUE. 05 FILLER PIC X(01). 05 SPECIFY-KEY PIC X(01). *SHIFT LEFT-ARROW 01 MOVE-LEFT-KEY-VALUE PIC 9(04) COMP VALUE 153. 01 MOVE-LEFT-KEY-REDEF REDEFINES MOVE-LEFT-KEY-VALUE. 05 FILLER PIC X(01). 05 MOVE-LEFT-KEY PIC X(01). *SHIFT RIGHT-ARROW 01 MOVE-RIGHT-KEY-VALUE PIC 9(04) COMP VALUE 152. 01 MOVE-RIGHT-KEY-REDEF REDEFINES MOVE-RIGHT-KEY-VALUE. 05 FILLER PIC X(01). 05 MOVE-RIGHT-KEY PIC X(01). *SHIFT UP-ARROW 01 MOVE-UP-KEY-VALUE PIC 9(04) COMP VALUE 151. 01 MOVE-UP-KEY-REDEF REDEFINES MOVE-UP-KEY-VALUE. 05 FILLER PIC X(01). 05 MOVE-UP-KEY PIC X(01). *SHIFT DOWN-ARROW 01 MOVE-DOWN-KEY-VALUE PIC 9(04) COMP VALUE 154. 01 MOVE-DOWN-KEY-REDEF REDEFINES MOVE-DOWN-KEY-VALUE. 05 FILLER PIC X(01). 05 MOVE-DOWN-KEY PIC X(01). SCREEN SECTION. 01 CALENDAR-SCREEN. 05 LINE 3 COLUMN 4 PIC X(12) USING LONG-MONTH-NAME(WORKING-MONTH). 05 COLUMN 19 PIC 9999 USING WORKING-YEAR. 05 LINE PLUS 1 COLUMN 4 PIC X(19) USING DAY-LABELS. 05 LINE PLUS 1 COLUMN 2 PIC X(21) FROM CAL-WEEK-1. 05 LINE PLUS 1 COLUMN 2 PIC X(21) FROM CAL-WEEK-2. 05 LINE PLUS 1 COLUMN 2 PIC X(21) FROM CAL-WEEK-3. 05 LINE PLUS 1 COLUMN 2 PIC X(21) FROM CAL-WEEK-4. 05 LINE PLUS 1 COLUMN 2 PIC X(21) FROM CAL-WEEK-5. 05 LINE PLUS 1 COLUMN 2 PIC X(12) FROM CAL-WEEK-6. 01 HIGHLIGHT-TODAYS-DAY. 05 LINE TODAYS-DAY-LINE COLUMN TODAYS-DAY-COL PIC Z9 USING CURRENT-DAY. 01 HIGHLIGHT-TODAYS-DAY-REV. 05 LINE TODAYS-DAY-LINE COLUMN TODAYS-DAY-COL PIC X(06) USING WORKING-DAY-LIT. 01 HIGHLIGHT-WORKING-DAY. 05 LINE WORKING-DAY-LINE COLUMN WORKING-DAY-COL PIC X(06) USING WORKING-DAY-LIT. 01 CURRENT-DATE-TIME. 05 LINE 12 COLUMN 2 PIC X FROM UNDERSCORE-ON. 05 COLUMN 3 PIC Z9 USING CURRENT-DAY. 05 COLUMN PLUS 1 PIC X(3) USING SHORT-MONTH-NAME(CURRENT-MONTH). 05 COLUMN PLUS 1 PIC 9999 USING CURRENT-YEAR. 05 COLUMN PLUS 1 PIC Z9 USING CURRENT-HOUR. 05 PIC X USING COLON-LIT. 05 PIC 99 USING CURRENT-MIN. 05 PIC X USING COLON-LIT. 05 PIC 99 USING CURRENT-SEC. 05 PIC X USING UNDERSCORE-OFF. 01 HELP-PROMPT. 05 LINE 11 COLUMN 2 " C1 for help". 01 HELP-SCREEN. 05 LINE 4 COLUMN 3 "Arrow keys:". 05 LINE PLUS 1 COLUMN 3 " move day pointer". 05 LINE PLUS 1 COLUMN 3 "Shifted Arrow keys:". 05 LINE PLUS 1 COLUMN 3 " move calendar". 05 LINE PLUS 1 COLUMN 3 "Home:". 05 LINE PLUS 1 COLUMN 3 " return to current date". 05 LINE PLUS 1 COLUMN 3 "C2: previous month". 05 LINE PLUS 1 COLUMN 3 "C4: next month". 05 LINE PLUS 1 COLUMN 3 "C3: enter month". 05 LINE PLUS 1 COLUMN 3 "ESC: exit". 05 LINE PLUS 2 COLUMN 3 "any key to continue". 01 SPECIFY-MONTH-SCREEN. 05 LINE 11 COLUMN 2 "Month:". 05 COLUMN PLUS 1 PIC Z9 USING WORKING-MONTH. 05 COLUMN PLUS 2 "Year:". 05 COLUMN PLUS 1 PIC 9999 USING WORKING-YEAR. 01 BOTTOM-LINE-CLEAR. 05 LINE 11 COLUMN 2 " ". 01 PARK-CURSOR-SCREEN. 05 LINE 12 COLUMN 22 PIC X(03) USING PARK-CURSOR-LOCATION. PROCEDURE DIVISION. MAIN-LOGIC SECTION. MAIN-PROGRAM. *** Declare that this is now the active secondary program, but * remember the former secondary program so it can be restored * when Calendar exits. CALL "SD_SET_SECONDARY_PROGRAM_NAME" USING PROGRAM-ID-NAME, ORIGINAL-SECONDARY-PROGRAM. *** Force Turbo to a Full setting while Calendar is running, but * remember what Turbo level was originally so it can be restored * when Calendar exits. CALL "SD_TURBO_FULL" USING ORIGINAL-TURBO-SETTING. ACCEPT CURRENT-YMD FROM DATE. MOVE 19 TO CURRENT-CENT. MOVE LOW-VALUES TO PREVIOUS-WINDOW-ADDR. IF WORKING-YEAR = ZERO MOVE 2 TO SAV-TO-MEM-LEN CALL "SD_GET_VALUE" USING SAV-TO-MEM-NM-LINE, CAL-BOX-LINE, SAV-TO-MEM-LEN, SAV-TO-MEM-LEN-RET IF SAV-TO-MEM-LEN-RET > 0 CALL "SD_GET_VALUE" USING SAV-TO-MEM-NM-COL, CAL-BOX-COLUMN, SAV-TO-MEM-LEN, SAV-TO-MEM-LEN-RET MOVE 4 TO SAV-TO-MEM-LEN CALL "SD_GET_VALUE" USING SAV-TO-MEM-NM-WIND, CALENDAR-WINDOW-ADDR, SAV-TO-MEM-LEN, SAV-TO-MEM-LEN-RET INSPECT SAV-TO-MEM TALLYING SAV-TO-MEM-LEN FOR CHARACTERS CALL "SD_GET_VALUE" USING SAV-TO-MEM-NM-DATA, SAV-TO-MEM, SAV-TO-MEM-LEN, SAV-TO-MEM-LEN-RET PERFORM RE-INIT ELSE  @  PERFORM FIRST-TIME-INIT PERFORM DRAW-BOX-IN-WINDOW ELSE PERFORM RE-INIT. PERFORM DISPLAY-MONTH. MOVE INVALID-KEY TO READ-CHAR. PERFORM ACCEPT-COMMAND UNTIL READ-CHAR = ESCAPE-KEY. MOVE 2 TO SAV-TO-MEM-LEN. CALL "SD_PUT_VALUE" USING SAV-TO-MEM-NM-LINE, CAL-BOX-LINE, SAV-TO-MEM-LEN. CALL "SD_PUT_VALUE" USING SAV-TO-MEM-NM-COL, CAL-BOX-COLUMN, SAV-TO-MEM-LEN. MOVE 4 TO SAV-TO-MEM-LEN. CALL "SD_PUT_VALUE" USING SAV-TO-MEM-NM-WIND, CALENDAR-WINDOW-ADDR, SAV-TO-MEM-LEN. INSPECT SAV-TO-MEM TALLYING SAV-TO-MEM-LEN FOR CHARACTERS. CALL "SD_PUT_VALUE" USING SAV-TO-MEM-NM-DATA, SAV-TO-MEM, SAV-TO-MEM-LEN. *** Restore Turbo setting to its original value *** CALL "SD_TURBO_RESET" USING ORIGINAL-TURBO-SETTING. *** Declare that the former secondary program is now active again *** CALL "SD_SET_SECONDARY_PROGRAM_NAME" USING ORIGINAL-SECONDARY-PROGRAM. EXIT-PROGRAM. EXIT PROGRAM. STOP-RUN. STOP RUN. FIRST-TIME-INIT. PERFORM CUR-MONTH. PERFORM FORMAT-MONTH. *** Obtain the value defined in the configuration file for the alternate * exit key, which causes any Screen Demon hot key, including this one, * to exit. If not defined, set the alternate exit key to HIGH-VALUES, * which means that no key will act as the alternate exit key. MOVE 2 TO MAX-GET-VALUE-LEN. CALL "SD_GET_VALUE" USING SD-ALT-EXIT-KEY-NAME, ALTERNATE-EXIT-KEY-VALUE, MAX-GET-VALUE-LEN, ALT-EXIT-KEY-ACTUAL-LEN. IF ALT-EXIT-KEY-ACTUAL-LEN < 2 MOVE HIGH-VALUES TO ALTERNATE-EXIT-KEY. RE-INIT. IF LEFT-WO-REMOVING = "Y" CALL "SD_ACTIVE_WINDOW" USING CALENDAR-WINDOW-ADDR CALL "SD_TOP_WINDOW" USING CALENDAR-WINDOW-ADDR ELSE PERFORM DRAW-BOX-IN-WINDOW. ACCEPT-COMMAND. ACCEPT CURRENT-YMD FROM DATE. MOVE 19 TO CURRENT-CENT. ACCEPT CURRENT-TIME FROM TIME. DISPLAY CURRENT-DATE-TIME. DISPLAY PARK-CURSOR-SCREEN. MOVE READ-CHAR TO PREV-READ-CHAR. CALL "SD_READ_CHAR" USING READ-CHAR, READ-CHAR-TIMEOUT. PERFORM PROCESS-COMMAND. IF READ-CHAR NOT = ESCAPE-KEY IF READ-CHAR NOT = INVALID-KEY PERFORM DISPLAY-MONTH. FORMAT-MONTH. MOVE WORKING-MONTH TO DIM-MONTH. MOVE WORKING-YEAR TO DIM-YEAR. MOVE SPACES TO CAL-WEEKS. PERFORM CALC-DAYS-IN-MONTH. IF WORKING-DAY > DAYS-IN-WORKING-MONTH MOVE DAYS-IN-WORKING-MONTH TO WORKING-DAY. MOVE 1 TO DIM-DAY. PERFORM GET-FIRST-DAY. SUBTRACT DOW FROM 8 GIVING DAYS-TO-SHIFT. PERFORM SHIFT-DAY DAYS-TO-SHIFT TIMES. DISPLAY-MONTH. DISPLAY CALENDAR-SCREEN. COMPUTE WORKING-DAY-LINE = WORKING-DAY + DOW - 2. DIVIDE WORKING-DAY-LINE BY 7 GIVING WORKING-DAY-LINE REMAINDER WORKING-DAY-COL. ADD 5 TO WORKING-DAY-LINE. COMPUTE WORKING-DAY-COL = (WORKING-DAY-COL * 3) + 3. SUBTRACT 1 FROM WORKING-DAY-LINE GIVING PARK-LINE. ADD 1, WORKING-DAY-COL GIVING PARK-COLUMN. MOVE WORKING-DAY TO WORKING-DAY-FORMAT. DISPLAY HIGHLIGHT-WORKING-DAY. IF WORKING-YEAR-MONTH = CURRENT-YEAR-MONTH COMPUTE TODAYS-DAY-LINE = CURRENT-DAY + DOW - 2 DIVIDE TODAYS-DAY-LINE BY 7 GIVING TODAYS-DAY-LINE REMAINDER TODAYS-DAY-COL ADD 5 TO TODAYS-DAY-LINE COMPUTE TODAYS-DAY-COL = (TODAYS-DAY-COL * 3) + 3 IF WORKING-DATE = CURRENT-DATE DISPLAY HIGHLIGHT-TODAYS-DAY-REV ELSE DISPLAY HIGHLIGHT-TODAYS-DAY. LEAP-YEAR-CHECK. MOVE ZERO TO LEAP-YEAR-FLAG. DIVIDE LEAP-TEST-YEAR BY 4 GIVING LEAP-YEAR-RESULT REMAINDER LEAP-YEAR-REMAINDER. IF LEAP-YEAR-REMAINDER = ZERO MOVE "Y" TO LEAP-YEAR-FLAG. DIVIDE LEAP-TEST-YEAR BY 100 GIVING LEAP-YEAR-RESULT REMAINDER LEAP-YEAR-REMAINDER. IF LEAP-YEAR-REMAINDER = ZERO MOVE "N" TO LEAP-YEAR-FLAG. DIVIDE LEAP-TEST-YEAR BY 400 GIVING LEAP-YEAR-RESULT REMAINDER LEAP-YEAR-REMAINDER. IF LEAP-YEAR-REMAINDER = ZERO MOVE "Y" TO LEAP-YEAR-FLAG. GET-FIRST-DAY. IF DIM-MONTH > 2 SUBTRACT 2 FROM DIM-MONTH GIVING DOW-MONTH MOVE DIM-YEAR TO DOW-YEAR ELSE ADD 10, DIM-MONTH GIVING DOW-MONTH SUBTRACT 1 FROM DIM-YEAR GIVING DOW-YEAR. COMPUTE DOW-INT1 = (13 * DOW-MONTH - 1) / 5. COMPUTE DOW-INT2 = DOW-YY / 4. COMPUTE DOW-INT3 = DOW-CENT / 4. COMPUTE DOW = DOW-INT1 + DIM-DAY + DOW-YY + DOW-INT2 + DOW-INT3 - DOW-CENT - DOW-CENT + 77. * DIVIDE DOW-INT1 BY 7 GIVING DOW-INT2 REMAINDER DOW * ADD 1 TO DOW COMPUTE DOW-INT1 = DOW / 7. COMPUTE DOW = DOW - 7 * DOW-INT1 + 1. *** Obtain the title for the Calendar from the SD_CONFIG file, and then * create a window with a box using the title as its label. Use a * default label if no title is available from the SD_CONFIG file. DRAW-BOX-IN-WINDOW. CALL "SD_GET_VALUE" USING CALENDAR-TITLE-NAME, CAL-BOX-LABEL, CAL-BOX-LABEL-LEN, CAL-TITLE-ACTUAL-LEN. IF CAL-TITLE-ACTUAL-LEN NOT > ZERO MOVE " SCREEN DEMON Calendar |" TO CAL-BOX-LABEL MOVE 24 TO CAL-BOX-WIDTH ELSE IF CAL-TITLE-ACTUAL-LEN NOT < CAL-BOX-LABEL-LEN MOVE "|" TO CAL-LABEL-CHAR (CAL-BOX-LABEL-LEN) ADD 1, CAL-BOX-LABEL-LEN GIVING CAL-BOX-WIDTH ELSE ADD 1 TO CAL-TITLE-ACTUAL-LEN MOVE "|" TO CAL-LABEL-CHAR (CAL-TITLE-ACTUAL-LEN) ADD 1, CAL-TITLE-ACTUAL-LEN GIVING CAL-BOX-WIDTH IF CAL-BOX-WIDTH < 24 MOVE 24 TO CAL-BOX-WIDTH. CALL "SD_CREATE_WINDOW" USING CAL-BOX-LINE, CAL-BOX-COLUMN, CAL-BOX-HEIGHT, CAL-BOX-WIDTH, CAL-BOX-LABEL. MOVE LOW-VALUES TO CALENDAR-WINDOW-ADDR. CALL "SD_ACTIVE_WINDOW" USING CALENDAR-WINDOW-ADDR. DISPLAY HELP-PROMPT. PROCESS-COMMAND. IF READ-CHAR = PREV-MONTH-KEY PERFORM PREV-MONTH ELSE IF READ-CHAR = NEXT-MONTH-KEY PERFORM NEXT-MONTH ELSE IF READ-CHAR = PREV-DAY-KEY PERFORM PREV-DAY ELSE IF READ-CHAR = NEXT-DAY-KEY PERFORM NEXT-DAY ELSE IF READ-CHAR = PREV-WEEK-KEY PERFORM PREV-WEEK ELSE IF READ-CHAR = NEXT-WEEK-KEY PERFORM NEXT-WEEK ELSE IF READ-CHAR = CUR-DATE-KEY PERFORM CUR-MONTH ELSE IF READ-CHAR = SPECIFY-KEY PERFORM SPECIFY-MONTH ELSE IF READ-CHAR = HELP-KEY PERFORM DISPLAY-HELP-WINDOW ELSE IF READ-CHAR = MOVE-LEFT-KEY OR READ-CHAR = MOVE-RIGHT-KEY OR READ-CHAR = MOVE-UP-KEY OR READ-CHAR = MOVE-DOWN-KEY PERFORM MOVE-BOX ELSE IF READ-CHAR NOT LESS THAN "1" AND READ-CHAR NOT GREATER THAN "9" MOVE READ-CHAR TO CAL-BOX-MOVE-INCREMENT ELSE IF READ-CHAR = ESCAPE-KEY OR READ-CHAR = ALTERNATE-EXIT-KEY MOVE "N" TO LEFT-WO-REMOVING CALL "SD_REMOVE_WINDOW" MOVE ESCAPE-KEY TO READ-CHAR ELSE IF READ-CHAR = EXIT-WO-REMOVING-KEY MOVE "Y" TO LEFT-WO-REMOVING CALL "SD_SUSPEND_WINDOW" MOVE ESCAPE-KEY TO READ-CHAR ELSE MOVE INVALID-KEY TO READ-CHAR. PREV-DAY. SUBTRACT 1 FROM WORKING-DAY. IF WORKING-DAY = ZERO SUBTRACT 1 FROM WORKING-MONTH PERFORM CHECK-YEAR-END PERFORM FORMAT-MONTH MOVE DAYS-IN-WORKING-MONTH TO WORKING-DAY. NEXT-WEEK. ADD 7 TO WORKING-DAY. IF WORKING-DAY > DAYS-IN-WORKING-MONTH SUBTRACT DAYS-IN-WORKING-MONTH FROM WORKING-DAY ADD 1 TO WORKING-MONTH PERFORM CHECK-YEAR-END PERFORM FORMAT-MONTH. PREV-WEEK. IF WORKING-DAY > 7 SUBTRACT 7 FROM WORKING-DAY ELSE SUBTRACT 1 FROM WORKING-MONTH PERFORM CHECK-YEAR-END PERFORM FORMAT-MONTH COMPUTE WORKING-DAY = DAYS-IN-WORKING-MONTH + WORKING-DAY - 7. NEXT-DAY. ADD 1 TO WORKING-DAY. IF WORKING-DAY > DAYS-IN-WORKING-MONTH ADD 1 TO WORKING-MONTH PERFORM CHECK-YEAR-END PERFORM FORMAT-MONTH MOVE 1 TO WORKING-DAY. PREV-MONTH. SUBTRACT 1 FROM WORKING-MONTH. PERFORM CHECK-YEAR-END. PERFORM FORMAT-MONTH. NEXT-MONTH. ADD 1 TO WORKING-MONTH PERFORM CHECK-YEAR-END PERFORM FORMAT-MONTH. SPECIFY-MONTH. DISPLAY BOTTOM-LINE-CLEAR. DISPLAY SPECIFY-MONTH-SCREEN.  ` c ACCEPT SPECIFY-MONTH-SCREEN. IF WORKING-MONTH < 1 OR WORKING-MONTH > 12 OR WORKING-YEAR < 1 CALL "SD_ERROR_MESSAGE" USING DATE-ERROR-MESSAGE GO TO SPECIFY-MONTH. DISPLAY BOTTOM-LINE-CLEAR. DISPLAY HELP-PROMPT. PERFORM FORMAT-MONTH. CUR-MONTH. ACCEPT WORKING-YMD FROM DATE. MOVE 19 TO WORKING-CENT. PERFORM FORMAT-MONTH. *** Move calendar box in requested direction. If the same direction * key is pressed twice in succession, accelerate the movement. MOVE-BOX. IF READ-CHAR = PREV-READ-CHAR COMPUTE HORIZONTAL-MOVE-DISTANCE = 10 * CAL-BOX-MOVE-INCREMENT COMPUTE VERTICAL-MOVE-DISTANCE = 3 * CAL-BOX-MOVE-INCREMENT ELSE MOVE CAL-BOX-MOVE-INCREMENT TO HORIZONTAL-MOVE-DISTANCE, VERTICAL-MOVE-DISTANCE. IF READ-CHAR = MOVE-LEFT-KEY CALL "SD_MOVE_WINDOW_LEFT" USING HORIZONTAL-MOVE-DISTANCE ELSE IF READ-CHAR = MOVE-RIGHT-KEY CALL "SD_MOVE_WINDOW_RIGHT" USING HORIZONTAL-MOVE-DISTANCE ELSE IF READ-CHAR = MOVE-UP-KEY CALL "SD_MOVE_WINDOW_UP" USING VERTICAL-MOVE-DISTANCE ELSE IF READ-CHAR = MOVE-DOWN-KEY CALL "SD_MOVE_WINDOW_DOWN" USING VERTICAL-MOVE-DISTANCE. DISPLAY-HELP-WINDOW. CALL "SD_CREATE_WINDOW" USING HELP-BOX-LINE, HELP-BOX-COLUMN, HELP-BOX-HEIGHT, HELP-BOX-WIDTH, HELP-BOX-LABEL. DISPLAY HELP-SCREEN. CALL "SD_READ_CHAR" USING READ-CHAR. MOVE INVALID-KEY TO READ-CHAR. CALL "SD_REMOVE_WINDOW". SHIFT-DAY. MOVE CAL-REST-OF-MONTH TO CAL-FIRST-REST. CHECK-YEAR-END. IF WORKING-MONTH = ZERO MOVE 12 TO WORKING-MONTH SUBTRACT 1 FROM WORKING-YEAR ELSE IF WORKING-MONTH > 12 MOVE 1 TO WORKING-MONTH ADD 1 TO WORKING-YEAR. CALC-DAYS-IN-MONTH SECTION. CALC-DAYS-IN-MONTH-GOTO. GO TO 31-DAY-MONTH 28-29-DAY-MONTH 31-DAY-MONTH 30-DAY-MONTH 31-DAY-MONTH 30-DAY-MONTH 31-DAY-MONTH 31-DAY-MONTH 30-DAY-MONTH 31-DAY-MONTH 30-DAY-MONTH 31-DAY-MONTH DEPENDING ON DIM-MONTH. 31-DAY-MONTH. MOVE 31 TO DAYS-IN-WORKING-MONTH. MOVE 31-DAY-FORMAT TO CAL-WEEKS-REST. GO TO CALC-DAYS-IN-MONTH-EXIT. 30-DAY-MONTH. MOVE 30 TO DAYS-IN-WORKING-MONTH. MOVE 30-DAY-FORMAT TO CAL-WEEKS-REST. GO TO CALC-DAYS-IN-MONTH-EXIT. 28-29-DAY-MONTH. MOVE DIM-YEAR TO LEAP-TEST-YEAR. PERFORM LEAP-YEAR-CHECK. IF LEAP-YEAR MOVE 29 TO DAYS-IN-WORKING-MONTH MOVE 29-DAY-FORMAT TO CAL-WEEKS-REST ELSE MOVE 28 TO DAYS-IN-WORKING-MONTH MOVE 28-DAY-FORMAT TO CAL-WEEKS-REST. CALC-DAYS-IN-MONTH-EXIT. EXIT. *** End of SDCALENDAR.CO *** .@'Fo'Hq}'Hq}MAKE_SD_CALL.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_call.cli,v 1.4 1995/07/11 20:47:44 mark Exp mark $ $Log: make_sd_call.cli,v $ Revision 1.4 1995/07/11 20:47: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 MAKE_SD_CALL.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] string/k [!equal,,%0/init/shutdown/periodic/pre_hot/post_hot/pre_input/post_input%] string help [!else][!equal,,%1%] string help [!end][!end] [!equal,help,[!string]] write write Usage: %0\%{/listname} {program_id} write write ,,,,,,,,,,,,{/listname} indicates the particular Call List to write ,,,,,,,,,,,,,,,,which an entry for {program_id} is to be added. write ,,,,,,,,,,,,,,,,The available lists are: write ,,,,,,,,,,,,,,,,,,,,/INIT,,,,,,,,,Runs at initialization time write ,,,,,,,,,,,,,,,,,,,,/SHUTDOWN,,,,,Runs at shutdown time write ,,,,,,,,,,,,,,,,,,,,/PERIODIC,,,,,Runs at periodic timeouts write ,,,,,,,,,,,,,,,,,,,,/PRE_HOT,,,,,,Runs before a hot key call write ,,,,,,,,,,,,,,,,,,,,/POST_HOT,,,,,Runs after returning from hot key write ,,,,,,,,,,,,,,,,,,,,/PRE_INPUT,,,,Runs before an input write ,,,,,,,,,,,,,,,,,,,,/POST_INPUT,,,Runs following an input write ,,,,,,,,,,,,,,,,More than one of these switches can be specified write ,,,,,,,,,,,,,,,,,,but at least one is required. write write ,,,,,,,,,,,,,,,,{program_id}_call.ob will be created. write ,,,,,,,,,,,,,,,,,,Include this file on the LINK command line write ,,,,,,,,,,,,,,,,,,in addition to {program_id}.ob write ,,,,,,,,,,,,,,,,,,for any program that should automatically write ,,,,,,,,,,,,,,,,,,call {program_id}. write [!else] [!equal,,[!pathname masm_32char.ps]] write Error: File does not exist: MASM_32CHAR.PS write That file is the long version of the Macro Assembler's & permanent symbols table write It should reside in :UTIL. It may be created by the & MAKE_MASM_32CHAR macro. [!else] write write ,,,,%1%_CALL.OB will be created. write ,,,,,,,,Include this file on the LINK command line write ,,,,,,,,,,in addition to %1%.OB write ,,,,,,,,,,for any program that should automatically write ,,,,,,,,,,call %1%. write delete/2=ignore %1%_call.sr write/l=%1%_call.sr .NREL 5 write/l=%1%_call.sr .EXTL %1% [!nequal,,%0/init%] write/l=%1%_call.sr .EXTC EXTC_SD_INIT_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_INIT_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/shutdown%] write/l=%1%_call.sr .EXTC EXTC_SD_SHUTDOWN_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_SHUTDOWN_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/periodic%] write/l=%1%_call.sr .EXTC EXTC_SD_PERIODIC_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_PERIODIC_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/pre_hot%] write/l=%1%_call.sr .EXTC EXTC_SD_PRE_HOT_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_PRE_HOT_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/post_hot%] write/l=%1%_call.sr .EXTC EXTC_SD_POST_HOT_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_POST_HOT_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/pre_input%] write/l=%1%_call.sr .EXTC EXTC_SD_PRE_INPUT_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_PRE_INPUT_CALLS write/l=%1%_call.sr .DWORD %1% [!end] [!nequal,,%0/post_input%] write/l=%1%_call.sr .EXTC EXTC_SD_POST_INPUT_CALLS write/l=%1%_call.sr .DWORD EXTC_SD_POST_INPUT_CALLS write/l=%1%_call.sr .DWORD %1% [!end] write/l=%1%_call.sr .END x/s masm/ps=masm_32char.ps %1%_call [!equal,(),([!string])] delete/2=ignore %1%_call.sr write write ,,,,%1%_CALL.OB successfully created and is ready for use write [!end] [!end] [!end] pop .W'N9'NI'NIMAKE_SD_CONFIG.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_config.cli,v 1.8 1995/07/11 20:47:44 mark Exp mark $ $Log: make_sd_config.cli,v $ Revision 1.8 1995/07/11 20:47:44 mark Updated revision and copyright Revision 1.7 1994/03/25 20:00:02 mark Modified to allow switch abbreviations, and to include support for /PROGSPECIFIC={YES|NO} switch, which controls whether or not programs linked with the resulting ?LINKED or ?LOADER -type config files will look for a program-specific dynamic config file before using the linked defaults. Revision 1.6 1994/03/23 23:41:26 mark Modified to build either a dynamic config file, a config loader, or both, as well as the standard linked-type config file. The names for the dynamic config files and loader modules can be specified now. Revision 1.5 1994/03/23 01:10:25 mark Modified to build dynamic config files with associated loader modules, as well as standard linkable config modules. Revision 1.4 1994/03/16 17:44:49 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 *********************************************************************** [!end] comment MAKE_SD_CONFIG.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment *** This macro assembles a customized SD_CONFIG.SR file comment * for the SCREEN DEMON system. push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!equal,,%1%] %0% SD_CONFIG [!else][!nequal,,%0/dynami/dynam/dyna/dyn/dy/d%] %0\%%0\dynami\dynam\dyna\dyn\dy\d%/dynamic=%0/dynami=%%0/dynam=%%0/dyna=%%0/dyn=%%0/dy=%%0/d=% %1-% [!else][!nequal,,%0/loade/load/loa/lo/l%] %0\%%0\loade\load\loa\lo\l%/loader=%0/loade=%%0/load=%%0/loa=%%0/lo=%%0/l=% %1-% [!else][!nequal,,%0/loaderonl/loaderon/loadero%] %0\%%0\loaderonl\loaderon\loadero%/loaderonly=%0/loaderonl=%%0/loaderon=%%0/loadero=% %1-% [!else][!nequal,,%0/progspecifi/progspecif/progspeci/progspec/progspe/progsp/progs/prog/pro/pr/p%] %0\%%0\progspecifi\progspecif\progspeci\progspec\progspe\progsp\progs\prog\pro\pr\p%/progspecific=%0/progspecifi=%%0/progspecif=%%0/progspeci=%%0/progspec=%%0/progspe=%%0/progsp=%%0/progs=%%0/prog=%%0/pro=%%0/pr=%%0/p=% %1-% [!else][!equal,,[!equal,,%0/loader/loaderonly%]NA[!else]%0/dynamic%[!end]] %0%%0\loader\loaderonly%/dynamic/loader=%0/loader%%0/loaderonly%/loaderonly %1-% [!else][!equal,,[!equal,,%0/dynamic%]NA[!else]%0/dynamic=%[!end]] %0\%%0\dynamic%/dynamic=%1%.SD %1-% [!else][!equal,,[!equal,,%0/loader/loaderonly%]NA[!else]%0/loader=%[!end]] [!nequal,,%0/loaderonly=%] %0\%%0\loader\loaderonly%/loader=%0/loaderonly=%/loaderonly %1-% [!else] %0\%%0\loader%/loader=%0/dynamic=%.SDL %1-% [!end] [!else] [!nequal,,%0/dynamic%][!equal,,%0/loaderonly%] write write Compiling configuration file [!path %1%.SR] as dynamic write delete/2=ignore =?[!pid]config_build.tmp.sr write/l==?[!pid]config_build.tmp.sr .DUSR ?BUILD? = 1 ((write xeq/s),xeq/s) & masm/ps=masm_32char.ps/ulc/o=%/dynamic=%%0\DYNAMIC\LOADER\LOADERONLY\PROGSPECIFIC% & ?[!pid]config_build.tmp.sr SD_CONFIG_DEFINES %1-% [!equal,(),([!string])] write write Building dynamic configuration file [!ename [!path %0/dynamic=%.ob]] write ((write xeq/s),xeq/s) & link/supst/udf/nbot=0/unusedsize=0 %0/dynamic=% [!end] [!equal,(),([!string])] delete/2=ignore %0/dynamic=% delete/2=ignore %0/dynamic=%.ob ((write rename),rename) [!path %0/dynamic=%.pr] [!ename [!path %0/dynamic=%.pr]] write write [!efile [!path %0/dynamic=%]] is now ready for use [!end] [!end][!end] [!nequal,,%0/loader%] write write Building configuration loader module %0/loader=%.OB write Specify this file instead of a standard configuration file {/CONFIG= switch} write when linking programs that are to load the dynamic configuration file write ,,,,%0/dynamic=% write delete/2=ignore =?[!pid]config_build.tmp.sr write/l==?[!pid]config_build.tmp.sr .DUSR ?BUILD? = 2 delete/2=ignore =?[!pid]config_load.tmp.sr write/l==?[!pid]config_load.tmp.sr ?LOAD_FILE %0/dynamic=% [!nequal,,%0/progspecific%] [!equal,,%0/progspecific%] write/l==?[!pid]config_load.tmp.sr SPECIFIC_PROGRAM_CONFIG_LOAD? YES [!else] write/l==?[!pid]config_load.tmp.sr SPECIFIC_PROGRAM_CONFIG_LOAD? %0/progspecific=% [!end] [!end] ((write xeq/s),xeq/s) masm/ps=masm_32char.ps/ulc& %0\DYNAMIC\LOADER\LOADERONLY\PROGSPECIFIC%/o=%0/loader=% & ?[!pid]config_build.tmp.sr SD_CONFIG_DEFINES & ?[!pid]config_load.tmp.sr %1-% [!equal,(),([!string])] write write [!efile [!path %0/loader=%.OB]] is now ready for use [!end] [!end] [!equal,,%0/dynamic/loader%] write write Compiling configuration file [!path %1%.SR] write delete/2=ignore =?[!pid]config_build.tmp.sr write/l==?[!pid]config_build.tmp.sr .DUSR ?BUILD? = 0 delete/2=ignore =?[!pid]config_load.tmp.sr [!nequal,,%0/progspecific%] [!equal,,%0/progspecific%] write/l==?[!pid]config_load.tmp.sr SPECIFIC_PROGRAM_CONFIG_LOAD? YES [!else] write/l==?[!pid]config_load.tmp.sr SPECIFIC_PROGRAM_CONFIG_LOAD? %0/progspecific=% [!end] [!else] write/l==?[!pid]config_load.tmp.sr [!end] ((write xeq/s),xeq/s) & masm/ps=masm_32char.ps/ulc/o=%1%%0\DYNAMIC\LOADER\LOADERONLY\PROGSPECIFIC% & ?[!pid]config_build.tmp.sr SD_CONFIG_DEFINES & ?[!pid]config_load.tmp.sr %1-% [!equal,(),([!string])] write write [!efile [!path %1%.OB]] is now ready for use [!end] [!end] delete/2=ignore =?[!pid]config_build.tmp.sr delete/2=ignore =?[!pid]config_load.tmp.sr [!end][!end][!end][!end][!end][!end][!end][!end] pop .@'Fo'Hq'Hq0EkMAKE_SD_ICX.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_icx.cli,v 1.4 1995/07/11 20:47:48 mark Exp mark $ $Log: make_sd_icx.cli,v $ Revision 1.4 1995/07/11 20:47:48 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.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] *** MAKE_SD_ICX *** This macro creates a new ICOBOL interpreter linked for use with the SCREEN DEMON Screen Management Package. Usage: MAKE_SD_ICX{/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 /LANGRT global switch should be specified if the LANG_RT library should be linked into the interpreter. The /CBCALL global switch can be specified if the DG-provided CBCALL library should also be linked with the new interpreter. THIS IS NOT REQUIRED!!! SCREEN DEMON provides compatible routines that perform most of the same functions, but do not require LANG_RT.LB to be linked in also. The /COB32 global switch should be specified if 32-bit COBOL subprograms are also being linked with the new interpreter. 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. The /MULTISAM global switch includes Threshold's MULTISAM routine. MULTISAM, which must be purchased separately, allows an ICOBOL program to simultaneously access rev 1.4 and rev 1.5 ISAM files. If /MULTISAM is used, the following additional switches may be included: /OPEN=rev# specifies the version of MINISAM to try first for OPEN's, where rev# is either 14 or 15 (15 format is the same as rev 1.6). If the OPEN fails, then the alternate version of MINISAM is called. The default value is the revision of the ICX being created. /CREATE=rev# specifies the version of MINISAM to use for creating any new files, where rev# is either 14 or 15. The default value is the revision of the ICX being created. /13 must be included if the old MINISAM is actually revision 1.3 instead of 1.4 The /WLI global switch includes Threshold's WHO_LOCKED_IT? routine, which must be purchased separately. When a user encounters a locked record, WHO_LOCKED_IT? identifies the terminal and user that has the record locked. It can optionally send messages to the lock holder, and terminate them if the needed record is not released. /NOVM Causes the resulting ICX 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 ICX. /NOMODELID Prevents the resulting ICX interpreter from querying the terminal for its model id on startup. ICX will assume it is running on a D210 terminal. This switch is often used with /NOVM. [!end] [!equal,,%0/o=%] %0\%%0\o%/o=[!path =]:SD_ICX %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 searchlist [!searchlist]& :UTIL:ICOBOL& [!nequal,,%0/COB32%]& :UTIL:COBOL& [!end]& [!nequal,,%0/LANGRT/CBCALL/COB32/CEO%]& :UTIL:LANG_RT& [!end]& [!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.40 [!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] string/k [!equal,1.31,[=?[!pid]rev.tmp]] write ICOBOL revision 1.31 is not supported! string ERROR [!else] [!equal,,[!path SD_POSSESS_ICX_[=?[!pid]rev.tmp].PAT]] write Cannot find Screen Demon POSSESS patch file for ICOBOL rev [=?[!pid]rev.tmp]: write ,,,,,,,,SD_POSSESS_ICX_[=?[!pid]rev.tmp].PAT string ERROR [!end] [!end] [!nequal,,%0/MULTISAM%] [!nequal,,[!equal [=?[!pid]rev.tmp],1.40]t[!end][!equal [=?[!pid]rev.tmp],1.41]t[!end]] var9 14 [!else] var9 15 [!end] [!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 [!equal,,[!string]] [!equal,IC17,[!equal,1.70,[=?[!pid]rev.tmp]]IC17[!end][!equal,1.71,[=?[!pid]rev.tmp]]IC17[!end]] [!equal,,comment] ICOBOL 1.70 and 1.71: Make sure NO_QMGR.OB, and NO_PASSWD.OB for ICOBOL 1.71, have been extracted from CRT.LB so that they can be included in the link to prevent LANG_RT Queued Task Manager routines and UNIX-emulation passwd routines from being linked with the new ICX. Note that the standard ICX was apparently linked with these suppressor modules. [!end] push prompt pop string [=?[!pid]rev.tmp] directory [!edirectory [!pathname CRT.LB]] [!equal,,[!path =NO_QMGR.OB]] write Extracting NO_QMGR.OB from ICOBOL's CRT.LB... xeq lfe x crt.lb NO_QMGR [!end] [!equal,1.71,[!string]] [!equal,,[!path =NO_PASSWD.OB]] write Extracting NO_PASSWD.OB from ICOBOL's CRT.LB... directory [!edirectory [!pathname CRT.LB]] xeq lfe x crt.lb no_passwd [!end] [!end] pop [!end] ((write x/s),x/s) link& /o=[!path [!edirectory %0/o=%]]:?[!pid]icx& /rev=[=?[!pid]rev.tmp]& [!nequal,,%0/CEO%]/ULAST=STACK[!end]& %0\O\NOTURBO\PARTURBO\COB32\CBCALL\LANGRT\CEO\WP\CONFIG\PRISWI\MULTISAM\OPEN\CREATE\13\WLI\NOVM\NOMODELID%& & [!equal,IC17,[!equal,1.70,[=?[!pid]rev.tmp]]IC17[!end][!equal,1.71,[=?[!pid]rev.tmp]]IC17[!end]]& [!nequal,,%0/LANGRT/COB32/CBCALL/CEO%]/Mtop=2[!else]/Mtop=1[!end]& /pid_size=ANYPID& /nsls & & uc/align=1 ud/align=1 sc/align=1 sd/align=1 & $keepsea/val=1 $dev_is_per/val=0 $nomemdump/val=1 & & & [!else][!equal,,comment]...not ICOBOL 1.70 or 1.71...[!end]& & & [!nequal,,%0/LANGRT/COB32/CBCALL/CEO%]/Mtop=1[ E!else]/Ktop=205[!end]& /stack=10000/tasks=6/pid_size=HYBRID & & .RESERVE/VAL=128 MAIN/START & & [!end]& & & & [!nequal,,%0/MULTISAM%]& MULTISAM & MULTI_ICX_REV/VALUE=[!var9] & MULTI_OPEN_REV/VALUE=[!nequal,,%0/OPEN=%]%0/OPEN=%[!else][!var9][!end] & MULTI_CREATE_REV/VALUE=[!nequal,,%0/CREATE=%]%0/CREATE=%[!else][!var9][!end] & [!end]& & [!equal,1.70,[=?[!pid]rev.tmp]]& NAMTB& SD_CICX_1.70_INTF& [!end]& & [!equal,1.71,[=?[!pid]rev.tmp]]& NAMTB& SD_CICX_INTF& [!end]& & ICX.LB& & [!nequal,,%0/CONFIG=%]%0/CONFIG=%[!else]SD_ICX_CONFIG[!end]& & %1-%& & [!nequal,,%0/WLI%]& SD_WLI_INTF WHO_LOCKED_IT& [!end]& & [!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/CBCALL%]& CBCALL.LB/F& [!end]& & [!nequal,1.70,[=?[!pid]rev.tmp]]& [!nequal,1.71,[=?[!pid]rev.tmp]]& NAMTB& SD_ICX_INTF& [!end]& [!end]& & [!nequal,,%0/COB32%]& SD_COBOL32_INTF& [!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%]& COBOL.LB ICALL32.OB& [!end]& & [!equal,1.70,[=?[!pid]rev.tmp]]& NO_QMGR& CRT.LB& [!else][!equal,1.71,[=?[!pid]rev.tmp]]& NO_PASSWD NO_QMGR& CRT.LB& [!else]& [!nequal,,%0/LANGRT/CBCALL/COB32/CEO%]& MULTITASKING NO_QUEUED_TASK_MGR LANG_RT.LB& [!else]& SD_NO_LANG_RT& [!end]& [!end][!end] [!end] [!equal,(),([!string])] delete/2=ignore [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR].PH x/s patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=SD_POSSESS_ICX_[=?[!pid]rev.tmp].PAT/yes [!end] [!equal,(),([!string])] [!nequal,,%0/PARTURBO%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=PAR_TURBO.PAT/yes [!else][!nequal,,%0/NOTURBO%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=NO_TURBO.PAT/yes [!end][!end] comment Install all applicable fix patches [!nequal,,[!path ICX.PATCH_LIST]] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=([ICX.PATCH_LIST])/yes [!end] comment Install optional Screen Demon patch file [!nequal,,[!path SCREEN_DEMON.PAT]] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=SCREEN_DEMON.PAT/yes [!end] [!nequal,,%0/13%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=MULTISAM_1.3.PAT/yes [!end] [!nequal,,%0/WLI%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]/p=WLI.ICX.PAT/yes [!end] [!end] [!nequal,(),([!string])] write [!ascii 207] write Errors prevent creation of new ICX interpreter! [!else] [!equal,,comment] Now that the new ICX 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 [!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]icx.PR]& to [!efile %0/o=%.PR] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR]& [!efile %0/o=%.PR] write Renaming [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.ST]& to [!efile %0/o=%.ST] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.ST]& [!efile %0/o=%.ST] write Renaming [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR.PH]& to [!efile %0/o=%.PR.PH] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icx.PR.PH]& [!efile %0/o=%.PR.PH] write write [!path %0/o=%.PR] is now ready for use [!end] delete/2=ignore =?[!pid]rev.tmp pop [!end][!end] .@'Fo'Hq'Hq ]MAKE_SD_SWAT.CLI ] [!equal,,RCS] **************************************************************** $Id: make_sd_swat.cli,v 1.4 1995/07/11 20:47:54 mark Exp mark $ $Log: make_sd_swat.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_SD_SWAT.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] *** MAKE_SD_SWAT *** This macro can be used to create a new version of the SWAT debugger for use with revision 3.00 of SCREEN DEMON. The new version will be called SD_SWAT.PR, and there will be an associated shared library file called SWAT_SCREEN_DEMON.SL Usage: MAKE_SD_SWAT{/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 SWAT_SCREEN_DEMON.SL is to be created. The step of creating the SD_SWAT.PR program will be skipped. [!end] [!equal,,%0/o=%] %0\%%0\o%/o=SWAT_SCREEN_DEMON.SL %1-% [!else][!equal,,%0/config=%] %0\%%0\config%/config=SD_DEBUGGER_CONFIG %1-% [!else] push prompt pop comment Adjust this searchlist command to fit your file system searchlist [!searchlist] :UTIL:SWAT& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] comment Build the special shared library for SD_SWAT to use make_screen_demon.sl%0\sl\slonly% SD_SWAT_INTF %1-% [!equal,,%0/sl/slonly%] write write Creating SCREEN DEMON version of SWAT debugger... [!equal,,[!path SWAT.PR]] write [!ascii 7]SWAT.PR not found - cannot create SD_SWAT.PR ! [!else] sd_possess/delete/sl=%/o=% SWAT [!nequal,,[!path SD_SWAT.PR]] write ,,,,SD_SWAT.PR is ready for use. [!end] [!end] [!end] write pop [!end][!end] .@'Fo)'Hq'Hqw SD_CCL.CLI w [!equal,,RCS] **************************************************************** $Id: sd_ccl.cli,v 1.5 1995/07/11 20:48:34 mark Exp mark $ $Log: sd_ccl.cli,v $ Revision 1.5 1995/07/11 20:48:34 mark Updated revision and copyright Revision 1.4 1995/01/03 00:18:23 mark Strips off .C and .OB extension from first argument if present before build /O= output filename from it 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_CCL.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro links an AOS/VS C program with Screen Demon. All standard CCL 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. Do not use this switch if /SDRING was specified. /CONFIG= Specifies that the indicated configuration file should be used instead of the default SD_SL_CONFIG.OB file. /PARTURBO Causes the program to 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 C 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. 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 comment Adjust this searchlist to fit your file system searchlist [!searchlist]& :util:c :util:lang_rt& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] write comment Strip extraneous extensions from main argument [!equal,T,[!equal,(.C),([!eextension %1\%])]T[!end][!equal,(.OB),([!eextension %1\%])]T[!end]] %0% [!ename %1\%]%1/% %2-% [!else] string/k [!equal,,%0/shared/sdring=%] [!equal,,%0/config=%] [!equal,,[!path SD_SL_CONFIG.OB]] write ,,,,Configuration file SD_SL_CONFIG.OB not found! string ERROR [!else] write ,,,,Using configuration file [!path SD_SL_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,),)CCL%0\s\shared\parturbo\noturbo\config\priswi\ceo\wp\sdring%& [!equal,,%0/o=%]/o=[!ename %1\%][!end] & & [!nequal,,%0/sdring=%]& [!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& %1-%& & [!else]& & [!equal,,%0/shared%]& [!nequal,,%0/config=%]& %0/config=%& [!else]& sd_sl_config& [!end]& [!end]& & %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%]& [!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/shared%]shared_[!end]screen_demon.lb [!end]& [!end] comment If the link was successful, 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] comment End of extension strip IF [!end] pop .@'Fo['Hq'HqN &SD_POSSESS.CLI N [!equal,,RCS] **************************************************************** $Id: sd_possess.cli,v 1.5 1995/07/11 20:50:15 mark Exp mark $ $Log: sd_possess.cli,v $ Revision 1.5 1995/07/11 20:50:15 mark Updated revision and copyright Revision 1.4 1994/04/07 15:52:01 mark Added /TASKS= switch to be passed to SD_POSSESS.PR 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_POSSESS.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,%1%] write S D _ P O S S E S S write ,,,,Insert SCREEN DEMON routines into one or more programs. write write Format write SD_POSSESS{/switches} program_name {program_name}... write write ,,,SD_POSSESS creates new versions of the named program{s} that contain write ,,,SCREEN DEMON. The original program is left untouched. write write Command Switches: write ,,,/CHECK write ,,,,,,,,Check to see if the program already contains a Screen Demon bootstrap write ,,,,,,,,without actually possessing the program if it does not. write write ,,,/O=SD-program-name write ,,,,,,,,Specifies the pathname for the Screen Demon version of the program to write ,,,,,,,,to be created. If this switch is not specified, the Screen Demon write ,,,,,,,,version will be created in the current directory with the name being write ,,,,,,,,"SD_" followed by the original program name. write write ,,,/DELETE write ,,,,,,,,Delete the existing Screen Demon version of the program. write write ,,,/BELOW write ,,,,,,,,Place the Screen Demon bootstrap underneath the program's shared write ,,,,,,,,partition even if there is room above it.,,This may be necessary for write ,,,,,,,,the occasional program that doesn't dynamically determine memory usage, write ,,,,,,,,but expects memory immediately above the LINK /KTOP to be available. write ,,,,,,,,Use this switch only if the possessed version won't run otherwise. write write ,,,/RING=ring-number {can be 4 or 5 or 6} write ,,,,,or write ,,,/RING=inner-ring-program-pathname.PR write ,,,,,,,,Specifies the inner ring program that will be used at execution time write ,,,,,,,,by the created program. If this is not a complete pathname then the write ,,,,,,,,file must be available through the searchlist. The default inner ring write ,,,,,,,,program is :SCREEN_DEMON_3.60:SCREEN_DEMON_RING_6.PR write write ,,,,,,,,If only a ring number is specified, the inner ring program name will write ,,,,,,,,be the above pathname with the given ring number replacing the "6". write write ,,,/SL=shared-library-pathname.SL write ,,,,,,,,Specifies the shared library that will be used at execution time by write ,,,,,,,,the created program. If this is not a complete pathname then the file write ,,,,,,,,must be available through the searchlist. The default shared library write ,,,,,,,,is :SCREEN_DEMON_3.60:SCREEN_DEMON.SL write write ,,,If neither /RING nor /SL are specified the created program will use the write ,,,,,,,,default inner ring program as specified above. write write ,,,/TASKS=number-of-extra-tasks write ,,,,,,,,Specifies the number of task control blocks required in write ,,,,,,,,the possessed program in addition to those needed by the write ,,,,,,,,the original program and by the Screen Demon kernel. write ,,,,,,,,If user subroutines have been linked with the Screen Demon write ,,,,,,,,inner ring or shared library that the possessed program write ,,,,,,,,will load, and these subroutines start additional tasks, write ,,,,,,,,then this switch must be specified to indicate how many. write write .../MVUX write ,,,,,,,,Indicates that the program being possessed is part of write ,,,,,,,,Data General's MV/UX system which emulates a UNIX write ,,,,,,,,environment under AOS/VS.,,A special patch file needed write ,,,,,,,,in this case will be installed after the possessed write ,,,,,,,,program is created. write [!else] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!equal,,%0/$verifySL%] [!nequal,,%0/sl=%] [!equal,,[!pathname %0/sl=%]] write WARNING: cannot find %0/sl=% [!end] [!end] %0%/$verifySL (%-%) [!else] [!nequal,,%0/d/de/del/dele/delet/delete%] [!nequal,,%0/o=%] [!nequal,,[!path %0/o=%.PR]] delete/2=ignore %0/o=%.PR [!else] [!equal,.PR,[!eextension %0/o=%]] delete/2=ignore %0/o=% [!end] [!end] [!else] [!nequal,,[!path =SD_[!efilename %1%].PR]] delete/2=ignore SD_[!efilename %1%].PR [!else] [!equal,.PR,[!eextension %1%]] delete/2=ignore SD_[!efilename %1%] [!end] [!end] [!end] [!end] x/s sd_possess%0/o/below/check/ring/sl/tasks% %1% [!equal,(),([!string])] [!nequal,,%0/mvux%] [!nequal,,%0/o=%] [!nequal,,[!path %0/o=%.PR]] string %0/o=%.PR [!else] [!equal,.PR,[!eextension %0/o=%]] string %0/o=% [!end] [!end] [!else] [!nequal,,[!path =SD_[!efilename %1%].PR]] string SD_[!efilename %1%].PR [!else] [!equal,.PR,[!eextension %1%]] string SD_[!efilename %1%] [!end] [!end] [!end] delete/2=ignore [!string].ph x patch/t==[!string]/p=sd_mvux_possess.pat/y [!end] [!end] [!end] pop [!end] .@'Fo^'Hq'Hqw QSD_POSSESS_ICX_1.53.PAT w ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.53.pat,v 1.4 1995/07/11 20:50:20 mark Exp mark $ ; ; $Log: sd_possess_icx_1.53.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 revision 1.53 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+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 342 in next line is actually ICX's STATUS address, ; which PATCH won't accept in the instruction format necessary. CSTOP+2 [LDA 0,342,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+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+1341 [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+1360,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+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+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+117 [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 SD_POSSESS_ICX_1.71.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.71.pat,v 1.5 1995/07/11 20:50:22 mark Exp mark $ ; ; $Log: sd_possess_icx_1.71.pat,v $ ; Revision 1.5 1995/07/11 20:50:22 mark ; Updated revision and copyright ; ; Revision 1.4 1995/06/29 22:59:21 mark ; ICOBOL rev 1.71.01 differs slightly from 1.71.00 in the debugger interface, ; requiring conditional patching. ; ; 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 for ICOBOL. ; ;This file applies only to revision 1.71 of the Interactive COBOL ; interpreter running under AOS/VS or AOS/VS II, using Screen Demon ; revision 3.60 %PROGRAM ;These patches modify ICX's op code dispatch table so that appropriate ; functions are routed through Screen Demon handlers. DISPATCH_OP.ZERO 0 #dispatch\ ^+1 0 [] dispatch @. SD_OP.ZERO_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.STP 0 #(dispatch+(116*2))\ ^+1 0 [] dispatch+(116*2) @. SD_OP.STP_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.CHN 0 #(dispatch+(120*2))\ ^+1 0 [] dispatch+(120*2) @. SD_OP.CHN_INTERCEPTOR\ ^+1 @. [] DISPATCH_OP.XIT 0 #(dispatch+(171*2))\ ^+1 0 [] ;This patch prevents ICX from requesting BELL line discipline when it ; calls the UNIX emulation function ioctl() during initialization. ; This in turn prevents the undesirable single-character binary read ; task from starting. set_terminal_state+247 [LCALL ioctl,0,3] [LCALL SD_ICX_IOCTL_NO_BELL_LD,1,3] ^+1 [] [] ^+1 [] [] ^+1 [] [] ;This patch diverts control through Screen Demon when ICX attempts to call ; its standard prg_run() function. This allows the name of the ICOBOL ; program about to begin (or resume) executing to be obtained. prg_run [WSAVR 14] [LJMP SD_ICX_PRG_RUN,1] ^+1 [] [] ^+1 [LDASP 0] [] ;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. accept_field [WSAVR 33] [LJMP SD_ICX_ACCEPT_FIELD,1] ^+1 [] [] ^+1 [XCALL ensure_curses_initialized,1,0] [] ^+1 [] [NOP] ^+1 [] [NOP] ;Replace ICX's character entry loop in its accept_field() function with ; more efficient Screen Demon routine. accept_field+464 [XCALL fetch_key,1,0] [LJSR SD_ICX_INPUT_FIELD,1] ^+1 [] [] ^+1 [] [] ;Replace ICX's fetch_key() function. fetch_key [WSAVR 4] [LJMP SD_ICX_FETCH_KEY,1] ^+1 [] [] ^+1 [LDASP 0] [] ;These patches allow Screen Demon to know when the external debugger process ; ICDEB has control, so that screen flushes in ICX can be inhibited. send_disconnect_event+12 [LWLDA 2,debug_msbuf,0] [LPSHJ SD_ICX_DEBUGGER_DISCONNECT,1] ^+1 [] [] ^+1 [] [] ;For ICOBOL 1.71.00 send_disconnect_event+2166 [LCALL sys_irec,0,1] [LJMP SD_ICX_DEBUGGER_?IREC,1] record_cancel_event=0 ^+1 [] [] record_cancel_event=0 ^+1 [] [] record_cancel_event=0 ^+1 [] [NOP] record_cancel_event=0 ;For ICOBOL 1.71.01 record_cancel_event+2360 [LCALL sys_irec,0,1] [LJMP SD_ICX_DEBUGGER_?IREC,1] record_cancel_event<>0 ^+1 [] [] record_cancel_event<>0 ^+1 [] [] record_cancel_event<>0 ^+1 [] [NOP] record_cancel_event<>0 ;For ICOBOL 1.71.01 SD_ICX_DEBUGGER_?IREC+27 [LJMP send_disconnect_event+2172,1] [LJMP record_cancel_event+2364,1] record_cancel_event<>0 ^+1 [] [] record_cancel_event<>0 ^+1 [] [] record_cancel_event<>0 ;End of patch .@'Fo!'Hq'HqSD_B32_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_b32_defines.sr,v 1.4 1995/07/11 20:48:19 mark Exp mark $ ; ; $Log: sd_b32_defines.sr,v $ ; Revision 1.4 1995/07/11 20:48: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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Interface for B32 allowing B32-BASIC programs to call ; SCREEN DEMON routines via UCALLs. ; ; Screen Demon rev 3.60.01 .TITLE SD_B32_USERSUBS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; 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 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Kill MASM's macro escape character .ESC ;Symbols expected by B32 that are defined in this module .ENT USR_DEF ;argument definitions for user routines .ENT USR_DSP ;dispatch table for user routines ;************************************************************************** ;* MACRO AND SYMBOL DEFINITIONS * ;************************************************************************** ;Stack frame size to use for USR_ENT routine ; Note: SD arg conversion routine needs this to be at least 1 .DUSR USR_ENT?FRAME_SIZE = 10 ;Base UCALL number for SCREEN DEMON UCALL's .DUSR MIN?UCALL = 1 ;A MAX?UCALL symbol will also be defined equal to the highest UCALL number ;Give reasonable names to the accumulators .DUSR AC0 = 0 .DUSR AC1 = 1 .DUSR AC2 = 2 .DUSR AC3 = 3 ;Give mnemonic names to the offsets to stack frame locations .DUSR CALLER_AC2 = -4 ;Caller's AC2 .DUSR CALLER_AC1 = -6 ;Caller's AC1 .DUSR CALLER_AC0 = -10 ;Caller's AC0 .DUSR ARGC = -11 ;Argument count .DUSR ARG1 = -14 ;Argument 1 .DUSR ARG2 = -16 ;Argument 2 .DUSR ARG3 = -20 ;Argument 3 ;An argument specifier for a B32 UCALL is a double word, where the lowest ; 4 bits contain the number of arguments expected by the routine, ; with argument types described by two-bit fields extending from ; bit 27 upward (arg 1 type is at bit 27, arg 2 at bit 25, etc.). ;Mask that extracts just the argument count from the specifier: .DUSR UA.ARGCT?MASK = 17 ;Argument types for B32 UCALL's: .DUSR UA.SEX = 0 ;string expression .DUSR UA.NEX = 1 ;numeric expression .DUSR UA.SV = 2 ;string variable .DUSR UA.NV = 3 ;numeric variable ;SCREEN DEMON argument types (4 bits each), as pointed to by byte ptr on stack: .DUSR NARROW = 0 ;single word .DUSR WIDE = 1 ;double word .DUSR STRING = 2 ;string ;Upper bit of 4-bit SD arg type is "returned data" flag .DUSR ?RTN = 10 ;Augmented arg types specifying that data of that type is returned in that arg .DUSR NARROW?RTN = (NARROW)!(?RTN) .DUSR WIDE?RTN = (WIDE)!(?RTN) .DUSR STRING?RTN = (STRING)!(?RTN) ;Mask that extracts just the lowest type from SCREEN DEMON arg specifier .DUSR SD.ARG?MASK = 17 ;B32 types anologous to each of the SCREEN DEMON argument types: .DUSR NARROW.B32 = UA.NEX .DUSR WIDE.B32 = UA.NEX .DUSR STRING.B32 = UA.SEX .DUSR NARROW?RTN.B32 = UA.NV .DUSR WIDE?RTN.B32 = UA.NV .DUSR STRING?RTN.B32 = UA.SV ;All .PART definitions are declared as CODE, even though they are really ; DATA, to avoid disturbing B32's placement of its .PM file ?SPAGE area, ; which is apparently not page .ALIGN'd ;Declare dispatch table .PART SD_B32_USR_DSP_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS .DWORD MIN?UCALL ;Dbl word pair in front of table defines .DWORD MAX?UCALL ; beginning and ending table index USR_DSP: ;Declare B32 argument definition table .PART SD_B32_USR_DEF_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS USR_DEF: .WORD MIN?UCALL ;Word pair at front of table defines .WORD MAX?UCALL ; beginning and ending table index ;Declare SCREEN DEMON argument conversion table .PART SD_B32_ARG_DEF_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS SD_ARG_DEF: ;Declare SCREEN DEMON routine name/UCALL number tables .PART SD_B32_UCALL_NAMES_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS SD_UCALL_NAMES: .PART SD_B32_UCALL_NUMS_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS SD_UCALL_NUMBERS: ;Format of an entry in the SD_UCALL_NUMBERS table (each field is one word): .DUSR UN.ARGCT = 0 ;Number of arguments for this UCALL .DUSR UN.NAME = 1 ;Offset from SD_UCALL_NAMES in chars ; to name of UCALL routine .DUSR UN.NUM = 2 ;UCALL number for this UCALL .DUSR UN.SIZE = 3 ;Size of an entry in words ;Macro that creates a complete UCALL definition for a given routine. ; ; Usage: ; SD?UCALL RoutineName,Arg1Type,Arg2Type,...,ArgNType ; ; This macro will declare an RoutineName to be an external symbol, ; append an entry for the routine to the UCALL dispatch table, and ; append an argument specification to the argument definition table. .MACRO SD?UCALL ** ** .PUSH .NOCON ** .NOCON 1 ** ** .PUSH .RDXO ** .RDXO 10. ** ** ;Keep track of the number of UCALL's defined ** .IFE .MCALL .DUSR MAX?UCALL = MIN?UCALL ** .ELSE .DUSR MAX?UCALL = MAX?UCALL+1 ** .ENDC ** .RDXO .POP ** ** ;Note that routine is an external symbol ** .EXTL ^1 ** ** ;Add entry for this routine to the UCALL Name and Number tables ** .PART SD_B32_UCALL_NAMES_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS ** ?NAME_PTR = (.-SD_UCALL_NAMES)*2 ** .TXT "^1" ** ** .PART SD_B32_UCALL_NUMS_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS ** .WORD .ARGCT-1 ** .WORD ?NAME_PTR ** .WORD MAX?UCALL ** ** ;Add entry for this routine to the USR_DSP dispatch table ** .PART SD_B32_USR_DSP_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS ** .DWORD ^1-. ** ** ;Build argument specification entries for both B32 and SD tables ** .DUSR B32?SPEC = .ARGCT-1 ;init B32 arg spec to arg count ** .DUSR B32?BIT = 27. ** .DUSR SD?SPEC = 0 ** .DUSR ?I = 1 ;skip first arg since it is routine name ** ** .DO .ARGCT-1 ** .DUSR ?I = ?I+1 ** .DUSR B32?SPEC = (B32?SPEC)!((^?I.B32)S(B32?BIT)) ** .DUSR B32?BIT = B32?BIT-2 ** .DUSR SD?SPEC = ((SD?SPEC)*16.)!(^?I) ** .ENDC ** ** ;Put now complete argument spec into B32's USR_DEF table ** .PART SD_B32_USR_DEF_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS ** .DWORD B32?SPEC ** ** ;Put now complete SCREEN DEMON argument spec into SD_ARG_DEF table ** .PART SD_B32_ARG_DEF_PART ALIGN=1,CODE,LONG,SHARED,NORM,GLOBAL,MESS ** .DWORD SD?SPEC ** ** .NOCON .POP % .EOF .@'Fo"'Hq'HqSD_B32_USERSUBS.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_b32_usersubs.sr,v 1.4 1995/07/11 20:48:20 mark Exp mark $ ; ; $Log: sd_b32_usersubs.sr,v $ ; Revision 1.4 1995/07/11 20:48: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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Interface routine for B32 that converts B32 UCALL parameters into ; standard AOS/VS subroutine calling convention format as if ; the call was being made from a COBOL program. ; ; 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 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;************************************************************************** ;* UCALL HANDLER ROUTINE * ;************************************************************************** ;Symbols expected by B32 that are defined in this module .ENT USR_ENT ;UCALL entry point .NREL 7 ;Shared code ;Expects to be called via a *CALL instruction with AC0 containing ; the subroutine number of the UCALL routine to be executed, ; and AC2 containing the address of the B32 argument stack. ;Stack frame for this routine: .DUSR UA.ARGCT = 2 ;Number of args supplied with UCALL .DUSR LOOPCT = UA.ARGCT+1 ;Loop counter used to process each arg ; as it is converted to SD format ;Entry point USR_ENT: WSAVR USR_ENT?FRAME_SIZE ;Push stack frame CLM AC0,AC0 ;Is a SCREEN DEMON routine .WORD MIN?UCALL ; to be called? .WORD MAX?UCALL WRTN ;No, ignore for now ;The B32 arguments must be converted into SCREEN DEMON format. This is ; done from the last argument forward, so that the first argument is ; the last one pushed on the stack before calling the SD routine. LLEF AC3,USR_DEF+2 ;Load addr of B32 arg def table ; past the low & high limit words XNLDA AC1,-2,AC3 ;Load smallest UCALL # in table WSUB AC1,AC0 ;Calc UCALL offset from smallest WLSI 1,AC0 ;Multiply routine offset by 2 since ; table entries are dbl words WADD AC0,AC3 ;Calc addr of table slot for this UCALL XWLDA AC1,0,AC3 ; and load arg spec for this UCALL WANDI UA.ARGCT?MASK,AC1 ;Mask off all but # of args from spec LDAFP AC3 ;Restore frame ptr XNSTA AC1,UA.ARGCT,AC3 ; and save arg count for later WSGT AC1,AC1 ;Are there any args for this call? WBR CALL_SD_ROUTINE ;No, so don't need to convert them XNSTA AC1,LOOPCT,AC3 ;Also save arg count as loop counter WLSI 1,AC1 ;Multiply arg count by 2 giving ; # of dbl words on arg stack WADD AC1,AC2 ;Calc addr of last argument WSBI 2,AC2 ; on arg stack for this call LLEF AC3,SD_ARG_DEF ;Load addr of SD arg def table WADD AC0,AC3 ;Calc addr of table slot for this UCALL XWLDA AC0,0,AC3 ; and load SD arg spec for this UCALL CONVERT_ARGS_LOOP: NLDAI SD.ARG?MASK,AC1 ;Load mask that keeps only the lowest ; arg def of SCREEN DEMON arg spec WAND AC0,AC1 ;Get next arg def into AC1 WMOVR AC0 ;Shift SD arg spec WMOVR AC0 ; to discard arg def WMOVR AC0 ; just extracted WMOVR AC0 XWLDA AC3,0,AC2 ;Load addr of cur arg from arg stack WSBI 2,AC2 ; and bump arg addr to prev arg NSANA STRING,AC1 ;Is this arg a string type? WBR NUMERIC_TYPE ;No, go treat it as numeric XWLDA AC3,0,AC3 ;Yes, load byte ptr to start of string WBR PUSH_SD_ARG ;Go push it as arg for SD routine NUMERIC_TYPE: WADI 2,AC3 ;Bump addr to lower dbl word ; of 4-word numeric item NSANA WIDE,AC1 ;Is this a wide numeric type? WINC AC3,AC3 ;No, so bump addr to low word of item WLSI 1,AC3 ;Convert addr of numeric item into ; byte ptr as COBOL would do PUSH_SD_ARG: WPSH AC3,AC3 ;Push byte ptr to arg for SD routine LDAFP AC3 ;Restore frame ptr XNDSZ LOOPCT,AC3 ;Converted all arguments yet? WBR CONVERT_ARGS_LOOP ;No, go process the next one ;Finish setting up the stack by pushing arg count CALL_SD_ROUTINE: XNLDA AC1,UA.ARGCT,AC3 ;Load # of args supplied with UCALL WPSH AC1,AC1 ;Push as arg count for LCALL XWLDA AC0,CALLER_AC0,AC3 ;Retrieve UCALL subroutine # XWLDA AC2,CALLER_AC2,AC3 ; and addr of UCALL argument stack ; in case SD routine wants these values WMOV AC0,AC1 ;Make a copy of UCALL subroutine # LLEF AC3,USR_DSP ;Load addr of dispatch table XWSUB AC1,-4,AC3 ;Calc UCALL subroutine offset by ; subtracting min UCALL # WLSI 1,AC1 ;Multiply by 2 since table entries ; are double words WADD AC1,AC3 ;Calc addr of table slot for this UCALL XWADD AC3,0,AC3 ;Calc addr of SCREEN DEMON routine XCALL 0,AC3,1B0 ;Call desired SCREEN DEMON routine, ; with arg count on top of stack ;All done WRTN ;Return back to B32 .END .@'Fo:'Hr'Hr tSD_GATE_ARRAY_DEFINES_END.SR t ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_gate_array_defines_end.sr,v 1.4 1995/07/11 20:49:09 mark Exp mark $ ; ; $Log: sd_gate_array_defines_end.sr,v $ ; Revision 1.4 1995/07/11 20:49: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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Screen Demon rev 3.60.01 inner ring gate array definitions end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; 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. ;;; ;;; P.O. Box 831 ;;; ;;; Auburn, Alabama 36831-0831 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This source file is the last one on the MASM command line that ; creates an inner ring gate array definition module. ;The dummy starting address declaration below will avoid the stupid ; LINK error declaring "NO STARTING ADDRESS SPECIFIED" even though ; a starting address for an inner ring program is meaningless. .END SD_GATE_ARRAY .@!'Hr'HrSD_CEO_INTERFACE_RTD.OB _SD_CEO_INTERFACE_RTD.OB SD_CEO_INTERFACE_RTD.OBROOT?IG_TABLE_STARTROOT?IG_TABLE_PART  IT_UNDER_CEO  IT_START IT_CEO_TERMINAL  IT_INTERRUPT  IT_INVOKE_CLI  IT_TERMINATE  IT_CEO_MAIL N.ROOT?IG_TABLES   SD_CEO_INTERFACE.SL                        !  #     % .@'GT'Hs.'Hs.dSD_CEO_INTERFACE.OB d SD_CEO_INTERFACE%C!/SD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PART/     +;Qb     0Ph   1H_n IT_UNDER_CEOIT_STARTIT_INTERRUPTIT_INVOKE_CLIIT_TERMINATEIT_CEO_MAIL..RIPSD_REDRAWSD_FLUSHSD_NEW_WINDOWSD_REMOVE_WINDOWSD_CREATE_FLOAT_WINDOWSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_WINDOWSD_DRAW_BOXSD_GETCHARSD_PROC_PRSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_EXECUTE_LIST_OF_CALLSSD_SET_SECONDARY_PROGRAM_NAMESD_RING_7_SYSCALLSD_MEM_ALLOCATE_RING_7SD_CLOSE_CONSOLE_LOG_FILEOUTPKTICTRLCTRLAWDSCNONFN_TBLNONPRT_TBLCEO_MAIL_VIEW_LINECEO_MAIL_VIEW_COLUMNPID_FLAGSSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_DEFAULT_CLI_INIT_CMDSD_CLI_PATHNAMEACTUAL_CON_DELIMITER_TABLECON_LAST_DELIMEXTC_SD_INIT_CALLSEXTC_SD_PERIODIC_CALLSEXTC_SD_SHUTDOWN_CALLSSD.SYSCALL aaii$!4 SD_UNDER_CEOSD_CEO_INTERRUPTSD_CEO_CLI_INTERFACESD_CLI_INTERFACESD_SET_CLI_INIT_CMDSDSetCLIInitCmdSD_CEO_MAIL_CHECKSD_CEO_TERMINATESD_CEO_STATUS_MOVESD.SD_CEO_INTERFACEUI.SD_CEO_INTERFACE2i55 6 7          )AY9Y99)IxYYY=I8  ;))ʙ) *) ʙ9)8YY==y)xـ@y) 9Y؉i Y99)9)9 YYI)9YYI؉x-    8 8' + 3 : A E J(P4U4[4^'k8y ~   ۧ)) ) ) I  -)) ) Y) ʙY ) ) ) -SD_CEO_INTERRUPT))|9IYRx x ) ) I  )) ) Y) ʙY 9)`9&)I)Y)Y)x),9YIY9Y9i)&)SD_CLI_INTERFACE:UTIL:SD_CLI_ACCESS.ACL    )) y)IiY9)    ))))) ʙй8)®)y99))))) )909T))9B) )9>)x9H) ))ѹ9*)) )0Y)89)I\Y9) ʙ) ʙi))ቂʙi)ቂʙi)ቂʙi)ቂʙˉ) ʙi  REMINDERSUrgent  "/!%.). 7 ; @.JM'TWZ]b e0h!k(v""8 /!.   .' 0!  2*" ,+7;?E"1 + 43  ' -, -     ";F IPW Zr'x('        (  rMessage(s)!Msgs: New: Reject:SD_CEO_STATUS_MOVE = Use the Arrow keys to move the CEO status indicator. You may move it completely off the screen if necessary. Press DESCE when it is positioned satisfactorily.)ѹ))&),)&) )9))8YIY 8xSa m99)9)x)x9))Y89x)99)9)9xY9x) ) ))Y)IY9)))Xy9)9 )y)) )09Yi9 ))Y   +))))))) ʙy)Yy)8xـiiy0iIy))I8I)8 IyyЉiЉ8ЉxyyxЉɂy)9)9 )9)9  Iȉiw " ,-'((."[ nr w'$      # #    .@'GUB'Hs/'Hs/fSD_CICX_1.70_INTF.OB f SD_CICX_INTF"Cs!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART/   ( 4 ? KWlq y  !,FJO U^f v   icmsprog_ctrprg_statusprg_targetcancel_listsior_u_currentdebug_msbufprg_runensure_curses_initializedaccept_fieldmake_stringstuff_cursorstuff_stringsend_disconnect_eventioctlsys_irecmem_allocerrnoHANDLE_SPECIAL_TURBO_SETTINGSD_MONITOR_STRINGSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_XGETCHARSET_FLD_DELIM_TBLSD_MEM_ALLOCATESD_MEM_FREESD_ABORT_?READ_IN_PROGRESSCTRLICTRLICTRL2PID_FLAGSCON_PROGCON_PROG_END_PTRNONFN_TBLNONFNB_TBLNONPRT_TBL?KWAIT_MAILBOXVIRTUAL_CON_CHARACTERISTICSACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETACTUAL_CON_DELIMITER_TABLENAMTBEXTC_SD_INIT_CALLSSD.SYSCALLL cn%3  El1AVp   3  $SD_LINKED_WITH_ICX_FLAGSD_ICX_INITSD_OP.ZERO_INTERCEPTORSD_OP.STP_INTERCEPTORSD_OP.CHN_INTERCEPTORSD_ICX_IOCTL_NO_BELL_LDSD_ICX_TERMINATESD_ICX_INTERRUPTSD_CALL_ICOBOL_SUBPROGRAMSD_ICX_PRG_RUNSD_ICX_ACCEPT_FIELDSD_ICX_INPUT_FIELDSD_ICX_FETCH_KEYSD_ICX_DEBUGGER_?IRECSD_ICX_DEBUGGER_DISCONNECTSD_ICX_SIO_SIZESD_ICX_CALL_ARGS_PTRSD_ICX_PRG_RUN_DISPATCH_RETURNDISPATCH_OP.ZERODISPATCH_OP.STPDISPATCH_OP.CHNDISPATCH_OP.XITSD_ICX_UPDATE_..KTO..RIPSD.SD_CICX_INTFUD.SD_CICX_INTFSC.SD_CICX_INTF qCo?  OABCDEFGHIJKLMN@23456789:;<=>?PQR1#$%&'()*+,-./0" !7      ))™yI ))y xـ ݝy ـ y xــ) y  I))$  ))  )9)9 9 )y9LyiY )) 9LYi9 IYy# YyYY9Yyy)9Y9i)) )) x 9LYiYii ) Iy) Iy)ii9 ))@8㉁i )y) Ɖ")'8I88iyyy )9L9 yi ))yI9Ly9LI I9LIi)y?i)) Iy) IyYYIΉƉ")'xxii8) 8)fI))) )*YS)MYI ۇ)90 )Ii).9Y)P9Y)D9YY990y)Ix90)I):9Yi Ii).9Y)P9Y)D9YY990y)II͉Y9)0I )Y9YI94yyi 9   y xyiIYyyIiI )9 )yyiY) 90y 9  yYـ y 8)y晓y + '+ 159 ?CH3K4]3`4fj~$223"5(.3!U]v3#*'188.8!.H8SW bg nqx }     %             "Y )9iـ )IIIYy  )   94yyi Y7X :SCREEN_DEMON_3.6f:y) y) z) ™y ɂi)  xi I)yy) yY)DY)PxY).YY YyY),YyyY)I艁8),9YyyY9YyYi)   " ( - 1 5 8&= B G L Q V [^g n } ++ +  ./----  .@'Hs'Ht>'Ht>&{SD_DEBUGGER_CONFIG.OB  SD_CONFIGH ## #? #2{#!v` SD_UNINITIALIZED_DATA_PART 8 D M Z g t~ SD_MAIN_MENUSD_REDRAWSDSCREENPRINTSD_MAIL_INBOXSD_INPUT_MAILSD_NOTEPADSD_CLI_INTERFACESD_COMMANDSD_VIEW_TARGET_SCREENSD_GET_PREV_FROM_INPUT_HISTORYSD_GET_NEXT_FROM_INPUT_HISTORYSD_SHOW_SCROLLBACK_BUFFERI8FX rSD_CONFIG_BASESD_HOT_LINKS_TABLESD_DYNAMIC_CONFIG_FILENAMESD_SPECIFIC_PROGRAM_CONFIG_LOAD         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      CSD_VIEW_TARGET_SCREEN E $  C "$    3|View Program Screen     NSD_GET_PREV_FROM_INPUT_HISTORY P$( $N &(     ^SD_GET_NEXT_FROM_INPUT_HISTORY `(, (^ *,    !  nSD_SHOW_SCROLLBACK_BUFFER p,0 ,n .0     =||"  MailRemote ViewRemote 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 5SCREEN DEMON< Calculator BSDCALCULATOR_TITLE_ONE   B  7     N NSDCALCULATOR_TITLE_TWO     N  >         !Z" Z SCREEN DEMON Calendar # fSDCALENDAR_TITLE$  % &   f'  \(  )  * +o, o SCREEN DEMON Read Mail - | SCREEN DEMON Send Mail . SCREEN DEMON Turbo Control /01 02 3`4 `5 `0010110>010213206SD_ALT_EXIT_KEY7 8 9  :  ;  <  = >? SD_HOT_TIMEOUT_INTERVAL@ A B  C   D  E  F GH  IJK  LM  NOP SDQ <R <S  T U V W  X  Y  Z [ \ z]  ^   _ ` a b c d e  f "g $h %i &Mj 'k (l )m +n ,o -p .q / r 0s 2 t 3u 4v 5w 6 x 7y 8z 9{ ;| =} ??~ A C  E G I' K5 M< OZ Qo S| U W Y [ ] ^ ` a b c e[ f g2 h0 i j0 k l m n o q r sL t u v x z {  } ~~   ` `    .C'H}'H}'H}[ SD_SPY.ST   p?BOMB pSD_BYPASS_ON p SD_LD_THICK_THIN pMSD_TURBO_ON p#SD_ASK_QUESTION pSDDisplay/p..sc..SD_C_FILE_IO/p..sc..SD_C_SCREEN_IO plSD_PO_BOX_CHAN psstrcpy p׀sd_nopen pmSDinput p+SD_FORCE_CURSOR_WRAP_AT_MARGIN pSD_MOVE_WINDOW_DOWN ?G.IXIT 0?G.IXMT 0?G.BKPT p3WREPLACE pSDLoadTib pSDFlush pCURRDL p2UPPERCASE_XLAT_TBL pQJSD_IS_NAME_CONSOLE? pJSD_FIND_CONSOLE_CHANNEL_INFO pHOT_KEY_DEFS_TABLE pHOT_KEY_ASSIGNMENTS_TABLE pdCONSOLE_CHAN_MAP p;SD_CONSOLE_MATCH_?CTO3 pފSDSetLogoffInterval p|SDControl pSDAskQuestion p`SDMonitorStringIntoTIB/po>..ud..SD_C_SCREEN_IO pSDSendMail pSDCompileRDL pSD_MOVE_WINDOW_UP pSD_SCROLL_WINDOW_UP pRDL_REBUILD_COUNT p?mSD_CONSOLE_INPUT_PREP p7SD_MEM_FREE_BP pjXAOS.VS_REVISIOND p?NTOP .REQUIRE_LANG_RT_REV_2.30 pSDBypassOn pSDTurboPartial pۃSDInputString .REQUIRE_LANG_RT_REV_3.10 pSDMalloc pSDTurboFull pSD.SD_READ_CHAR p?WSLAP pgSC.SD_MONITOR pSD.SD_MONITOR pZDISPLAYABLE_CHARS_TBL pSD_MEM_INITIAL_AREA6 p(?ZMAX pl?NMAX pSD_GET_LINEDRAW_INTERSECT_CHAR p SD_LD_ATTRB p SD_ASK_QUESTION_JSR p%SD_MESSAGE_ONLY_JSR pSC.sd_sys p3SD_LOAD_TIB pSD_SYS_ERROR_MESSAGE_JSR pSD_PO_DIR pZSC.SD_HOT_KEYS pSD.SD_HOT_KEYS pSD_EXTENDED_READ_CHAR pSD_READ_CHAR p|?SBOT p?NBOT pSC.SD_NO_LANG_RT ?LBOT pSD_DIGITS_TO_BITS pSD_BITS_TO_DIGITS pSD_ENABLE_HOT_KEYS pSD_DISABLE_HOT_KEYS pSC.SD_RETURN_INPUT pިSDTurboOn p4SDMessage pSD.SD_NOTEPAD p)SDNotepad pSC.SD_MAIL_SUPPORT pSD.SD_MAIL_SUPPORT p?UKIL p @SD_PATCH_LIST pm..ESC p UD.SD_CALL_LISTS p CONLOG_SIZE pSD_PASTE_FIELD pzSD_CUT_FIELD pSC.SD_MENU pSD.SD_MENU pSD.SD_POP_UP_MENU p SC.SD_MESSAGE pSD.SD_MESSAGE pޙSDGetControl pHSDObtainInput p7SD_OBTAIN_INPUT pSC.SD_MODEM_INTF pWCTRL/poH..ud..sd_get_put pSD_SET_BOX_FILL_STYLE pSD_SET_LINEDRAW_STYLE p*SD_DRAW_UNDERLINE p^SD_SYS_ERROR_MESSAGE pSD_ERROR_MESSAGE pSD_MESSAGE p\SD_POP_UP_MENU pSD_GET_VALUE p7SDMonitorString p4SD_DRAW_HLINE pSD_DRAW_VLINE p)CFALT p&SFALT- p&?UDP000015 pSD_BYPASS_OFF pSD.SD_CONLOG p UD.SD_MESSAGE pSDPutValue p UD.SD_MAIN_MENU p UD.SD_CLI_INTERFACE pvSDsetcur phSDPopUpMenu p(SDNewWindow paCOBOL32_OFF_CON_CHARACTERISTICS pRCOBOL32_ON_CON_CHARACTERISTICS" 0?G.UKILL p SC.SD_MATCH pSD.SD_MATCH pSD.SD_DRAW_BOX pzSDMessageOnly pSDReturnInput pډSDOutputString"pn.UtoaBase pSD_DISPLAY_INTO_STRING poSD_CLONE_WINDOW pgSD_NEW_WINDOW_VIEW p:SD_PUT_WINDOW_VIEW pSD_GET_NEXT_WINDOW_VIEW pSD_GET_WINDOW_VIEW pSD_PATCH pmSD_NPATCH pSDDisableHotKeys pmUI.SD_CONLOG p UD.SD_CONLOG p"SD_TEMPLATE_MATCH pێSDSetAcceptCursorOffset pSDSetAcceptTimeout pKSDSetCLIInitCmd pISD_CLOSE_USERS_PO_BOX pSDCLICmd pmcurrent_opcode pSD.SD_DISPLAY pISD_CREATE_WINDOW_NO_BOX# p/FFALT pmUI.SD_PATCH p >UD.SD_PATCH ?SD_NPATCH pmUI.SD_NO_ICX pSDEnableHotKeys pSDBypassOff pSD_CONTROL_ONLY p UD.SD_DRAW_BOX p*SDSetBoxFillStyle pSDSetLineDrawStyle pSD_MENU_CALC_SIZE_ONLY pSD_MESSAGE_ONLY pSDSetFieldDelimiterTable)p :EXTC_SD_POST_?CHAIN_CALLS)p 6EXTC_SD_PRE_?CHAIN_CALLS)p .EXTC_SD_PRE_?READ_CALLS)p "EXTC_SD_POST_INPUT_CALLS)p EXTC_SD_PRE_INPUT_CALLS)p EXTC_SD_POST_HOT_CALLS)p EXTC_SD_PRE_HOT_CALLS)p EXTC_SD_SHUTDOWN_CALLS pSDDisable p۫SDGetChar pٝSDDrawVLine)p EXTC_SD_SCREEN_SAVER_CALLS pSDEnable pDRAWBOX p(SDCreateWindow p SDGetTermcaps p޷SDTurboOff pSDErrorMessage p)SDGetPos psd_nseek/ pR..sc..sd_mail)pEXTC_SD_HOT_KEY_LIST prSDXGetChar pBOTTOM_WINDOW pSDSuspendWindow pPRIMARY_WINDOW_SCROLL_COUNT pRSD_RING_7_SYSCALL_OK( p,IFALT pߨSDCreateWindowNoBox phSD_TURBO_PARTIAL pSD_GET_CONTROL pSD_CONTROL p۝SDGetAcceptCursorOffset pSDReadCharOnly p SDGetImageBelowFloat pSDDisplayIntoString pSD_READ_MAIL pSD_OPEN_MAIL pSD_CHECK_FOR_NEW_MAIL põSD_SEND_MAIL p'SD_TURBO_FULL p.BOMB pSDTemplateMatch p5SDGetValue pDSDDrawBox"p .NULLDEL/ pnB..ud..sd_mail pԖSDwrite pSDGetImage pCHOT_OFF_CON_CHARACTERISTICS p4HOT_ON_CON_CHARACTERISTICS pSDGetHotCalledFromName pSD_CALL_ICOBOL_SUBPROGRAM pFLUSH_OUTPUT_CNT peSD_?READ_ABORT_SEM) ,  pvSDObtainHotKey pSDSysErrorMessage pSDTurboReset pQSDDiscardTypeAhead pSD_READ_CHAR_ONLY p?SD_DISPLAY pTOP_WINDOW pefSDSetAcceptLowercase pe_SDSetAcceptUppercase pfSD_GET_NEXT_FROM_INPUT_HISTORY pfRSD_GET_PREV_FROM_INPUT_HISTORY pcSD_REQUEST_INPUT_THROUGH_SPY& pSC.SD_MAIN_MENU pSD.SD_CLI_INTERFACE pKSD_SET_CLI_INIT_CMD p{sd_nread p UD.SD_HOT_KEYS pSD_CLI_CMD pQSD_DISCARD_TYPE_AHEAD p>SD_GET_IMAGE_BELOW_FLOAT pUD.SD_WINDOWS pSD_MOVE_WINDOW_LEFT pSD_MOVE_WINDOW_RIGHT pxSD_SCROLL_WINDOW_LEFT piSD_SCROLL_WINDOW_RIGHT! pmUI.SD_NOTEPAD p UD.SD_NOTEPAD p ,UD.SD_MAIL_SUPPORT plUI.SD_MAIL_SUPPORT- p?UDP000014 pæSD_UNLOCK_PO_FILE pËSD_LOCK_PO_FILE plSD_READ_MAIL_ACTIVE pڲSDReadChar plUI.SD_COMMAND p UD.SD_COMMAND/pn0..ud..sd_cscreenprint p#sd_nclose pAsd_nwrite)p &EXTC_SD_PRE_PROC_CALLS)p EXTC_SD_PERIODIC_CALLS pSDDrawHLine pSDRemoveWindow p1SDRedraw pAW_LIST_TAIL)p 2EXTC_SD_PRE_FLUSH_CALLS)p *EXTC_SD_POST_PROC_CALLS)p EXTC_SD_INIT_CALLS pFLOAT_TOP_WINDOW pPAD_PATH_SUFFIX pPAD_PATH_PREFIX pINNAME7 plSDbeep psd_sys p^SDfill putoa pܒSDMenu pSC.SD_COMMAND pSD.SD_COMMAND/p..sc..sd_cscreenprint"pn,SD_SCR_PRT_MAX_LEVELS-p&..LOW32K pHSDProcPr pl~UI.SD_READ_CHAR pUD.SD_READ_CHAR pREADCHAR p(SD_GET_POS pSD_RESET_MOD_ZONES pSDFree pSD_COMPILE_NONFLOAT_TEMP_RDL p"SD_NONTRAIL_DELIM_TBL pFLDSCRNPKT p SD_HOT_KEY_LEVEL pSD_SYSCALL_DISPATCH_TBL pMAIL_VIEW_WIDTH pINPUT_FEEDBACK_STRING_SIZE pSD_HOT_TIMEOUT_INTERVAL pSD_LOGOFF_WAIT_INTERVAL pYUSER_TIMEOUT p@RSD_SET_LOGOFF_INTERVAL1 pVSD_CONSOLE_TO_HOT_KEY_STATE pSD_GET_HOT_CALLED_FROM_NAME pSD_GET_SCREEN_IMAGE pSD_GET_IMAGE pAWCPS pSD_SET_WINDOW_SIZE pSD_RESTORE_WINDOW_FROM_CLONE pBPOPWINDOW p'SD_APPEND_TO_GETCHAR_CACHE plUI.SD_INPUT_FIELD p^UD.SD_INPUT_FIELD plSD_HOT_INPUT_TYPE pWSD_?ESBB_DISABLE% p1WREFRESH pSD_DISPLAY_INTO_STRING_JSR p6SC.SD_WINDOWS pSD.SD_WINDOWS pAW_LIST_HEAD pASD_CLEAR_TIB pASD_PUT_WINDOW_DESCRIPTOR pSD_GET_WINDOW_DESCRIPTOR pSD_DISPLAY_INTO_STRING_FOR_TIB pSD_GET_SCREEN_IMAGE_JSR pSD_FATAL_ERROR pSD_RESTORE_WINDOW_FROM_CLONE_JSR$ pqSD_ADJUST_AW_MOD_ZONES pSD_SYNC_AW_FIELDS pl*UI.SD_MONITOR pUD.SD_MONITOR pSD.SD_INPUT_FIELD peSD_GET_ACCEPT_POS p}SD_ADJUST_WINDOW_MOD_ZONES pPSD_?IDGOTO_TARGET_TASKS pKLSD_INTF_?WRITE_DATASENS pSD_SHCON_IPC_IGNORE_PNAMES pSD_GET_IMAGE_DEFAULTS pSD_WEEKDAY_NAMES* pSD_SCROLL_WINDOW_DOWN pSD_SET_WINDOW_POSITION p2FUNTBL pDSPTBL pPRIMARY_WINDOW pINPUT_ERROR_WINDOW pm..RIP pAWCPL p SD_FLOAT_CLOCK_FORMAT_LEN p SD_FLOAT_CLOCK_COLUMN pCEO_MAIL_VIEW_COLUMN pSD_REMOTE_INPUT_INDICATOR_COLUMN pSD_REMOTE_VIEW_INDICATOR_COLUMN. pSD_TOP_WINDOW pOSD_ACTIVE_WINDOW pXFUNTBL pCURRDL_PRIMWND pbSD_INPUT_STRING pl|WINDOW_SCROLL_COUNT pZSD_CREATE_FLOAT_WINDOW pSD_SHCON_IPC_HANDLING pCHARACTER_SET_PALETTE pKEY_TRANSLATION_TABLE p6SD_MEM_ALLOCATE_RING_7 SD_LINKED_WITH_ICX_FLAG pjYAOS.VS_TYPE8 pISD_CREATE_WINDOW_NO_INIT p 2SD_PRE_FLUSH_CALLS_LIST p!SD_DIRECT_OUTPUT p?SD_OUTPUT pSD_TURBO_RESET p[SD_FLUSH_FOR_MONITOR_HOLD_OUTPUT p`SD_INPUT_TASK_ID pe}SD_GET_ACCEPT_CURSOR_OFFSET penSD_SET_ACCEPT_CURSOR_OFFSET p .SD_PRE_?READ_CALLS_LIST pSD_RETURN_INPUT pSD_LOG_CONSOLE_EVENT' pGFUNTBL plvWINDOW_PEND_MISC pltWINDOW_PENDFUNC pAWSET pSD_TURBO_OFF p~SD_OUTPUT_STRING_TO_BUF p$UD.SD_INTERFACE pA6SC.SD_LOAD_CONFIG pSD.SD_LOAD_CONFIG pMAIL_INDICATOR pSD_CONFIG_REV pl UI.SD_CONSOLE pUD.SD_CONSOLE pOUTNAME0 pXPFUNTBL p<SD_REMOVE_WINDOW_NO_FLUSH pUD.SD_LOAD_CONFIG p SD_FLOAT_CLOCK_WIDTH pMAX_CONLOG_SIZE pSD_REMOTE_INPUT_INDICATOR_WIDTH pSD_REMOTE_VIEW_INDICATOR_WIDTH pMAIL_VIEW_HEIGHT pjVM_PATHNAME pVM_FILENAME_BASE pACTUAL_CON_DELIMITER_TABLE pACTUAL_CON_CHARACTERISTICS_SIZE9 pkSD_CLONE_WINDOW_JSR pSD_FLUSH_FOR_MONITOR pcSD_INPUT_ABORT_ADDR pgSD_MONITOR_ECHO_INTO_TIB pgSD_MONITOR_ECHO_INTO_VIB p,SD_PENDING_FUNKEY_CHAR pRSD_RING_7_SYSCALL_ERROR pCSD_SYSCALL_INTERCEPTOR p_SD_XGETCHAR pSD_MAIN_MENU_FOOTER pSD_WP_SHELL_CLI_LETTER pSD_REMOTE_INPUT_INDICATOR- pefSD_SET_ACCEPT_LOWERCASE pe_SD_SET_ACCEPT_UPPERCASE p\SD_CALL_HOT_KEY_ROUTINE pSD_CONSOLE_?WRITE pSD_SCROLLBACK_BUFFER_SIZE pSD_INPUT_HISTORY_SIZE p SD_FLOAT_CLOCK_LINE pSD_READ_MAIL_AUTO_DELETE pSD_READ_MAIL_ASK_OUTPUT_NAME pSD_READ_MAIL_OUTPUT_NAME pSD_CLI_PATHNAME pSD_COMMAND_TITLE, L  ppSD_FLUSH_HDW_STATE_ONLY pSD_WAIT_FOR_HOT_KEY pSD_MODEM_DISCONNECT_KEY pSD_ALT_EXIT_KEY pSD_IMMEDIATE_MAIL_DELIVERY pSDSCREENPRINT_ASK_OUTPUT_NAME pSDSCREENPRINT_OUTPUT_NAME pSDCALENDAR_TITLE pSDCALCULATOR_TITLE_ONE pSDSCREENPRINT_TITLE pMAIL_VIEW_LINE pMAIL_INDICATOR_SIZE/ peSD_FLUSH_BUT_HOLD_OUTPUT pCSC.SD_INTERFACE pSD.SD_INTERFACE pNULL_ONLY_DELIM_TBL p :SD_POST_?CHAIN_CALLS_LIST p 6SD_PRE_?CHAIN_CALLS_LIST p *SD_POST_PROC_CALLS_LIST p &SD_PRE_PROC_CALLS_LIST p "SD_POST_INPUT_CALLS_LIST p SD_PRE_INPUT_CALLS_LIST pSD_FLOAT_CLOCK_FORMAT pSD_FLOAT_CLOCK_HEIGHT+ pQ7SD_?TUNLOCK pQ SD_?TLOCK pAWLPP pMAX_SCROLL_BEFORE_FLUSH pbINPUT_PORT pBVIRTUAL_CON_DELIMITER_TABLE pRETURN_INPUT_STRING p TIB_WNDFLG p4HANDLE_SPECIAL_TURBO_SETTING pFLUSH_OUTPUT_PTR p(.UTSK p({SC.SD_SYSCALL p(}SD.SYSCALL p SD_LOGOFF_CALL_PROGRAM pHOT_MENU_ITEM_NUMS pHOT_MENU_ITEMS pLOGOFF_INTERVAL p7aSD_MAP_MEM_TO_VM pFLUSH_TIMER_TASK_ID peCON_CUT_BUFFER_LEN p5SDGetConsoleDeviceName pFLUSH_OUTPUT_END pICTRL2 0?G.UTSKB pjoSD_CON_NUM pl CONSOLE_CHAN pSD_MONTH_NAMES pSDCALCULATOR_TITLE_TWO pHOT_ESCAPE_KEY p"SD_SHCON_IPC_IGNORE_PIDS ptCONPKT p^CONSOLE_PORT pVOUTPATH_PTR pA SD_GET_TERMCAPS p=SD_CONSOLE_INIT_CHARACTERISTICS p9SD_RESET_TIMEOUTS pSD_NO_LOGOFF_USERS p6SD_MALLOC pSD.SD_INIT plCON_TYPE_LIST5 pSD_DEFAULT_CLI_INIT_CMD pSD_REMOTE_INPUT_INDICATOR_HEIGHT pSD_REMOTE_VIEW_INDICATOR_HEIGHT p9SC.SD_CONSOLE pSD.SD_CONSOLE pl CONSOLE_FILE_TYPE p<SD_CONSOLE_INIT_TIMEOUT p;SD_SET_ACCEPT_TIMEOUT p9SD_SELECT_CONSOLE_TIMEOUT pDEFAULT_DELIM_TBL p SD_SCREEN_SAVER_CALLS_LIST4 pSD_INPUT_MAIL_TITLE pSD_READ_MAIL_TITLE pSD_NOTEPAD_TITLE pSD_MAIN_MENU_TITLE pCEO_MAIL_VIEW_LINE pSD_REMOTE_INPUT_INDICATOR_LINE pSD_REMOTE_INPUT_INDICATOR_SIZE pSD_REMOTE_VIEW_INDICATOR_LINE pSD_REMOTE_VIEW_INDICATOR_SIZE pSD_PUT_VALUE p`OUTPUT_PORT p\LOGOFF_TIMEOUT2 pSD_REMOTE_VIEW_INDICATOR pMAIL_VIEW_COLUMN pSD_CONFIG_BASE_ADDR plCONSOLE_CHAN_PARAMS p:SD_PROCESS_TIMEOUT_ERROR p9SD_CLASSIFY_TIMEOUT_ERROR pxSD_GET_IMAGE_BELOW_FLOAT_JSR p(SD_RING_7_SYSCALL_HANDLER_ADDR pSD_WORK_DIR pCOMPOSITE_UPD_COUNT pCON_TERMCAPS p2SD_?KWAIT_HANDLER; pINPUT_FEEDBACK_STRING p<SD_CONSOLE_OPEN pkUI.SD_MEM pUD.SD_MEM p7,SD_EXPAND_SHARED_PARTITION pRRESTORE_USER_STACK p/SD_SHUTDOWN pFORCE_ON_CON_CHARACTERISTICS pSD_EXIT_HOT_KEY pSD_ENTER_HOT_KEY pSD_GETCHAR_ONLY p3VIRTUAL_CON_CHARACTERISTICS pTIB_CLONE pRETURN_INPUT_SIZE p5gSDSetSecondaryProgramName ?SD_PATCH pdSD_INPUT_IS_AVAILABLE_FROM_SPY pdRSD_DIVERT_INPUT_THROUGH_SPY p zSD_SPY p[ACCEPT_TIMEOUT_RESET pZACCEPT_TIMEOUT pSD_CONFIG_NRM_OFF pLOGOFF_OK_BEFORE_TIME pLOGOFF_OK_AFTER_TIME p?KWAIT_CHAR p*NONFNB_TBL pCON_PROG pTIB_ORMAR pTIB_OLMAR pTIB_RMAR pTIB_LMAR p_OBTAIN_INPUT_SIZE pߘTIBATR p CONLOG_OPEN_FLAG@ p>RSD_CONSOLE_SET_OUTPUT_DELIM_TBL p>,SD_CONSOLE_GET_OUTPUT_DELIM_TBL pmFLDPKT pSD_SCREEN_SAVER_INTERVAL pPERIODIC_INTERVAL pUD.SD_LOCK pSD.SD_MEM pRSD_RING_7_SYSCALL p?KWAIT_MAILBOX p0CON_LAST_DELIM pCON_HOT_FROM pCON_VM pSD_CONFIG_TURBO_LEVEL> p>SD_SET_DELIMITER_TABLE p>SD_GET_DELIMITER_TABLE p=SD_CONSOLE_INIT_DELIMITER_TABLE p=SD_CONSOLE_TO_VIRTUAL_STATE pINPUT_CASE_CONVERSION pOUTPKT pSD_MEM_DIR_NAME p SD_MEM_ELEMENT_SIZE p7SD_MEM_FREE pjVUI.SD_INIT prUD.SD_INIT p2CHARSETS p1ATTRB: pHOT_DELIMITER_TABLE plREAD_CHAR_CONSOLE_CHAN pSD_ICX_UPDATE_..KTO pACTUAL_CON_OUTPUT_DELIMITER_TBL p/ASSIGN_SD_CON_NUM pFLUSH_OUTPUT_BUF pPID_VM pCTRL p2 MAP_IN_PID_VM_RECORD p1MAP_IN_CON_VM_RECORD p2!MAP_IN_VM_RECORD p SD_POST_HOT_CALLS_LIST p SD_PRE_HOT_CALLS_LIST p SD_PERIODIC_CALLS_LIST pI.INIT pjnSD_ACTUAL_DAD_PID pjmSD_DAD_PID p0UNLINK_PID_FROM_CONSOLE pSD_DEFAULT_ALTERNATE_CHAR_SET pSD_DEFAULT_PRIMARY_CHAR_SET p SD_HOT_KEY_UTID pSD_SPECIAL_PROGRAMS_LIST p SD_SHUTDOWN_CALLS_LIST< pCOMPOSITE_IMAGE p/CON_LISN_UTID pCON_MODELID pbCON_SHUTDOWN_PID pCON_ACTIVE_PID p5SD_GET_CONSOLE_STATUS pSD_CONFIG_FLAGS pdSD_ABORT_?READ_IN_PROGRESS pSD_ABORT_HOT_KEY_HOLDS pSD_DISCARD_INPUT_CACHES p9SD_ABORT_ALL_LOCKS pQSD_EXECUTE_LIST_OF_CALLS p(?ZBOT? l pfCON_CUT_BUFFER pjjCON_PROG_END_PTR p(SC.SD_URTB p(.KILL- p j?UDP000010- p?UDP000000 p:SD_SPY_UNSHARED_DATA p|SD_SPY_SHARED_DATA pjVM_CHAN pAWOFS pb{SET_FLD_DELIM_TBL p?URTB pRVIRTUAL_CON_TIMEOUT p8UD.SD_SPY pACTUAL_CON_TIMEOUT p"TIB_VIEWS pTIB_WNDDSC p0TIBOFS pSD_DEFAULT_KEYBD_LANG pSD_CONSOLE_INTERRUPT_HANDLING pA8SD_LOAD_CONFIG p1SD_REDRAW- p "?UDP000006 pICTRL pAWBUF pguSD_MONITOR_STRING_INTO_WINDOW phSD_MONITOR_STRING p6SD_OUTPUT_STRINGE p`CON_HOT_KEY pTIB_UPD_COUNT pSD_MAIL_INBOX pSDSCREENPRINT- p 'C?UDP000007 p xSC.SD_SPY p|SD.SD_SPY pjpSD_WORK_DIR_PATH pASD_MATCH pSD_DRAW_BOX pSD_FLUSH p5SD_GET_CONSOLE_DEVICE_NAME p5gSD_SET_SECONDARY_PROGRAM_NAME p5HIS_PROGRAM_SPECIAL? p0nSD_TERMINATE pSD_DEFAULT_7_OR_8_BIT_MODE pSD_DEFAULT_SCROLL_RATE pSD_DEFAULT_CURSOR_TYPE pSD_CONNAME pSD_ICX_TERMINATE pSD_CLOSE_CONSOLE_LOG_FILE pSD_ENABLE pSD_DISABLE= p4SD_RESET_FLUSH_TIMER p&SD_SYSCALL_DISPATCH_ADDR pSD_GET_CONNAME_FROM_MODEM_MGR p{SD_FLUSH_IF_NEEDED_JSR pgSD_MONITOR_STRING_INTO_VIB 0?G.UTSKG p(xSD_SHOW_SCROLLBACK_BUFFER p(uSD_APPEND_TO_SCROLLBACK_BUFFER- p ?UDP000011- p ?UDP000001 p CON_FLAGS pAWPOS pAWATRB p SD_INIT_CALLS_LIST pNULL_TBL pDEF_CTRL pSD_ICX_INTERRUPT p>ySD_CONSOLE_INIT_MODELID p<SD_CONSOLE_INIT p5SD_MEM_INIT- p?UDP000013 p xSD_SPECIFIC_PROGRAM_CONFIG_LOAD pSD_COMMAND p)SD_NOTEPAD-p HcSD_UNINITIALIZED_DATA_PART- p ?UDP000003 p'CON_USERNAMEA pRUSWITCH_TO_SCREEN_DEMON_STACK p SD_DYNAMIC_CONFIG_FILENAME p SD_HOT_LINKS_TABLE pSD_CONFIG_BASE pSD_CLI_INTERFACE pӁSD_MAIN_MENU- p 5?UDP000004 pFUN_MENU_FLAGS paSD_INPUT_SEMAPHORE pjZSD_CON_DEVICE pFLUSH_INTERVAL pPID_FLAGS pSD_CONLOG_DIR_NAMEC pSD_COMPILE_RDL pQSD_INTERCEPT_SYSCALL pC?G.SYSCA p?UTSK pSD_INPUT_MAIL p>#SD_CONSOLE_SET_VIRTUAL_DELIM_TBL p> SD_CONSOLE_GET_VIRTUAL_DELIM_TBL pRSD_INPUT_FIELD_TO_FULL- p?UDP000012 p.UKIL- p ?UDP000002 p1SDDumpScreen p=_SD_CONSOLE_SET_CHARACTERISTICS p=+SD_CONSOLE_GET_CHARACTERISTICS- p  ?UDP000005 pACTUAL_CON_CHARACTERISTICS p:NONPRT_TBL pNONFN_TBL pTIB pAWDSC p/ASSIGN_SD_CON_NUM_USING_LIST pjlSD_CUR_PID p;SD_CONSOLE_SET_TIMEOUT pRSD_SPY_REMOTE_INPUT pRSD_INPUT_FIELD pSD_NEW_WINDOW_NO_INIT p(SD_INIT-p8 SD_UNSHARED_DATA_PART-p|XSD_SHARED_DATA_PART p=SD_CONSOLE_SET_VIRTUAL_CHAR p=SD_CONSOLE_GET_VIRTUAL_CHAR p4SD_DECLARE_SIGNAL_HANDLER p3SD_DECLARE_CON_INTERRUPT_HANDLER pHSD_PROC_PR pSD_ERROR_MESSAGE_JSR p1SD_MESSAGE_JSR pSD_GETCHAR pNSD_SPY_REMOTE_GETCHAR pg$SD_MONITOR_STRING_INTO_TIB p=SD_CONSOLE_SET_DELIMITER_TABLE p=SD_CONSOLE_GET_DELIMITER_TABLE p9GSD_RELEASE_RESOURCE p9SD_ACQUIRE_RESOURCE p6&SD_MEM_ALLOCATE pSD_MENU  p2NRELEASE_VM_RECORD pSD_SUSPEND_WINDOW pSD_FLOAT_WINDOW p8SD_CREATE_WINDOW pBSD_REMOVE_WINDOW pSD_NEW_WINDOW .@'Fo'Hql'Hql MAKE_MASM_32CHAR.PS.CLI   [!equal,,RCS] **************************************************************** $Id: make_masm_32char.ps.cli,v 1.4 1995/07/11 20:47:40 mark Exp mark $ $Log: make_masm_32char.ps.cli,v $ Revision 1.4 1995/07/11 20:47:40 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_MASM_32CHAR.PS.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment This macro can be used to create a MASM_32CHAR.PS file comment if it is not already available. This "permanent symbols" comment file is required in order to run MAKE_SD_CONFIG.CLI x masm/makeps/ps==masm_32char.ps/symbol=32 paru.32 skips sysid.32 .@'Fo'H}'HqlVMAKE_SCREEN_DEMON.SL.CLI  [!equal,,RCS] **************************************************************** $Id: make_screen_demon.sl.cli,v 1.4 1995/07/11 20:47:42 mark Exp mark $ $Log: make_screen_demon.sl.cli,v $ Revision 1.4 1995/07/11 20:47:42 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.SL.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 Shared Library file. Optional global switches: /CONFIG=filename specifies an alternate configuration file to use instead of SD_SL_CONFIG. /O=library_filename specifies an alternate shared library filename to build instead of the default SCREEN_DEMON.SL. The /PRISWI global switch causes the Printer Switcher routine to be linked with the new shared library. 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 shared library. 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 (IT_LIB), which must be linked into any root programs using this shared library. /NOVM Causes programs that use this shared library to run outside of the SCREEN_DEMON_3.00.VM file. This means that such programs 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 shared library 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. NOTE: any supplied modules must be position independent code (in particular, no COBOL programs). Optional patches will be installed if they are placed in a file called SCREEN_DEMON.SL.PAT. See the SCREEN_DEMON.OPTIONAL.PAT file for instructions on creating a SCREEN_DEMON.SL.PAT file. Also, all available fix patches, as specified in the NONICX.PATCH_LIST file, will be installed. [!end] push prompt pop Comment If both switches were not supplied, recurse with defaults [!nequal,,[!equal,,%0/config=%]NULL[!end][!equal,,%0/o=%]NULL[!end]] %0\%%0\config\o%/config=[!equal,,%0/config=%]SD_SL_CONFIG[!else]%0/config=%[!end]& /o=[!equal,,%0/o=%]SCREEN_DEMON.SL[!else]%0/o=%[!end] %-% [!else] searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!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=% write ((write x/s),x/s) & link/udf& /ring=0/nbot=1024/unusedsize=0/ulast=SD_UNINITIALIZED_DATA_PART& %0\config\priswi\ceo\wp% & & SL.DERR/value=0 & & sd_sl_mem_params & & root_sli_screen_demon root_screen_demon_sli & screen_demon_sld & & sd_sl_init & & %0/config=% & & %1-% & & [!nequal,,%0/ceo%]& sd_ceo_interface sd_ceo_interface_sli& [!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 sd_no_lang_rt comment Replace the existing SCREEN_DEMON.SL only if there comment were no link errors. [!nequal,(),([!string])] write [!ascii 207] write Errors prevent creation of new shared library! [!else] comment Install optional patches to the shared library [!nequal,,[!path SCREEN_DEMON.SL.PAT]] x patch/t=[!path %0/o=%.PR]/p=SCREEN_DEMON.SL.PAT/yes [!end] comment Install fix patches if available [!nequal,,[!path NONICX.PATCH_LIST]] delete/2=ignore =?[!pid]patches.tmp write/l==?[!pid]patches.tmp [!ascii 45]USERFILE copy/a =?[!pid]patches.tmp [NONICX.PATCH_LIST] x patch/t=[!path %0/o=%.PR]/p==?[!pid]patches.tmp/yes delete/2=ignore =?[!pid]patches.tmp [!end] [!nequal,,[!path SL.PATCH_LIST]] x patch/t=[!path %0/o=%.PR]/p=([SL.PATCH_LIST])/yes [!end] write write Renaming [!path %0/o=%.PR] to %0/o=% delete/2=ignore %0/o=% rename %0/o=%.pr %0/o=% [!end] [!end] [!end] pop .@'Fo'Hq~'Hq~ MAKE_SD_HKD.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_hkd.cli,v 1.4 1995/07/11 20:47:46 mark Exp mark $ $Log: make_sd_hkd.cli,v $ Revision 1.4 1995/07/11 20:47: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 MAKE_SD_HKD.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,%1%] write Usage: %0\%{/AWARE/COBOL32} {program_id} write ,,,,,,,,,/AWARE,,,,The program makes calls to SCREEN DEMON to write ,,,,,,,,,,,,,,,,,,,,,,,save and restore the screen. write ,,,,,,,,,/REDRAW,,,The screen should be completely redrawn write ,,,,,,,,,,,,,,,,,,,,,,,when returning from this program. write ,,,,,,,,,/COBOL32,,The program is written in VS/COBOL. [!else] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!nequal,,%0\a\aw\awa\awar\aware\r\re\red\redr\redra\redraw\c\co\cob\cobo\cobol\cobol3\cobol32%] write Unknown switch{es}: %0/% %0% [!else][!equal,,[!pathname sd_hot_key_def_skel.sr]] write Error: File does not exist: SD_HOT_KEY_DEF_SKEL.SR [!else][!equal,,[!pathname masm_32char.ps]] write Error: File does not exist: MASM_32CHAR.PS write That file is the long version of the Macro Assembler's & permanent symbols table write It should reside in :UTIL. It may be created by the & MAKE_MASM_32CHAR.CLI macro. [!else] delete/2=ignore %1%_hkd.sr copy %1%_hkd.sr sd_hot_key_def_skel.sr string ?[!pid].make_sd_hkd.tmp delete/2=ignore [!string] write/l==[!string] substitute "%1%" for "{PROGRAM}" in all [!equal,,%0/c/co/cob/cobo/cobol/cobol3/cobol32%] write/l==[!string] substitute "0" for "{TYPE}" in all [!else] write/l==[!string] substitute "1" for "{TYPE}" in all [!end] var9 1 [!nequal,,%0/a/aw/awa/awar/aware%] var9 0 [!end] write/l==[!string] substitute "[!var9]" for "{FLAGS}" in all write/l==[!string] bye write/l==[!string] no process/block/default/input=[!string]/output=@null & sed/no_ed/no_screen %1%_hkd.sr delete [!string] x masm/ps=masm_32char.ps/ulc %1%_hkd [!end][!end][!end] pop [!end] .@'Fo'Hq'Hq0MAKE_SD_ICX_CONFIG.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_icx_config.cli,v 1.5 1995/07/11 20:47:49 mark Exp mark $ $Log: make_sd_icx_config.cli,v $ Revision 1.5 1995/07/11 20:47:49 mark Updated revision and copyright Revision 1.4 1994/03/23 17:38:20 mark Modified to call MAKE_SD_CONFIG.CLI instead of doing the MASM itself. This is an easy way to update it to handle the 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 *********************************************************************** [!end] comment MAKE_SD_ICX_CONFIG.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment *** This macro assembles a customized SD_ICX_CONFIG.SR file comment * for the SCREEN DEMON system. push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] make_sd_config%0/% [!equal,,%1%]SD_ICX_CONFIG[!else]%1-%[!end] pop .@'Fo'Hq'HqT PLAY.CLI  [!equal,,RCS] **************************************************************** $Id: play.cli,v 1.4 1995/07/11 20:48:08 mark Exp mark $ $Log: play.cli,v $ Revision 1.4 1995/07/11 20:48:08 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 PLAY.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_play %1-% pop .@'Fo 'Hq'Hqd SD?UCALL.CLI  [!equal,,RCS] **************************************************************** $Id: sd?ucall.cli,v 1.4 1995/07/11 20:48:17 mark Exp mark $ $Log: sd?ucall.cli,v $ Revision 1.4 1995/07/11 20:48: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 *********************************************************************** [!end] comment SD?UCALL.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] SD?UCALL.CLI This macro builds a line for the Screen Demon UCALL listing file. It is called from MAKE_SD_B32_USERSUBS.CLI by executing the SD_B32_DEFINES.SR file as a CLI macro. [!var0] is expected to contain the next available UCALL number, and [!string] is expected to contain the listing filename. ?SD-type.TMP files that specify equivalent B32 types are also needed. [!end] write %1%[!ascii 11][!var0] [!nequal,,%7%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP]& [!ascii 54 40][?%3%.TMP][!ascii 54 40][?%4%.TMP][!ascii 54 40][?%5%.TMP]& [!ascii 54 40][?%6%.TMP][!ascii 54 40][?%7%.TMP] [!else][!nequal,,%6%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP]& [!ascii 54 40][?%3%.TMP][!ascii 54 40][?%4%.TMP][!ascii 54 40][?%5%.TMP]& [!ascii 54 40][?%6%.TMP] [!else][!nequal,,%5%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP]& [!ascii 54 40][?%3%.TMP][!ascii 54 40][?%4%.TMP][!ascii 54 40][?%5%.TMP] [!else][!nequal,,%4%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP]& [!ascii 54 40][?%3%.TMP][!ascii 54 40][?%4%.TMP] [!else][!nequal,,%3%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP]& [!ascii 54 40][?%3%.TMP] [!else][!nequal,,%2%] write/l=[!string] %1%[!ascii 11 11][!var0][!ascii 11][?%2%.TMP] [!else] write/l=[!string] %1%[!ascii 11 11][!var0] [!end][!end][!end][!end][!end][!end] var0 [!uadd,[!var0],1] .@'FoB'Hq'Hq { SD_INIT_MAIL.CLI { [!equal,,RCS] **************************************************************** $Id: sd_init_mail.cli,v 1.4 1995/07/11 20:49:25 mark Exp mark $ $Log: sd_init_mail.cli,v $ Revision 1.4 1995/07/11 20:49:25 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_INIT_MAIL.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment *** SD_INIT_MAIL.CLI *** comment Creates SCREEN DEMON Post Office directory if not present, comment and then creates P.O. Box files for each user that has a comment profile in the :UPD directory. comment Optional /D switch deletes all existing P.O. box files and comment message files in the Post Office directory before running. push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] ((write,),)superuser/1=WARNING/2=WARNING on defacl +,oware [!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 [!end] directory/1=error/2=error :screen_demon_3.60 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] [!equal,,[!path sd_post_office]] write Creating SD_POST_OFFICE subdirectory in [!path =] create/directory/max=999999999 sd_post_office create sd_post_office:sd_stamp_dept [!end] directory/1=error/2=error sd_post_office [!nequal,,%0/d%] delete/2=ignore msg.+ +.box sd_stamp_dept create sd_stamp_dept [!end] write Creating Screen Demon Post Office boxes for all AOS/VS users... create/2=ignore ([!efile [!file :upd:+]]).box write The following P.O. Boxes now exist: filestatus/sort +.box write pop .@'Fo('Hq'Hq SD_CALLS.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_calls.sr,v 1.5 1995/07/11 20:48:33 mark Exp mark $ ; ; $Log: sd_calls.sr,v $ ; Revision 1.5 1995/07/11 20:48:33 mark ; Updated revision and copyright ; ; Revision 1.4 1995/03/09 20:56:14 mark ; SD_DRAW_UNDERLINE was missing from the list of calls, even though it existed ; in previous revisions. This kept it from being called by ICOBOL programs. ; ; 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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Declaration of Screen Demon revision 3.60.01 calls ;Used to create the NAMTB module for ICOBOL, ; and SDGATES modules for inner rings. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; 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 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BEGIN_SD.CALLS SD.CALL SD_ACTIVE_WINDOW SD.CALL SD_BITS_TO_DIGITS SD.CALL SD_BYPASS_OFF SD.CALL SD_BYPASS_ON SD.CALL SD_CLI_CMD SD.CALL SD_CLI_INTERFACE SD.CALL SD_COMMAND SD.CALL SD_CONTROL SD.CALL SD_CREATE_WINDOW SD.CALL SD_CREATE_WINDOW_NO_BOX SD.CALL SD_CREATE_WINDOW_NO_INIT SD.CALL SD_DIGITS_TO_BITS SD.CALL SD_DISABLE SD.CALL SD_DISABLE_HOT_KEYS SD.CALL SD_DISCARD_TYPE_AHEAD SD.CALL SD_DISPLAY SD.CALL SD_DISPLAY_INTO_STRING SD.CALL SD_DRAW_BOX SD.CALL SD_DRAW_HLINE SD.CALL SD_DRAW_VLINE SD.CALL SD_ENABLE SD.CALL SD_ENABLE_HOT_KEYS SD.CALL SD_ERROR_MESSAGE SD.CALL SD_FLOAT_WINDOW SD.CALL SD_FLUSH SD.CALL SD_GET_ACCEPT_CURSOR_OFFSET SD.CALL SD_GET_ACCEPT_POS SD.CALL SD_GET_CONTROL SD.CALL SD_GET_CONSOLE_DEVICE_NAME SD.CALL SD_GET_CONSOLE_STATUS SD.CALL SD_GET_HOT_CALLED_FROM_NAME SD.CALL SD_GET_IMAGE SD.CALL SD_GET_IMAGE_BELOW_FLOAT SD.CALL SD_GET_NEXT_WINDOW_VIEW SD.CALL SD_GET_POS SD.CALL SD_GET_TERMCAPS SD.CALL SD_GET_USER_ID SD.CALL SD_GET_VALUE SD.CALL SD_GET_WINDOW_DESCRIPTOR SD.CALL SD_GET_WINDOW_VIEW SD.CALL SD_INPUT_MAIL SD.CALL SD_INPUT_STRING SD.CALL SD_LOAD_TIB SD.CALL SD_MENU SD.CALL SD_MESSAGE SD.CALL SD_MESSAGE_ONLY SD.CALL SD_MOVE_WINDOW_DOWN SD.CALL SD_MOVE_WINDOW_LEFT SD.CALL SD_MOVE_WINDOW_RIGHT SD.CALL SD_MOVE_WINDOW_UP SD.CALL SD_NEW_WINDOW SD.CALL SD_NEW_WINDOW_NO_INIT SD.CALL SD_NEW_WINDOW_VIEW SD.CALL SD_NOTEPAD SD.CALL SD_OBTAIN_INPUT SD.CALL SD_POP_UP_MENU SD.CALL SD_PROC_PR SD.CALL SD_PUT_VALUE SD.CALL SD_PUT_WINDOW_DESCRIPTOR SD.CALL SD_PUT_WINDOW_VIEW SD.CALL SD_READ_CHAR SD.CALL SD_READ_CHAR_ONLY SD.CALL SD_READ_MAIL SD.CALL SD_REDRAW SD.CALL SD_REMOVE_WINDOW SD.CALL SD_RETURN_INPUT SD.CALL SD_SCROLL_WINDOW_DOWN SD.CALL SD_SCROLL_WINDOW_LEFT SD.CALL SD_SCROLL_WINDOW_RIGHT SD.CALL SD_SCROLL_WINDOW_UP SD.CALL SD_SEND_MAIL SD.CALL SD_SET_ACCEPT_CURSOR_OFFSET SD.CALL SD_SET_ACCEPT_LOWERCASE SD.CALL SD_SET_ACCEPT_TIMEOUT SD.CALL SD_SET_ACCEPT_UPPERCASE SD.CALL SD_SET_AND_LOCK_USER_ID SD.CALL SD_SET_CLI_INIT_CMD SD.CALL SD_SET_LOGOFF_INTERVAL SD.CALL SD_SET_SECONDARY_PROGRAM_NAME SD.CALL SD_SET_USER_ID SD.CALL SD_SET_WINDOW_POSITION SD.CALL SD_SET_WINDOW_SIZE SD.CALL SD_SUSPEND_WINDOW SD.CALL SD_SYS_ERROR_MESSAGE SD.CALL SD_TEMPLATE_MATCH SD.CALL SD_TOP_WINDOW SD.CALL SD_TURBO_FULL SD.CALL SD_TURBO_OFF SD.CALL SD_TURBO_ON SD.CALL SD_TURBO_PARTIAL SD.CALL SD_TURBO_RESET SD.CALL SD_UNLOCK_USER_ID SD.CALL SD_USER_ID SD.CALL SD_RING_7_SYSCALL_OK SD.CALL SD_RING_7_SYSCALL_ERROR SD.CALL SD_DIRECT_OUTPUT SD.CALL SD_CLONE_WINDOW SD.CALL SD_RESTORE_WINDOW_FROM_CLONE SD.CALL SD_SET_LINEDRAW_STYLE SD.CALL SD_SET_BOX_FILL_STYLE SD.CALL SD_GET_DELIMITER_TABLE SD.CALL SD_SET_DELIMITER_TABLE SD.CALL SD_SET_LOGOFF_INTERVAL SD.CALL SD_EXTENDED_READ_CHAR SD.CALL SD_ASK_QUESTION SD.CALL WHO_LOCKED_IT? SD.CALL SD_DRAW_UNDERLINE END_SD.CALLS .@'Fo<'Hr'Hr SD_HOT_KEY_DEF_SKEL.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_hot_key_def_skel.sr,v 1.4 1995/07/11 20:49:13 mark Exp mark $ ; ; $Log: sd_hot_key_def_skel.sr,v $ ; Revision 1.4 1995/07/11 20:49:13 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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .TITLE {PROGRAM}_HKD ; 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 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .EXTL {PROGRAM} .EXTC EXTC_SD_HOT_KEY_LIST .NREL 5 ;Pre-defined shared data partition .DWORD EXTC_SD_HOT_KEY_LIST ;Link this entry in the EXTC list .DWORD NM_{PROGRAM}*2 ;Byte pointer to name text .WORD {TYPE} ;Type of hot key (0 = linked in) .WORD {FLAGS} ;Flags (1 = not aware of SCREEN DEMON) .DWORD {PROGRAM} ;Word address of CALL-able routine .DWORD 0 ;Dummy ACL pointer .DWORD 0 ;Dummy directory name pointer NM_{PROGRAM}: .TXT "{PROGRAM}" .END .@'FoX'Hr'HrSD_NO_VM_TERMCAPS_TBL.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_no_vm_termcaps_tbl.sr,v 1.4 1995/07/11 20:50:09 mark Exp mark $ ; ; $Log: sd_no_vm_termcaps_tbl.sr,v $ ; Revision 1.4 1995/07/11 20:50: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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .TITLE SD_NO_VM_TERMCAPS_TBL ; Screen Demon rev 3.60.01 ;Creates the SD_NO_VM_TERMCAPS_TBL.OB module, which must be included ; in the link if SD_INIT_NO_VM.OB is included. ;NOTE: Use the MAKE_SD_NO_VM_TERMCAPS_TBL.CLI macro to assemble this 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 ;Set MASM's escape char to none .RDX 10. ;Set decimal mode .TXTN 1 ;Do not follow even-length strings with null word .ENT SD_NO_VM_TERMCAPS_TBL ;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 .NREL 5 ;shared data ;First word of termcaps 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 ~ SD_NO_VM_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 ?TMOD.\?TDEF = 0 .ENDC % .MACRO MODELID ?TMOD = 31 ;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 .ENDC ?TMOD.\?TDEF = ?TMOD % .MACRO END_TERMCAPS .IFG ?TDEF ?DEFINE_TERMINAL .ENDC .LOC SD_NO_VM_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 % .EOT .@'Fp'Hr'Hr*-s>SD_PRISWI_CONFIG.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_priswi_config.sr,v 1.4 1995/07/11 21:02:42 mark Exp mark $ ; ; $Log: sd_priswi_config.sr,v $ ; Revision 1.4 1995/07/11 21:02:42 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 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; SCREEN DEMON Printer Switcher 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 describes three types of information: ; (1) Names of printers whose opens are to be intercepted ; (2) Definitions of all available print output destinations ; (3) For each console and/or username, a list of available print ; destinations ; ; ;Configuration commands: ; ; The configuration must start with the BEGIN_DEFINITIONS command. ; The configuration must end with the END_DEFINITIONS command. ; ; The configuration commands described below can be specified in ; any order. Within a particular command, the subcommands can be ; specified in any order. ; ; ; CATCH Specifies names of printers whose opens can be intercepted. ; The format of this command is ; CATCH name1, name2, ... ; ; You may list multiple printers in a single CATCH command. ; There can be any number of CATCH commands. ; Note that the printer names given here should not include ; the "@" prefix; this is assumed. ; ; ; PRINTER ; Describes a print output destination that will be available ; to one or more consoles. ; The five possible formats of this command are ; PRINTER destname ; QUEUE queuename ; DESCRIPTION menu description ; ; or PRINTER destname ; DEVICE devicename ; DESCRIPTION menu description ; ; or PRINTER destname ; PATHNAME pathname ; DESCRIPTION menu description ; ; or PRINTER destname ; INPUT ; DESCRIPTION menu description ; ; or PRINTER destname ; PASSTHRU ; DESCRIPTION menu description ; ; "destname" is any name you want to use to refer to ; this print output destination everywhere else in the ; configuration file. ; ; If the QUEUE subcommand is used, "queuename" is the actual ; filename of the desired print queue in :PER. Do not include ; the "@" prefix; this is assumed for queuenames. ; ; If the DEVICE subcommand is used, "devicename" is the actual ; filename of the desired print device in :PER. Do not include ; the "@" prefix; this is assumed for devicenames. ; ; If the PATHNAME subcommand is used, "pathname" is the actual ; pathname to the disk file where print output is to be sent. ; Note that an "@" prefix is NOT assumed for pathnames. ; ; If the INPUT subcommand is used, the Printer Switcher will ; ask the user to enter the filename of the desired output ; file if this output destination is selected. ; ; If the PASSTHRU subcommand is used, the Printer Switcher ; will send the print output to the user's terminal with ; Print Pass Thru On/Off commands surrounding each print line. ; This permits screen I/O to be interleaved with printer ; output. ; ; "menu description" is the text to be shown on the Printer ; Menu for this print output destination. ; ; ; CONSOLES Specifies a group of consoles and a list of print ; output destinations available to these consoles. ; The format of this command is ; CONSOLES lowconname hiconname ; destname1 ; destname2 ; ... ; ; "lowconname" is the lowest numbered console within the group. ; "hiconname" is the highest number console within the group. ; If only "lowconname" is specified, the group is assumed to ; consist of just that one console. ; ; "destnames" are the print output destinations that are ; available to all consoles in this group, as defined in the ; PRINTER definitions. There may be any number of destnames ; for a given console group, but each must be on a separate ; line. ; ; If a console group has no print output destinations specified ; for it, consoles in this group are not allowed to print. ; ; If a console group has just one print output destination, ; this will be used automatically whenever a program running ; on a console in this group attempts to print. ; ; If a console group has multiple print output destinations, a ; menu of these output choices will be displayed to the operator ; when a program running at that console attempts to print. The ; first output destination listed will be the default selection. ; ; If a particular console is not included in any of the console ; groups defined in the configuration file, the Printer Switcher ; will search the user lists (described below) to attempt to ; find printer specifications by username. ; ; ; USERS Specifies a list of usernames and/or username templates, ; with a list of print output destinations available to these ; users. The format of this command is ; USERS name1 name2 name3 ... ; destname1 ; destname2 ; ... ; ; "name"'s are either exact usernames, or templates where ; the character '*' matches any single character, and '+' ; matches any number of characters, including zero. ; ; "destnames" are the print output destinations that are ; available to all users in this group, as defined in the ; PRINTER definitions. There may be any number of destnames ; for a given user group, but each must be on a separate ; line. ; ; NOTE: The user lists are scanned by the Printer Switcher ; ONLY if there is no entry for the current terminal ; in any CONSOLES groups (described above). ; ; If a user group has no print output destinations specified ; for it, users in this group are not allowed to print. ; ; If a user group has just one print output destination, ; this will be used automatically whenever a program being ; run by a user in this group attempts to print. ; ; If a user group has multiple print output destinations, a ; menu of these output choices will be displayed to the operator ; when a program being run by one of these users attempts to ; print. The first output destination listed will be the ; default selection. ; ; If a particular user is not matched by any of the name ; templates in any of the user groups defined in the ; configuration file, the Printer Switcher will not interfere ; with programs being run by that user. ; ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; ; After modifying the configuration in this source file, you must then ; rebuild the actual configuration data file. To do t -his, the CLI ; macro MAKE_PRISWI_CONFIG.CLI is provided. Simply type ; ; MAKE_PRISWI_CONFIG ; ; There are no switches or arguments. This macro will take this ; SD_PRISWI_CONFIG.SR file, and build the SD_PRISWI_CONFIG data file, ; which will be accessed at runtime by programs linked with the ; Printer Switcher routine. It is not necessary to relink any ; programs after rebuilding the Printer Switcher Configuration. ; ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; ; The Printer Switcher routine requires Screen Demon rev 3.00.00 ; or greater. ; ; To link the Printer Switcher routine with an ICOBOL interpreter, ; use the following command: ; MAKE_SD_ICX{/SD-switches}/PRISWI ; ; For VS/COBOL without shared libraries, use the following command: ; SD_CLINK/PRISWI programname ; If not using SD_CLINK, make sure that the SD_PRISWI.OB module appears ; on the link line before SCREEN_DEMON.LB ; ; If using shared libraries with VS/COBOL, the SD_PRISWI.OB module must ; not be linked with the COBOL program. Instead, it must be included ; in the Screen Demon shared library file. Use the following command ; to rebuild the Screen Demon shared library: ; MAKE_SCREEN_DEMON.SL{/SD-switches}/PRISWI ; The Printer Switcher will then be active for all programs ; using the new shared library. ; ; If using Screen Demon in an inner ring, the SD_PRISWI.OB module ; must be linked with the inner ring program. Use the following command ; to build a Screen Demon inner ring program containing SD_PRISWI: ; MAKE_SD_INNER_RING{/SD-switches}/PRISWI ; The Printer Switcher will then be active for all programs ; using the new inner ring program. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; The following is an example configuration. You should modify ;;; it to fit your own requirements: BEGIN_DEFINITIONS CATCH LPT LPT1 CATCH SD.SCREEN.PRINT CATCH SD.READ.MAIL PRINTER LP2 QUEUE LPT DESCRIPTION System Printer PRINTER LASER DEVICE CON5 DESCRIPTION Laser Printer PRINTER SPOOL PATHNAME ?SPOOL.TMP DESCRIPTION Temporary Spool File PRINTER DISPLAY DEVICE CONSOLE DESCRIPTION Display to Terminal PRINTER ASKME INPUT DESCRIPTION Enter Output Filename PRINTER LOCAL PASSTHRU DESCRIPTION Terminal Printer CONSOLES CON2 CON3 LP2 SPOOL LASER CONSOLES CON13 CON14 SPOOL CONSOLES CON6 LP2 SPOOL LASER DISPLAY ASKME CONSOLES CON12 LP2 SPOOL LASER DISPLAY ASKME LOCAL USERS FRED MAR+ LP2 LASER SPOOL USERS OP LP2 END_DEFINITIONS .@'GTk'Hu'HuROOT_SCREEN_DEMON.OB  ROOT_SCREEN_DEMONCSD_SHARED_DATA_PARTj(:Pf{EXTC_SD_INIT_CALLSEXTC_SD_PERIODIC_CALLSEXTC_SD_SHUTDOWN_CALLSEXTC_SD_PRE_HOT_CALLSEXTC_SD_POST_HOT_CALLSEXTC_SD_PRE_INPUT_CALLSEXTC_SD_POST_INPUT_CALLSEXTC_SD_HOT_KEY_LISThz  ROOT_SD_INIT_CALLSROOT_SD_PERIODIC_CALLSROOT_SD_SHUTDOWN_CALLSROOT_SD_PRE_HOT_CALLSROOT_SD_POST_HOT_CALLSROOT_SD_PRE_INPUT_CALLSROOT_SD_POST_INPUT_CALLSROOT_SD_HOT_KEY_LIST0       .@'GU'Hs/'Hs/fISD_CICX_INTF.OB f SD_CICX_INTF"Cs!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART/   ( 4 ? KWlq y  !,FJO U^f v   icmsprog_ctrprg_statusprg_targetcancel_listsior_u_currentdebug_msbufprg_runensure_curses_initializedaccept_fieldmake_stringstuff_cursorstuff_stringsend_disconnect_eventioctlsys_irecmem_allocerrnoHANDLE_SPECIAL_TURBO_SETTINGSD_MONITOR_STRINGSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_XGETCHARSET_FLD_DELIM_TBLSD_MEM_ALLOCATESD_MEM_FREESD_ABORT_?READ_IN_PROGRESSCTRLICTRLICTRL2PID_FLAGSCON_PROGCON_PROG_END_PTRNONFN_TBLNONFNB_TBLNONPRT_TBL?KWAIT_MAILBOXVIRTUAL_CON_CHARACTERISTICSACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETACTUAL_CON_DELIMITER_TABLENAMTBEXTC_SD_INIT_CALLSSD.SYSCALLL cn%3  El1AVp   3  $SD_LINKED_WITH_ICX_FLAGSD_ICX_INITSD_OP.ZERO_INTERCEPTORSD_OP.STP_INTERCEPTORSD_OP.CHN_INTERCEPTORSD_ICX_IOCTL_NO_BELL_LDSD_ICX_TERMINATESD_ICX_INTERRUPTSD_CALL_ICOBOL_SUBPROGRAMSD_ICX_PRG_RUNSD_ICX_ACCEPT_FIELDSD_ICX_INPUT_FIELDSD_ICX_FETCH_KEYSD_ICX_DEBUGGER_?IRECSD_ICX_DEBUGGER_DISCONNECTSD_ICX_SIO_SIZESD_ICX_CALL_ARGS_PTRSD_ICX_PRG_RUN_DISPATCH_RETURNDISPATCH_OP.ZERODISPATCH_OP.STPDISPATCH_OP.CHNDISPATCH_OP.XITSD_ICX_UPDATE_..KTO..RIPSD.SD_CICX_INTFUD.SD_CICX_INTFSC.SD_CICX_INTF qgCo?  OABCDEFGHIJKLMN@23456789:;<=>?PQR1#$%&'()*+,-./0" !7      ))™yI ))y xـ ݝy ـ y xــ) y  I))$  ))  )9)9 9 )y9HyiY )) 9HYi9 IYy# YyYY9Yyy)9Y9i)) )) x 9HYiYii ) Iy) Iy)ii9 ))@8㉁i )y) Ɖ")'8I88iyyy )9H9 yi ))yI9Hy9HI I9HIi)y?i)) Iy) IyYYIΉƉ")'xxii8) 8)fI))) )*YS)MYI ۇ)90 )Ii).9Y)P9Y)D9YY990y)Ix90)I):9Yi Ii).9Y)P9Y)D9YY990y)II͉Y9)0I )Y9YI94yyi 9   y xyiIYyyIiI )9 )yyiY) 90y 9  yYـ y 8)y晓y + '+ 159 ?CH3K4]3`4fj~$223"5(.3!U]v3#*'188.8!.H8SW bg nqx }     %             "Y )9iـ )IIIYy  )   94yyi Y7X :SCREEN_DEMON_3.6f:y) y) z) ™y ɂi)  xi I)yy) yY)DY)PxY).YY YyY),YyyY)I艁8),9YyyY9YyYi)   " ( - 1 5 8&= B G L Q V [^g n } ++ +  ./----  .@'G`}'HtK'HtKsSDCALENDAR.PD  ƌ$xx  /4< x+6<zx !" x#$!%"*x&%I ;I I ;I I '(,()48<I; x*x* !" x*#$!%"*x*&%x+xMyMNMII ,x-.,//+2<01M ,234< x4$x5$; I M    6789 :;B  ?  @  A  B  C  D  E F  G)lI))()II):9YIi )9IY9yNJx)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}89)`b)8dyb)Ii%)99)99)9)9Ɖ@Yy@89I nError starting display task:)84)841YIY)))y)9)9) ))YIY))99) )x #)8 ¸#)))))))x))8I)8I)8I)8I)!&'I,H J-)y-\ ;))x))Y8)99x)9)98Y9) ™ ~# #)ƉYyx4g]hXYyyFA)yy% $+ +#!.$ )&-/5 8)L4W d4p    -  !% (/ 26 9 > A4J`,f ip,v y  #     #    " % , 5 = D U y#  4      + + 4HأYYbX i#)x® =# L$Yy$U '## 3!"8Y/2"xn n)i db)IiY/2ɂ)^8#)Y/2J {\8)n^8x-#)9 )v` zgiY#)Y/2 5Y/29) `)])) )ȭyb909$)`b90]-#)f)x/x,+y".Yљi)i0X2љiI,Y#)  YyIY#) &Pdb)Ii./02If-x#)" ~Sy^9ni9o.9r0s]9ulp9 bd9vY wI9yYoIn)9ip Yy 8)nY9ip Yy’Ii)n^)r. s0)u])pYYpYy҂y)vY9pprrI YYÂy=)i9 YYxI)I 9Y9Yy  4   $ ) ,43 8 = @ F I L Q Z a e n q y |                         $ * 4 9 ? E H S V ^ f p4y                           4 4* / 4 9 > D I4Q \ _ b g o4w*{  44 IpY9Y҂yYghi) i9589/Yy yYYyyԹyyЉ9)yyi9 8ti1)hg9񊸣tix)xghyhggii8 )IiYISD_.LGO.LOGyi 4)IiI %<)!Ii) n9b)nyyi) |`) ) i9 ) 9 ) 9 )9)9)9)9)9)9  ) Ii | 8 ` y) yyYyy) IYyЉ Ix)y9b)P)y)Yb0)PyyyY9Yi)Qyyxi9))IYb`yybY959694yIojlti99) 9Yy¸8)jj)x) x) 89 IxInvalid record encountered in log file!) Y99Yy“x9) IY)xt)jjIYon) . 08ih8iY ^yt jli9) 9Y9Y҂Y )9yy) IY9it YY8( Y8Iyxt9YYy)9)9)99)9)99|)V) Ii) ™(y 4    &# 3 6 <'P X [ e h p s }             " *J W v } 1  0     4  4       $ ' , 5 : = @ O4a f'm p w4} 4 4    ' #Jx&9ХI)y5y9Ҽ9ģ!y)y:yy-9ŹI)yCyy hYIyYyiY #,򀹃x)Yyyix.YYڂy))-9Yy)i9ZIyy) 9Yy0YYقyĩ)):9Y)):9Y)i^9 ŹI)y(yi)igxj89xihxo89x#)Y9)Jyi.)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 { | } ~ deleteTimOutcmshPr<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^shF    & 0 9 > A E K(T W ] d p u4{  4             Kh 14<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$IYS#9x+YNy#)8yYyy󸠉y#)yYYK)yYYJ))   4   4" .48 B F4K U Y4^ L MT CT4C T2468:D2468  N .@'G[H'Ht'Ht SD_PRISWI.OB  SD_PRISWI"C!/SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART)  "= X x/ >Ic v    "5 GSD_MENUSD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_DRAW_BOXSD_MONITOR_STRINGSD_INPUT_FIELDSD_GETCHAR_ONLYSET_FLD_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_SYS_ERROR_MESSAGE_JSRMAP_IN_VM_RECORDRELEASE_VM_RECORDASSIGN_SD_CON_NUM_USING_LISTSD_ICX_UPDATE_..KTOSD_MATCHSD_RING_7_SYSCALLSD_MEM_ALLOCATE_RING_7SD_MEM_ALLOCATESD_MEM_FREESD_EXPAND_SHARED_PARTITIONSD_IS_NAME_CONSOLE?SD_CON_NUMSD_CONNAMESD_CON_DEVICECON_USERNAMEACTUAL_CON_DELIMITER_TABLENULL_TBLNONFN_TBLUPPERCASE_XLAT_TBLSD_WORK_DIR_PATHICTRLCTRLSD_SYSCALL_DISPATCH_ADDRDEFAULT_DELIM_TBLNULL_ONLY_DELIM_TBLEXTC_SD_INIT_CALLSSD.SYSCALLZP^,{    SD_PRISWI_INITSD_PRISWI_SYSCALL_INTERCEPTORSD_PRISWI_MENU_PACKETSD.SD_PRISWIUD.SD_PRISWISC.SD_PRISWI$1  ,                           VYYNYNWW  !  "  #<  $  &  ( ,C; =Unable to load printer specifications file: SD_PRISWI_CONFIGThe Screen Demon Printer Switcher has been disabled.     )   )Y8Ãx‘ـy)x㉢LÂɇɇy)x㉘5‚ɇy)x㉋⩸ɇɇy8 ɇѸ@yѩй8gx)y) ) 9Y) 9IzI8 I xyIy) YYI  yIiЉx؉) DЉѩ8йw8 8 )88)I I yI8й8w踖I؉ɇI9" xȉYɇUnable to access selected printer!Iق9j)9 )) 8yYyщy)I@OUTPUT)  Y))))9)\Y) iX)" ʼn X) Y9Xi   EEnter name and press DNEWLINEE, or press DESCE to exit. Output Filename 8 ) )0Ii   )@9)yIiix )9YY x px)y)0Iy y)IY9  )@9h)yIii)9YY)xi )9)9i :PER:)Y y))@yy)   .# ).< B G ^ n s    , (   (*   " * IL l q$    /0    )     P _"c'r*2  ) "'*     !< yY  Yyi Yi9y'普xy99 )@9iY9  )9Y)F9Y)`9Y)y yi)9Y)F9Y)a9Y YYÈY) Y 8y)ɀi0)yI щxI I i)Ii)|9Y  )|9Y  Printer Menu to select )BIY389)I):9YIY9i9IY39)9yΉ ?x 9)9 )9Y999Y)08 x)I;8yIyY$ r)幥 pi)bIY) G  Iy xI I 8Љ 88Љ )Y$I)I I ѹ Iy Y ) yi) Y) 8Љ 88Љ  / i2r{     (    2)+  2(29!R2d g2q2{  # # 2     &5 " .@'Fo'Hv'Hq|dMAKE_SDCALENDAR.CLI  [!equal,,RCS] **************************************************************** $Id: make_sdcalendar.cli,v 1.4 1995/07/11 20:47:55 mark Exp mark $ $Log: make_sdcalendar.cli,v $ Revision 1.4 1995/07/11 20:47:55 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_SDCALENDAR.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 sdcalendar.ob]] x lfe X screen_demon.lb sdcalendar [!end] sd_clink%0/% sdcalendar %1-% pop .@'Foc'Hq'Hq ! SD_QUICKSTART.CLI ! [!equal,,RCS] **************************************************************** $Id: sd_quickstart.cli,v 1.4 1995/07/11 20:50:31 mark Exp mark $ $Log: sd_quickstart.cli,v $ Revision 1.4 1995/07/11 20:50:31 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_QUICKSTART.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] *** SD_QUICKSTART.CLI *** This macro automates the installation of Screen Demon. [!end] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] defacl +,oware comment Create Screen Demon directory if not present, and then go there [!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] comment If there is no CONLOG subdirectory, create it [!equal,,[!path =conlog]] write Creating CONLOG subdirectory in [!path =] create/directory/max=999999999 conlog [!end] comment Set up the Screen Demon mail subdirectory write sd_init_mail comment Set proper ACL's for the Screen Demon subdirectories acl :screen_demon_3.60:(mem,conlog,sd_post_office) +,ware acl :screen_demon_3.60 [!user],oware +,re 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] write write Creating the Screen Demon VM file, using default CONTYPES file make_screen_demon.vm write write Applying update files apply_sd_update write write Registering this system to run programs containing Screen Demon... sd_register/quick comment If this is an ICOBOL system, build and run an SD_ICX comment Otherwise, tell user how to possess programs. [!nequal,,[!path :util:icobol]] write write Creating a Screen Demon version of the ICX interpreter... make_sd_icx write write Executing the new Screen Demon ICX... searchlist :util:icobol [!searchlist] x sd_icx [!else] write You can now use SD_POSSESS to create Screen Demon versions write of some of your programs.,,Simply type write write ,,,,,,,SD_POSSESS,,programname write write which will create SD_programname.PR write write Execute the new Screen Demon version the same way that you write run the normal program. write write [!end] pop .W'M'M'MpFMAKE_SD_POSSESS_ICRUN_PAT.CLI p[!equal,,comment] # $Id: make_sd_possess_icrun_pat.cli,v 1.3 1995/07/18 22:33:51 mark Exp mark $ # # This macro builds an SD_POSSESS_ICRUN_n.nn.PAT patch file for # a specific revision of ICOBOL 2.00 and above. This patch file # is needed by the MAKE_SD_ICRUN.CLI macro to build a Screen Demon # version of ICRUN. # # $Log: make_sd_possess_icrun_pat.cli,v $ Revision 1.3 1995/07/18 22:33:51 mark Added code to locate address of LCALL to init_user_bltn_fcns and patch it to SD_INIT_USER_BLTN_FCNS Revision 1.2 1995/07/12 23:41:27 mark Now uses create/m to build first FED cmd file, instead of xeq/m CLI COPY..., which is cleaner. Now prints completion message as a BYE obituary message from build process, since only that process really knows what the patch filename is. Revision 1.1 1995/05/02 20:02:58 mark Initial revision # [!end] [!equal,,%0/$go%] push prompt pop process/default/block/input/console/output=@null cli %0%/$go %1-% pop [!else] prompt bye comment Build a FED script that will find the LDSP instruction in ICRUN's comment op code dispatch loop delete/2=ignore ?[!pid]fed.cmd create/m ?[!pid]fed.cmd rev3_cobol,rev3_cobol+1000,@.=122431,1,1s ) comment Execute this new FED script delete/2=ignore ?[!pid]fed.out create ?[!pid]fed.out process/block/default/input=?[!pid]fed.cmd/out=?[!pid]fed.out fed %1%.pr comment Extract the address of the LDSP instruction from the FED output xeq/m sed/no_ed/no_screen ?[!pid]fed.out delete 1 6 delete 2 last substitute "" for "/ 122431" in all bye n ) string [?[!pid]fed.out] comment Put a line in SED cmd file to replace the LDSP instruction address comment address template with the actual address just found delete/2=ignore ?[!pid]sed.cmd write/l=?[!pid]sed.cmd substitute "[!string]" for "*LDSP-INSTRUCTION*" in all comment Build a FED script that will obtain the LDSP table address from comment the instruction just found delete/2=ignore ?[!pid]fed.cmd write/l=?[!pid]fed.cmd [!string]+1\ write/l=?[!pid]fed.cmd #.+.[!ascii 11][!ascii 11]4 comment Execute this new FED script delete/2=ignore ?[!pid]fed.out create ?[!pid]fed.out process/block/default/input=?[!pid]fed.cmd/out=?[!pid]fed.out fed %1%.pr comment Extract the address of the LDSP table from the FED output xeq/m sed/no_ed/no_screen ?[!pid]fed.out delete 1 6 delete 2 last substitute "" for "_#.+. #.+.^ ^4 " in all append ###  position 1 paste substitute "" for "_###" in all bye n ) string [?[!pid]fed.out] comment Put a line in SED cmd file to replace the LDSP table address comment template with the actual address just found write/l=?[!pid]sed.cmd substitute "[!string]" for "*LDSP-TABLE*" in all comment Build a FED script that will find the location of the address comment field of the LCALL instruction in ICRUN's initialization routine comment that calls init_user_bltn_fcns() delete/2=ignore ?[!pid]fed.cmd create/m ?[!pid]fed.cmd init_icrun,init_icrun+2000,#.=init_user_bltn_fcns,1,2s ) comment Execute this new FED script delete/2=ignore ?[!pid]fed.out create ?[!pid]fed.out process/block/default/input=?[!pid]fed.cmd/out=?[!pid]fed.out fed %1%.pr comment Extract the location of the address field from the FED output xeq/m sed/no_ed/no_screen ?[!pid]fed.out delete 1 6 delete 2 last find "/" in 1 cut 1 at cursor delete 2 bye n ) string [?[!pid]fed.out] comment Put a line in SED cmd file to replace LCALL init_user_bltn_fcns comment with LCALL SD_INIT_USER_BLTN_FCNS at the actual address just comment found write/l=?[!pid]sed.cmd substitute "[!string]" for "*LCALL-BLTN-ADDR*" in all comment Determine the revision of ICOBOL being used, based on the revision comment of the specified ICRUN.PR file revision/l==?[!pid]rev.tmp %1%.pr string [=?[!pid]rev.tmp] string [!ename [!ename [!string]]] string [!uadd,0,[!ename [!string]]][!eextension [!string]] delete/2=ignore =?[!pid]rev.tmp comment Put a line in SED cmd file to replace the ICRUN revision template comment with the actual revision just found write/l=?[!pid]sed.cmd substitute "[!string]" for "*ICRUN-REV*" in all comment Finish up the SED cmd file write/l=?[!pid]sed.cmd bye n comment Now use the SED cmd file to create a version of the SD_POSSESS comment patch file for the desired revision of ICOBOL delete/2=ignore sd_possess_icrun_[!string].pat copy sd_possess_icrun_[!string].pat sd_possess_icrun_BASE.pat process/block/default/input=?[!pid]sed.cmd/output=@null & sed/no_ed/no_screen sd_possess_icrun_[!string].pat comment Clean up delete/2=ignore ?[!pid]fed.out ?[!pid]fed.cmd ?[!pid]sed.cmd bye sd_possess_icrun_[!string].pat is ready for use [!end] .D p 'Hq'Hqڽ NO_TURBO.PAT %PROGRAM ;This patch file sets things so that Turbo mode will be off when program starts ;Clear Turbo Display bit and Redraw At Next Flush bit in user control word CTRL 24 0 ;End of patch .D'Hq'HqPAR_TURBO.PAT %PROGRAM ;This patch file sets things so that Turbo mode will be set to Partial ; when program starts ;Set Partial Turbo, Turbo, and Redraw At Next Flush bits in user control word CTRL 24 40+20+4 ;End of patch .@'Fo2'Hq'HqTo SD_CONFIG.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_config.sr,v 1.7 1995/07/11 20:48:52 mark Exp mark $ ; ; $Log: sd_config.sr,v $ ; Revision 1.7 1995/07/11 20:48:52 mark ; Updated revision and copyright ; ; Revision 1.6 1994/06/08 16:52:59 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:32 mark ; Added the question SPECIFIC_PROGRAM_CONFIG_LOAD? ; ; Revision 1.4 1994/03/17 17:08:29 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 S hell ; ; ; 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 COBOL32 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 COBOL32 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 DEM ` ON 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 messa ges 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 In ternational 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 T 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 .@&hm'H}'Hr|SCREEN_DEMON_RING_6_GATES.OB  SD_GATE_ARRAY#SD_SHARED_DATA_PARTb     .F Wat     +<Jdy    ,9 HS Zds    #/G Ye v   $;Pg~  0 = J Vaq SD_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_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_OUTPUTSD_CLONE_WINDOWq ,H]rSD_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 -SD_GATE_ARRAYDUMMY_GATE_CALL+pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppO O O O O OOOOOOOOOO O"O$O&O(O*O,O.O0O 2O!4O"6O#8O$:O%<O&>O'@O(BO)DO*FO+HO,JO-LO.NO/PO0RO1TO2VO3XO4ZO5\O6^O7`O8bO9dO:fO;hO<jO=lO>nO?pO@rOAtOBvOCxODzOE|OF~OGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOWOpOqOrOsO ) q*pppppppppppppppppppppOOOOO O OOOOOOOOOO O"O$O&O(O  .@'Hu'H}'Hug.}SCREEN_DEMON_SLD.OB . |SCREEN_DEMON_SLD.OBSCREEN_DEMON_SLD.OBF |SL_PREAMBLE_DUMMY?SCOPE_INFO_PTRS_PART?SCOPE_DEFN_PART?SCOPE_NUM_ENTRIES?SL.LANG.STATICS.INIT?SL.USER.STATICS.INIT$4V SL_DERR_DUMMYSL.DERRSL.DERR_LANG_RTDERR.RELI.INIT SCREEN_DEMON_SLD.OB ?SCOPE_INFO_PTRS_PART ?SCOPE_DEFN_PART ?SL_INTERFACE_END ?SL_INTERFACE_START  ?NBOT  ?NMAX  ?SBOT  ?NTOP  ?SCOPE_NUM_ENTRIES  ?SL.LANG.STATICS.INIT  ?SL.USER.STATICS.INITIG_TABLE_START IG_TABLE_PARTIG_TABLE_DATA_STARTIG_TABLE_DATA_PART  SD_INIT  SD_SHUTDOWN  SD_POP_UP_MENU  SD_MENU  SD_MESSAGE SD_ERROR_MESSAGE SD_SYS_ERROR_MESSAGE  SD_FLUSH  SD_DISPLAY SD_DISPLAY_INTO_STRING SD_INPUT_STRING SD_SET_ACCEPT_TIMEOUT  SD_READ_CHAR SD_READ_CHAR_ONLY  SD_RETURN_INPUT!  SD_NEW_WINDOW" SD_REMOVE_WINDOW# SD_NEW_WINDOW_NO_INIT$ SD_ACTIVE_WINDOW% SD_SUSPEND_WINDOW&  SD_TOP_WINDOW' SD_FLOAT_WINDOW( SD_GET_WINDOW_DESCRIPTOR) SD_PUT_WINDOW_DESCRIPTOR* SD_GET_WINDOW_VIEW+ SD_GET_NEXT_WINDOW_VIEW, SD_PUT_WINDOW_VIEW- SD_NEW_WINDOW_VIEW.  SD_DRAW_BOX/  SD_DRAW_VLINE0  SD_DRAW_HLINE1  SD_MAIN_MENU2  SD_REDRAW3  SD_COMMAND4  SD_NOTEPAD5  SD_READ_MAIL6  SD_INPUT_MAIL7  SD_SEND_MAIL8 SD_CLI_INTERFACE9  SD_CLI_CMD:  SD_PROC_PR;  SD_USER_ID< SD_SET_CLI_INIT_CMD=  SD_GET_CONTROL>  SD_CONTROL?  SD_TURBO_ON@  SD_TURBO_OFFA  SD_TURBO_FULLB SD_TURBO_PARTIALC  SD_BYPASS_OND  SD_BYPASS_OFFE  SD_DISABLEF  SD_ENABLEG  SD_PUT_VALUEH  SD_GET_VALUEI  SD_GET_IMAGEJ  SD_GET_POSK  SD_LOAD_TIBL SD_CREATE_WINDOWM SD_CREATE_WINDOW_NO_INITN SD_MOVE_WINDOW_DOWNO SD_MOVE_WINDOW_LEFTP SD_MOVE_WINDOW_RIGHTQ SD_MOVE_WINDOW_UPR SD_SCROLL_WINDOW_DOWNS SD_SCROLL_WINDOW_LEFTT SD_SCROLL_WINDOW_RIGHTU SD_SCROLL_WINDOW_UPV SD_SET_WINDOW_SIZEW  SD_SET_USER_IDX SD_SET_AND_LOCK_USER_IDY SD_UNLOCK_USER_IDZ  SD_GET_USER_ID[ SD_GET_HOT_CALLED_FROM_NAME\ SD_GET_IMAGE_BELOW_FLOAT] SD_MONITOR_STRING^ SD_MONITOR_STRING_INTO_TIB_ SD_MONITOR_STRING_INTO_WINDOW` SD_OUTPUT_STRINGa SD_SET_ACCEPT_LOWERCASEb SD_SET_ACCEPT_UPPERCASEc SD_CREATE_WINDOW_NO_BOXd SD_SET_WINDOW_POSITIONe SD_SET_ACCEPT_CURSOR_OFFSETf SD_SET_SECONDARY_PROGRAM_NAMEg SD_MESSAGE_ONLYh SD_OBTAIN_INPUTi SD_DISCARD_TYPE_AHEADj SD_GET_ACCEPT_CURSOR_OFFSETk SD_GET_CONSOLE_STATUSl SD_GET_TERMCAPSm SD_BITS_TO_DIGITSn SD_DIGITS_TO_BITSo SD_TEMPLATE_MATCHp SD_GET_CONSOLE_DEVICE_NAMEq SD_DISABLE_HOT_KEYSr SD_ENABLE_HOT_KEYSs SD_GET_ACCEPT_POSt  SD_TURBO_RESETu SD_SET_LOGOFF_INTERVALv SD_DIRECT_OUTPUTw SD_CLONE_WINDOWx SD_RESTORE_WINDOW_FROM_CLONEy SD_SET_LINEDRAW_STYLEz SD_SET_BOX_FILL_STYLE{ SD_GET_DELIMITER_TABLE| SD_SET_DELIMITER_TABLE} SD_EXTENDED_READ_CHAR~ SD_ASK_QUESTIONSCREEN_DEMON_SLD.OBK       SCREEN_DEMON.SL                 !  " "# $$ &% (& *' ,( .) 0* 2+ 4, 6- 8. :/ <0 >1 @2 B3 D4 F5 H6 J7 L8 N9 P: R; T< V= X> Z? \@ ^A `B bC dD fE hF jG lH nI pJ rK tL vM xN zO |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 { | } ~      s  SL_PREAMBLE_DUMMY?SL_INTERFACE_START?SL_INTERFACE_PART?SL_INTERFACE_END ?SCOPE_INFO_PTRS_PART ?SCOPE_DEFN_PART ?SCOPE_NUM_ENTRIES ?SL.LANG.STATICS.INIT ?SL.USER.STATICS.INIT  SL_DERR_DUMMYSL.DERRSL.DERR_LANG_RT@DERR.REL I.INIT .@'G`g'HtL'HtLSDCALCULATOR.PD  *ƌ$, 4<%G  x x xx/3/39<e  +2< BE!!#'")!BE"+2< BE#!!#'")!BE#"% x&'((%+2<)*x+x,-./0x,1234x,56789 :x;<:- == >. ? @/ A0 BxC<:1 == >2 ? @%3 A4 BxD<:EFGHIJKLMNOPOQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~pBEB%EBEBEBEBEBEBEBEBEBEBEp p",4,4:8<UI ;Bxxx  M yM NM I,48,489<I  ,4< II;,4,4:,4:8<I;,4<IM I,48,489</4< ; ,48,489<IIM"9 -"78< I;MBE/4<7p;<pI,95,39<~/4<l9   I;l I;l,4</4<9   p;l/4<  ;l;l,4<è;l,4,4:,4:,4:<Ȩ;l,4,4:< ˨;l,4,4:<Ψ;l,4,4:</Ш;l,4,*4:,4:,4:,4:<PԨ;l,4,4:,4:,4:<lIبMI,4,4:,4:<I p;,4,4:,4:<n/4<L"""9     BEB%EBEBEBEBEBEBEBEBEBEBEp p;9   p;,4,4:,4:<"BEB%EBEBEBEBEBEBEBEBEBEBEp p;,4,4:<3,4< p; p;,4,4:,4:<RBE ;,4<I,95,39<{BCE ;;,4,4:,4:<BE  9 !"%9*  p;,4<SI,95,39<MBCE  9 !"%9*  p;;,4<`x;,4<mx;,4<zx;,4<x;,4< x;,4< x;,4< x;,4< x;-"4,4:,4:<IM/4</4< ;6;6+3<6BE   pM/3<b9 ; /6<BE9 /6< M  BEB%EBEBEBEBEBEBEBEBEBEBEp pM,4< ) ; ,4,4:,4:,4:<  ,4< ^ ; ,4< t ; ,4<  ; ,4<    pM  IBEB%EBEBEBEBEBEBEBEBEBEBEp pM  ,4< T     -"78< lI; ]9 ! "("9 ! "$9)+4<  x MMxMx+pI-"4,*4:8< I; xM,4,4:,4:,4:,4:,4:,4:,4:,4:< 0I; ,95,39,4:,4:,4:< QI; ,4,4:,4:,4:,4:,4:,4:,4:< I; ,4,4:,4:,4:,4:,4:,4:,4:< I; ,4,4:,4:,4:,4:,4:,4:,4:,4:,4:,4:< I ; ,4,4:,4:,4:,4:,4:,4:,4:< I!!IMI"" R!K"I#p$I##MI""&'f(h)j*n+p,r-v.x/z0~12\3p4I##MI""67T89`:;<T=;>`?p@I##MI""BCpDI##MI""FGHlIXJdKtLtMpNI##M I""PQGRMSpTI##M!x+x,VWXYM"IxM#M$Nekh   "n : G # ?    (& (?* 6 ABVCD Q :<>@*,.02468)\ n1f F o [ x v                     +  9  G Ua%m5y =T,  ME` P  h         7 N h b܀# )@ ] M FZ 1 *?dP    *,>ppN qp  BDFHJ~ | + C  r $$HT`    5   3 C   ܂] U ,9F T b  u Phjln .@'Hts'Ht'Ht0TSDCALCULATOR.CX  J0( J0( `T0SDCALCULATOR  -32  P Calculator Help| F0&N 00 RE+-x/=* 1240+00{0{0{  0{00 0   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<ACEGACEGACEGAEG4443E3E4444 4444 4 4 4 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...  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... 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... 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... 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...YSD_SET_SECONDARY_PROGRAM_NAMESD_TURBO_FULLSD_GET_VALUESCREEN DEMON12 Calculator11SD_NEW_WINDOWSD_DRAW_BOXSD_GET_WINDOW_VIEWSD_PUT_WINDOW_VIEWSD_NEW_WINDOW_VIEW M#.#SD_REMOVE_WINDOWSD_TURBO_RESET=09-*x/+,ed|mfSD_MOVE_WINDOW_UPSD_MOVE_WINDOW_DOWNSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_LEFT310hSD_RETURN_INPUTSD_READ_CHAR`,.$,  xx $(x,04(8x,<@(D8/uD/uH4L8P@TD$8+88EX`!4#'d)`8EX$D+DDEh`!@#'d)`DEhp(x,tx(|p|+xxxxx̧̖Еԧܕx̧̖Еԧpܕx4@ $ ,(40<8D@LHTP\Xd`lhtp|xp  ($0,84@<HDPLpT\X` dhplptx;I+,x|,xxx xyNIx,x|+,x+I G `,x`I `I a ;+x;I,w,x|,x,x,x+I a MIx,x|X,xXR`;X`,x|w,xwI G I `xMx;IxM/p;pI,,мج`ԭI ;I ;,ؽ+`Ԡ\X` dhplpt;;,ܽ;x;,[,[,[,cx;,s,{x;,, x;,,x;,,,,|, $x;,(,,,,0I 64xMI = H,8#,<#,@AI  F\X` dhplpt;,DY,HY,L`/ީx`ԠHPXT  ($0,84@<HDPLpT\X` dhplpt;`Ԡ\X` dhplpt;,\,`,dtT  ($0,84@<HDPLpT\X` dhplpt;,h,l,pp\X` dhplpt;p\X` dhplpt;,t,x,|`;,%I = H,,м`CE;;,=,=,`Ԭ!"%*\X` dhplpt;,I = H,,мCF`Ԭ!"%*\X` dhplpt;;,x;,x;,-x;,@*,.02468v [p               $  2  @  N  \  j  x    JRZl2:Bt"*% b 3?|KT`t #:Qh(<qw j#(8Pu   Y SO`tW"P 1 "56 8 :<Npp^9qH BDFHJ ,   c { D \$      HT`  - * }     &]U(  .c:p  \hjln .@'GW]'Hv'Ht.JSD_INNER_RING_INTF.OB  SD_INNER_RING_INTF !SD_UNSHARED_DATA_PART2*9MSD_INNER_RING_NAMESD_SYSCALL_GATESD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERROR<8@Pb?G.SYSCASYSCALL_DISPATCHLOAD_SD_INNER_RINGSD_SYSCALL_INTERCEPTOR K%ـ@yiyYY)z08<~y) h Yy r YYYY)O08II) Iyy9~)yy) yyIYY).08Yظyy) ) Yyy)0發 8yـ:SCREEN_DEMON_3.60:$I)y R0iIyIyi8yɇyɇyxy0I)YyxI)@iyIYy0 :   & e ~     .@'GZA'Ht'Ht1$SD_NO_MODEL_ID.OB   SD_NO_MODEL_ID  CON_MODELIDCON_TERMCAPS$ 7SD_CONSOLE_INIT_MODELIDSC.SD_NO_MODEL_ID)Ɖ(@Y )   .@'GZJ'Ht'HtH1(SD_NO_VM_TERMCAPS_TBL.OB H SD_NO_VM_TERMCAPS_TBLSD_NO_VM_TERMCAPS_TBL`h`' .@%_P'Hu'HuPSDIMAGE2480.DEF  ******************************************************************************* * $Id: sdimage2480.def,v 1.3 1994/03/11 17:27:47 mark Exp mark $ * * $Log: sdimage2480.def,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 * ******************************************************************************* *** SDIMAGE2480.DEF *** ** Structure of a special SCREEN DEMON image buffer for use ** ONLY with the SD_GET_IMAGE call. It is used to obtain the ** first 80 characters of the first 24 lines, their attributes, ** the cursor position, and global screen attributes. This special ** image buffer MUST be used with the optional size arguments for ** SD_GET_IMAGE to indicate that only 24 lines of 80 characters are ** wanted, followed by only 4 bytes of additional information. ** This is the same format as image buffers in revision 2.01.05, ** but does not match the current image buffer format! ** It cannot be used to define an image buffer for use with ** any of the window calls. * This copy file is intended to be copied after an 01 level group field * that names the image buffer. Individual fields within the image buffer * can be referenced via qualification if necessary. *** Characters section *** 05 SD-IMAGE-CHAR-PLANE. 10 SD-IMAGE-LINE OCCURS 24 TIMES. 15 SD-IMAGE-CHAR OCCURS 80 TIMES PIC X. *** Character attributes section *** 05 SD-IMAGE-ATTR-PLANE. 10 SD-IMAGE-ATTR-LINE OCCURS 24 TIMES. 15 SD-IMAGE-ATTR-CHAR OCCURS 80 TIMES PIC X. *** Additional parameters section *** 05 SD-IMAGE-CURSOR-OFFSET PIC 9(04) COMP. 05 SD-IMAGE-CURRENT-ATTRIBUTES PIC S9(4) COMP. * End of special 24x80 image buffer structure for SD_GET_IMAGE .@'Foz'Hu'Hu: SDMENU.DEF  ******************************************************************************* * $Id: sdmenu.def,v 1.4 1995/07/11 20:51:16 mark Exp mark $ * * $Log: sdmenu.def,v $ * Revision 1.4 1995/07/11 20:51:16 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 * ******************************************************************************* *** SDMENU.DEF Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of a SCREEN DEMON menu packet used by SD_MENU call ** * This copy file is intended to be copied after an 01 level group * field that names the menu packet. Individual fields within the * packet can be referenced via qualification if necessary. 05 MENU-PACKET-REV PIC 9(04) COMP. 05 MENU-LINE PIC 9(04) COMP. 05 MENU-COLUMN PIC 9(04) COMP. 05 DEFAULT-ITEM PIC 9(04) COMP. 05 ITEMS-STRING-PTR PIC S9(9) COMP. 05 ITEMS-DESC-PTR PIC S9(9) COMP. 05 ITEM-DESC-LINE PIC 9(04) COMP. 05 ITEM-DESC-COLUMN PIC 9(04) COMP. 05 HEADER-LABEL-PTR PIC S9(9) COMP. 05 FOOTER-LABEL-PTR PIC S9(9) COMP. 05 KEY-DEF-TABLE-PTR PIC S9(9) COMP. 05 INPUT-BUFFER-PTR PIC S9(9) COMP. 05 MENU-FORMAT PIC X(01). 05 NEW-WINDOW-FLAG PIC X(01). 05 DRAW-BOX-FLAG PIC X(01). 05 DIRECT-SELECT-FLAG PIC X(01). 05 MOVE-CURSOR-FLAG PIC X(01). 05 DRAW-AND-RETURN-FLAG PIC X(01). 05 TOP-BOUNDARY-TYPE PIC X(01). 05 BOTTOM-BOUNDARY-TYPE PIC X(01). 05 HI-LITE-ATTRIBUTES-ON PIC S9(04) COMP. 05 HI-LITE-ATTRIBUTES-OFF PIC S9(04) COMP. 05 TIMEOUT-SETTING PIC S9(04) COMP. ** The format of the next part of the packet depends on the packet rev: 05 DELIMITER-PTR PIC S9(9) COMP. 05 DELIMITER-HERE-REDEFINITION REDEFINES DELIMITER-PTR. * Either set the packet revision to 3 or place a value of -1 * in the following flag to indicate that you want to reference * DELIMITER-CHAR instead of DELIMITER-PTR: 10 DELIMITER-HERE-FLAG PIC S9(4) COMP. 10 FILLER PIC X(01). 10 DELIMITER-CHAR PIC X(01). ** The format of the next part of the packet depends on the packet rev: 05 SELECTED-ITEM-PTR PIC S9(9) COMP. 05 SELECTED-ITEM-HERE-REDEF REDEFINES SELECTED-ITEM-PTR. * Either set the packet revision to 3 or place a value of -1 * in the following flag to indicate that you want to reference * SELECTED-ITEM instead of SELECTED-ITEM-PTR: 10 SELECTED-ITEM-HERE-FLAG PIC S9(4) COMP. 10 SELECTED-ITEM PIC 9(4) COMP. *** End of packet revision dependent part of packet 05 SELECTED-STRING-PTR PIC S9(9) COMP. ** Additional fields added for packet rev 4: 05 MAX-VISIBLE-SPACE PIC 9(4) COMP. 05 SORT-MENU-ITEMS-FLAG PIC X(01). 05 FILLER PIC X(01). *** End of menu packet structure *** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Descriptions for each field in the menu packet: * *---------------------------------------------------------------------------- * * MENU-PACKET-REV serves to identify the packet format being used to * allow compatibility with other revisions of SCREEN DEMON. Place * a value of 2, 3, or 4 in this field, depending on the packet format * being used. See DELIMITER-PTR/DELIMITER-CHAR and SELECTED-ITEM-PTR/ * SELECTED-ITEM, where the format differs for packet rev 2, and the * additional fields at the end of the packet available for packet rev 4. * * MENU-LINE and MENU-COLUMN are the coordinates of the top left corner * of the menu box. * * DEFAULT-ITEM should contain the number of the particular menu item * that should be selected by default when the menu is displayed. If * the value contained in this field is not within the range of items * supplied in the menu list, then the first item will be the default. * * ITEMS-STRING-PTR must contain a byte pointer to the list of items * that are to appear on the menu. The items in the list must be * separated by vertical bars, `|', and the list must end with a * double set of vertical bars, `||'. A different character than `|' * can be used as the menu item delimiter by beginning the item list * string with a vertical bar and following it with the desired * character. The remainder of the list will then consist of the * various menu items separated by the new delimiter character, and * must end with two of these characters together. See optional * arguments below. * * ITEMS-DESC-PTR is an optional byte pointer to a list of descriptions * corresponding to the items on the menu. As with the ITEMS-STRING, * the individual descriptions must be separated by vertical bars, `|', * although only one `|' is necessary at the end of the list . * A different character than `|' can be used by beginning the * description list with a vertical bar and following it with the * desired separator character. Whenever a particular menu item is * highlighted, its description will be displayed at (24,1). If no * descriptions are desired, set ITEMS-DESC-PTR to zero. See optional * arguments below. * * ITEM-DESC-LINE and ITEM-DESC-COLUMN specify the cursor address * where the item descriptions should be displayed. These fields * are ignored if ITEMS-DESC-PTR is zero. The value for ITEM-DESC-LINE * must be from 1 to 24; if a value outside this range is specified, * line 24 will be assumed. The value for ITEM-DESC-COLUMN must be * from 1 to 162; if a value outside this range is specified, column 1 * will be assumed. * * HEADER-LABEL-PTR and FOOTER-LABEL-PTR are optional byte pointers * to text that should be placed in the top and bottom lines of the * menu box, respectively. Place zero in these -PTR fields if no * header or footer labels are needed. See optional arguments below. * * KEY-DEF-TABLE-PTR is an optional byte ptr to a 256.-byte table that * defines the action to be taken for each possible input key. If this * field is zero, then the default key definitions will be used. * * INPUT-BUFFER-PTR is an optional byte ptr to an input buffer structure * to be used with SD_GETCHAR (see that call for details). If no * buffer is to be provided, then set this pointer field to zero, and * single-character reads from the terminal will be done. * * MENU-FORMAT should contain either an `H' for a horizontal menu, or * a `V' for a vertical menu. A vertical menu will be created if the * format indicator is not one of these two letters. * * NEW-WINDOW-FLAG should contain a `Y' if the menu should be displayed * in a new window, or an `N' if the menu should be placed in the * current window buffer. If neither `Y' nor `N' is specified, a * value of `Y' is used. * * DRAW-BOX-FLAG should contain a `Y' if a box is desired around the * menu items, or an `N' if no box is required. If neither 'Y' or `N' * is specified, a value of `Y' is used. * * DIRECT-SELECT-FLAG should contain a `Y' if selection should be made * automatically (without requiring an additional ) when the * operator indicates the desired menu item by typing its first letter. * If this flag is set to `N', then the selection will be highlighted * after the operator enters its first letter, but a separate select * key (such as ) will be required. If neither `Y' nor `N' * is specified, a value of `N' is used. * * MOVE-CURSOR-FLAG should be set to `Y' if the cursor should be placed * in front of the currently highlighted entry at all times. If this * flag is set to `N', then the cursor's position on the screen will not * be affected by the pop-up menu. * * DRAW-AND-RETURN-FLAG, if set to `Y', indicates that no input is  to be * requested from the operator. The menu items will be placed on the * screen as directed, and then this routine will return to the caller. * If this flag contains a `N', then normal menu functionality exists. * Note that a `Y' in this flag is useless unless NEW-WINDOW-FLAG is * set to `N'. * * TOP-BOUNDARY-TYPE determines the behavior of the menu hi-lite when the * operator attempts to move above the top menu item. There are three * possible types: * W wrap hi-lite to bottom selection (default) * R return to caller * I ignore, leave hi-lite on top selection * * BOTTOM-BOUNDARY-TYPE determines the behavior of the menu hi-lite when * the operator attempts to move below the bottom menu item. There are * three possible types: * W wrap hi-lite to top selection (default) * R return to caller * I ignore, leave hi-lite on bottom selection * * HI-LITE-ATTRIBUTES-ON should contain the appropriate SCREEN DEMON bit * flags that indicate the screen attributes that should be set to on * for a menu item while it is the selected one. If this field contains * a value of -1, then the default Hi Lite On attributes will be used, * which is Reverse Video. Note that unselected items will always have * the attributes specified in HI-LITE-ATTRIBUTES-ON set to Off. * * HI-LITE-ATTRIBUTES-OFF should contain the appropriate SCREEN DEMON bit * flags that indicate the screen attributes that should be set to off * for a menu item while it is the selected one. If this field contains * a value of -1, then the default Hi Lite Off attributes will be used, * which are Dim and Underline. Note that unselected items will always * have the attributes specified in HI-LITE-ATTRIBUTES-OFF set to On. * * TIMEOUT-SETTING should contain the maximum time in seconds that the * menu should wait for a selection before returning. If no response * is received from the operator after this time, the menu will return * as if a selection had been made (whichever selection was highlighted * when this occurs), but the returned delimiter will be a 128 decimal. * Place -1 in TIMEOUT-SETTING for no timeout. * * For packet revision 3 or greater, the delimiter character is always * returned to the DELIMITER-CHAR field. * If the packet revison is 2 or less, DELIMITER-PTR should contain * a byte pointer to a PIC X(1) area that is to receive the delimiter * character code that ended the menu. Alternatively, to have the * delimiter returned in the DELIMITER-PTR field in the packet itself, * set the upper word of the field to -1; in this case, the low byte * of the field (DELIMITER-CHAR) will receive the delimiter. * In either form, the returned delimiter code can be interpreted as * described under the SD_READ_CHAR call. * * For packet revision 3 or greater, the selected item number is always * returned to the SELECTED-ITEM field. * If the packet revison is 2 or less, SELECTED-ITEM-PTR should contain * a byte pointer to a PIC 9(4) COMP field that is to receive the item * number of the selection chosen by the operator. Alternatively, to * have the selected item number returned in the SELECTED-ITEM-PTR field * in the packet itself, set the upper word of the field to -1; in this * case, the low word of the field (SELECTED-ITEM) will receive the * selected item number. * In either form, a zero item number will be returned if the operator * aborts out of the menu. * * SELECTED-STRING-PTR should contain a byte pointer to the area to * receive the text of the selection chosen by the operator. The text * will be terminated by a null. Only a null will be returned if the * operator aborts out of the menu. If SELECTED-STRING-PTR is set to * zero, then the text of the selection chosen by the operator will not * be returned. See optional arguments below. * * *** Parameters available for packet revision 4: * * MAX-VISIBLE-SPACE should contain the maximum number of lines allowed * for menu items if this is a vertical menu, or maximum number of * columns allowed for menu items if horizontal. Note that this value * does NOT include space for box border or header/footer, if any. * If the value of this field is not greater than zero, then the limit * will be based on the screen margins. If there are more menu items * than the specified limit, the menu will scroll as needed so that * the operator can access all selections. * * SORT-MENU-ITEMS-FLAG should contain a "Y" if the menu items should * be sorted into alphabetic order. Any other value indicates that * the items should be displayed in the same order that they appear * in the given menu items string. * * * * OPTIONAL ARGUMENTS * * Call format: * CALL "SD_MENU" USING MENU-PACKET, * { ITEMS-STRING, * { HEADER-LABEL, * { FOOTER-LABEL, * { ITEMS-DESC, * { SELECTED-STRING } } } } } * * * There are several optional arguments that can be specified as an * alternative to placing byte pointers into the menu packet. SD_MENU * will update the appropriate byte pointer slots in the menu packet * with the byte ptrs to the specified arguments; this means that a * subsequent call to SD_MENU without arguments will use the current * contents of the fields listed as arguments on the previous call. * * These optional arguments must be listed in the order shown. An unused * argument may need to be present simply as a placeholder to allow * an argument farther out in the list to be specified. If an argument * contains a null as its first character, it is assumed to be a placeholder, * rather than an actual argument. * * ITEMS-STRING - Same as the string described above that the packet * ITEMS-STRING-PTR points to. After the call, the * ITEMS-STRING-PTR field will contain a byte ptr to the * specified ITEMS-STRING argument, if one was present. * * HEADER-LABEL - Same as the string described above that the packet * HEADER-LABEL-PTR points to. After the call, the * HEADER-LABEL-PTR field will contain a byte ptr to the * specified HEADER-LABEL argument, if one was present. * * FOOTER-LABEL - Same as the string described above that the packet * FOOTER-LABEL-PTR points to. After the call, the * FOOTER-LABEL-PTR field will contain a byte ptr to the * specified FOOTER-LABEL argument, if one was present. * * ITEMS-DESC - Same as the string described above that the packet * ITEMS-DESC-PTR points to. After the call, the * ITEMS-DESC-PTR field will contain a byte ptr to the * specified ITEMS-DESC argument, if one was present. * * SELECTED-STRING - Same as the string described above that the packet * SELECTED-STRING-PTR points to. After the call, the * SELECTED-STRING-PTR field will contain a byte ptr to * the specified SELECTED-STRING argument, if one was * present. * *************************************************************************** *** End of SDMENU.DEF *** .@'Hs'H}'Ht= SD_SL_CONFIG.OB  SD_CONFIGH ## #5 #"C#!v` SD_UNINITIALIZED_DATA_PARTD ( 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))yzz` ` `0010110>01021320~SD_ALT_EXIT_KEY    ~        SD_HOT_TIMEOUT_INTERVAL                       SD < <              Z  !  " # $ % j& ' (  ) "k* $+ %, &M- '. (/ )n0 +1 ,2 -3 .4 / 5 0u6 2 7 38 49 5: 6 ; 7< 8= 9> ;? =@ ??A A|B CC ED GE IF KG MH O:I QOJ S\K UiL WM YN [~O ]P ^Q `R aS bT czU e[V fW g2X h0Y iZ j0[ k\ l] m^ n_ o` qa rb sLc td ue vf  xg zh {i }j ~~ k l `m `n  o pq .@'G`X'Hv'Ht?[SDCALENDAR.OB  SDCALENDAR )UD.SHORT_STATIC ! UD.STATIC  "SC.CODE # SD.CONSTANTS% PROG_ID_HEAD !PROG_ID  5PROG_CT  %?CBDPT '?CBANSI    SDCALENDAR   SDCALENDAR.DS SDCALENDAR  SD_CAL_L  SD_CAL_C  SD_CAL_W  SD_CAL_D   "02N0000000000000000000000 i  (SDCALENDAR_TITLE    Calendar Help| '  021355010{  0000000000 00000000000000000000000000000000]S JanFebMarAprMayJunJulAugSepOctNovDecJanuary February March April May June July August SeptemberOctober November December S M T W T F S09/ ( 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  X000000:D  bE00000000!  hInvalid date. "# tSD_ALT_EXIT_KEY #  ^  C1 for help$ jArrow 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:&   ' %COBEXCP ( %COBDSCL ) %COBTMP1 * %COBTMP2 + %COBTMP3 , %COBCHAR - % COBEFLP . %COBWFP/ %COBFLP0 %COBESKY 1  COBSINSPECT 2  COBINIT 3  COBDEDIT4  COBSWITCH 5  COBSTOP 6  COBEXIT 7 COBSCREEN_ACCEPT8 COBSCREEN_DISPLAY 9 SD_SET_SECONDARY_PROGRAM_NAME :  SD_TURBO_FULL ;  SD_GET_VALUE<  SD_PUT_VALUE=  SD_TURBO_RESET> SD_ACTIVE_WINDOW?  SD_TOP_WINDOW @  SD_READ_CHARA SD_CREATE_WINDOWB SD_REMOVE_WINDOWC SD_SUSPEND_WINDOW D SD_ERROR_MESSAGEE SD_MOVE_WINDOW_LEFT F SD_MOVE_WINDOW_RIGHTG SD_MOVE_WINDOW_UP H SD_MOVE_WINDOW_DOWN I 4$  J  K  C: L M  PH N O  ] P Q  _R S  aT U  cV W  eX Y  gZ   [$ i   \  ]$ z (   ^ _$  8   ` a  b   c  T  d & e  `  f , g  n  h 3 i  |  j : k    l @ m    n F o    p L q    r R s     t X u@3   ( v  w J ,  x  y$ Y \   z * {  p |-# 0BBBCC91B|}E; $ SCREEN DEMON Calendar |BMCBdB:BKB\ApA0C@Bm(@INPUT~# `@OUTPUT@CONSOLEBA@A0BY zA +! ABAABAPAN A cSDCALENDAR.FCBS 3 uu@CONSOLE 4 4 434E84[m€46,4F ut@OUTPUT  5 5 535E85[m€56,5F ut@INPUT 6 6 636E86[m€66,6F  zSDCALENDAR.DE  z  .COBACDT  19  0!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ,0000  .(  0(  219  .COBACTM  DERR.REL  301 9Y9 999)))) yHY )9()Mi9(yy))KTyYXI)XSii )@>Y @>  ##(+ .$257@ L O T W ] ` l o r u x {%     % Y)@>8(Y)9)9.)9Y9 9"9$9&)&)$)") )>)))D @>D4))Ɏǀ))񀉎)rr))>      %& B K NR U X [ ^%b         HY>)>8(Y)9()9*0,)9.Y90929496)6)4)2)0).>),)*)(D >D4 HY98)8)&    &  ! $ '&,7 S \ _c f i l&ps v'z} #  ݎ))DFBY)C ѶI FY8Y8) ޶I )9t)Mi9tyy))Kdy)9|)i9|yyH))Qi99T      %" * 4 : =(BE H)L\7g s v z8      i9i)Oy iyIII)y`yy)nKyy))i99|i9i)yy)yyƉ@iL)NP)|9RYTV)V)T)RH)N< )\yyƉ@iX)Z\)9^ 9  " % . 8 ? B G J O R W Z _ b   4"   (Y`b)b)`)^\)Z¦ rt<r)rr) ~ȶI )|Wyy)xSyy)u)]y)iXI)[Yii8)Y[yyi))~fy)i   4"  ! $ '*+3 6 ; > Q T [ ^ g j t z }     E& ǀ)Gy)L湜Lyitit. Yv      $   SDCALENDAR  D.TEN  40000 vt)vYiv rI )Wy iyIIIIÉI) y) $y):Syy)H8yy)f]yy)ryy)yy)Ɯyy)yy) ƋyyƉ@ij)ln)9pYrt)t)r)p$     '9/ 8 > A H K R U \ _ f i p s z }     )lh ZJو)YI))0H))0G))0)0))+))XI)99i)0i)9)fXI)i9i)yHhhi9hi湌)5وi))0)y) )+) XI) 4 "     & 0 I b h r v        J9i)yphph)+i)XI)9Ƈi)0i)9)ci9y()dyYIi)+i)XI)9ȇi)0i)9)ci9y(ih((hhh)))Yi9 9hi9 i)8yyƉ@i) )9Y)))8)     $ C K S k:x         )yKSYi ?RJو)AQI)@)0H)?)0G)>)0)0)=)+)<<)DXI)9F9=i)0i)E9D)fXI)i9Ii)yHhhi9hi湌)5وi)_)0)^y)])+)\X4"     # & 0 : S l r |        I)9^i)yphph)yKSYi)(yyƉ@i) )9Y)))() ))Q9x9i9xiƉ@i) ) 9YȞ)Ȟ)ƞ))֦  |I )0)yl      # , / O T W4Z"c l   4"   yW phhi9ΡhiΜXI)hii)Y)+)XI)9i)0i))))99y))i99yi      ' . 6    m  k  $  "  60000  80000  :02 )XI)99i)0i))))y)gi9y)XI)i9iXI)lii)N)y4hhi9hiXI)pii)Y I XI)t|ii)+)XI)9֜|i)0i)  ' + 1 9 ? B L Q U ` g k q t ~       u9)cXI)i9Շi)0)xyyix})0و)ی|)1))0)0))+)XI)9هi)0)+i)XI)9ޜxi)0i)9)eXI)i9އii)yzhh)ylh)     ! ( 3 J P Y a i y            #)ylh)湌وi)~))0))y))+))e9y)yh)yhyh)yy0h)G湜GyHh湜yHhGyhGi ~I       # + 5 N U Z a f k q u y ~          Y)()ܜHy)lixx(ۉI)|9yY()'yYIilIxyY)'yYIiI(ۉI)|9yY()'yYIillI)l  %    ! & ) . 395 < M R ` c i9k r          dҦY8Ɖ@))9Y ) ))Ğ)2  I r 8) r 8) r8) r8) r8) r 8) r +    (3 8 ;4>"I L X [ g j v y       c  8) r8) r8) r8r8r8r88) r0r9x     ( + 0 3 8 ; @ C R X      /  - @      XT  VV  ;00  <07  =01  oXII9ri)0i)))D9yir8rC8x)NFYrrx)YFYrr ~ֶI )+)XI)9Yi)0i)9)cXI)Yi9iXI)v    ! & ) 3 6,;> A E H O R-WZ ] a d r z       Yiix)+) XI)9"Wi)0i)!9 )cXI)Wi9"i)i)w.w,)Y[yyi I Z)7و)'Y)0)&y)%)+)$XI)Y9&iXI)[Yii)Yy[yY)+i)(XI)9*Wi)0i))9()c   % + @ C P [ o u |          ŇXI)Wi9*i)i)vv }I XI)xYiix)YyHYi)+),XI)9.Wi)0i)-9,)cXI)Wi9.i)i)v=v;\Zو)3[Y)2)0)0)1)+)0)c90yH)Yi uI )+)4X  # ) , 6 : > H P ` f y |        I)96Yi)0i)594)cXI)Yi96iXI)[Yii)+)8XI)9:Wi)0i)998)cXI)Wi9:i)i)uu))Yzyi I )+)<XI)9>Wi)0i)=9<)cXI)Wi9>i)i)uJuH ʶI )+)@X   $ * - 9 A Q W n q       >I)9BWi)0i)A9@)cXI)Wi9Bi)i)uu ʶI Ɖ@") $&) 9(Y*,),)*)(<)$ ))W9\9⼔i9\i),SyyƉ@i0)24):96Y8:):)8)6)2r Ɖ<)>@B) DFH)JLN   P U X4["c l u x   4"wR P)P)N)J)D)>r )9R)9T9V9X)X)V)TW)R)9Z)9\9^9`)`)^)\S)Z,  4!) . 1G L O   l   j   n   \y   2   #                           \   ^               D   F   q   s   S   U  >01  ?12  @0001  B19  C00  D12  E12  F01  G31  H30  I29  J28   SXI)|WiiXI)~WiixXI)Sii8ЦY ~Ɖ@b) df) 9hYjl)l)j)h<)d n)pr)9tvx)x)v)tĞ)p2 )ss ~I )9)Ui9      # ) , 7 :.?^ c f4i"  4"7  yy))Sy)sgisd ۶I rt)+)XI)9Di)0i)))d9y()'yYIi)Dyph()'yYIii)Dy()'yYIi)Dy()'yYIiirx>Y8rx>    ' / K P T c j y ~     /    Y8rx@Y8r8@Y :I $ YƉ@) )$9Y)))ܞ)> rr I 0    1 ! & )2.8 ; > A D G+Li n q4t"x {*  , E)u)r]`yi I XI)Wiix))Wy)+i)XI)9Si)0i)9)eXI)Si9iixXI)Wii8))Wy)+i)$XI)9&Si)0i)%9$)eXI)Si9&ii nI y)|     ) , 5 = M S ] c f r u ~      yix&  F*&  ))[y)`)]rPyi))[y)`)ZrPyi)xyy)uiu Yx))[y)`)WrPyi8))[y)`)TrPyi aI Y9)      ( + 3 6 A K N V Y c f n q              Y   W   /   -   M   O  e  b  )/  &2   w   z   6"   3%         E   B  W  Z    L  | .REQUIRE_LANG_RT_REV_3.00  .@'GW>'Ht'Ht2SD_INIT_NO_VM.OB   SD_INIT >C:AA!M/!b2SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTE!)= LWlz 7Sew  1GZm   )?Wgu3Mb}  ?ZBOT?G.SYSCASD_INTERCEPT_SYSCALLSD_MEM_ALLOCATESD_MEM_INITSD_NEW_WINDOW_NO_INITSD_COMPILE_RDLSD_EXECUTE_LIST_OF_CALLSSD_OUTPUT_STRINGSD_MONITOR_STRING_INTO_VIBSD_MONITOR_STRING_INTO_TIBSD_CONSOLE_INITSD_CONSOLE_INIT_MODELIDSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_ABORT_ALL_LOCKSSD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_DISABLESD_ENABLESD_CLOSE_CONSOLE_LOG_FILESD_ICX_TERMINATESD_ICX_INTERRUPTSD_DISCARD_INPUT_CACHESSD_DIVERT_INPUT_THROUGH_SPYSD_INPUT_IS_AVAILABLE_FROM_SPYSD_ABORT_HOT_KEY_HOLDSSD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_?READ_IN_PROGRESSSD_GET_CONNAME_FROM_MODEM_MGRSD_LOAD_CONFIGSD_SYSCALL_DISPATCH_ADDRSD_CONNAMECONSOLE_CHANICTRLICTRL2CTRLDEF_CTRLAWBUFAWOFSAWPOSNONFN_TBLNULL_TBLSD_INIT_CALLS_LISTSD_SHUTDOWN_CALLS_LISTSD_SPECIAL_PROGRAMS_LISTCONLOG_OPEN_FLAGFLUSH_INTERVALFLUSH_OUTPUT_BUFFLUSH_OUTPUT_PTRFLUSH_OUTPUT_ENDSD_INPUT_SEMAPHORESD_HOT_KEY_UTIDSD_CONFIG_FLAGSSD_CONSOLE_INTERRUPT_HANDLINGSD_CONFIG_TURBO_LEVELSD_DEFAULT_CURSOR_TYPESD_DEFAULT_SCROLL_RATESD_DEFAULT_7_OR_8_BIT_MODESD_DEFAULT_KEYBD_LANGSD_DEFAULT_PRIMARY_CHAR_SETSD_DEFAULT_ALTERNATE_CHAR_SETSD_DYNAMIC_CONFIG_FILENAME?SD_PATCHSD_NO_VM_TERMCAPS_TBLSD.SYSCALLIt { q3O b sAE     ' - 3 6 < 0B 1G 2 O  \  f  p "y  b      _    `  % ? ^ p x            R 3 B      ' ( /5 0C fQ ec r            SD_INITSD_SHUTDOWNSD_TERMINATESD_RESET_FLUSH_TIMERMAP_IN_CON_VM_RECORDMAP_IN_PID_VM_RECORDMAP_IN_VM_RECORDRELEASE_VM_RECORDUNLINK_PID_FROM_CONSOLEASSIGN_SD_CON_NUMASSIGN_SD_CON_NUM_USING_LISTHANDLE_SPECIAL_TURBO_SETTINGIS_PROGRAM_SPECIAL?SD_?KWAIT_HANDLERSD_DECLARE_CON_INTERRUPT_HANDLERSD_DECLARE_SIGNAL_HANDLERSD_SET_SECONDARY_PROGRAM_NAMESD_GET_CONSOLE_STATUSSD_GET_CONSOLE_DEVICE_NAMESDSetSecondaryProgramNameSDGetConsoleDeviceNameCON_VMPID_VMTIBTIBATRTIBOFSATTRBCHARSETSTIB_UPD_COUNTTIB_WNDDSCTIB_WNDFLGTIB_VIEWSCON_ACTIVE_PIDCON_SHUTDOWN_PIDCON_FLAGSRETURN_INPUT_STRINGRETURN_INPUT_SIZEOBTAIN_INPUT_SIZECON_HOT_FROMCON_HOT_KEYACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLACTUAL_CON_TIMEOUTTIB_LMARTIB_RMARTIB_OLMARTIB_ORMARTIB_CLONECON_MODELIDCON_TERMCAPSVIRTUAL_CON_TIMEOUTVIRTUAL_CON_CHARACTERISTICSVIRTUAL_CON_DELIMITER_TABLEPID_FLAGSCON_PROGCON_PROG_END_PTRCON_USERNAMECON_LISN_UTIDCON_LAST_DELIMCON_CUT_BUFFERCON_CUT_BUFFER_LENCOMPOSITE_IMAGECOMPOSITE_UPD_COUNTSD_CUR_PIDSD_DAD_PIDSD_ACTUAL_DAD_PIDSD_CON_NUMSD_CON_DEVICESD_WORK_DIRSD_WORK_DIR_PATHVM_FILENAME_BASE   l * $ &   ,     VM_PATHNAMEVM_CHANCON_TYPE_LISTNONFNB_TBL?KWAIT_MAILBOX?KWAIT_CHARAOS.VS_REVISIONAOS.VS_TYPEFLUSH_TIMER_TASK_IDSD.SD_INITUD.SD_INITUI.SD_INITUnable to find directory called :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM+>?>CONBATCHNOCON@VCON@WCON@PCCON      0  1  2  3  "              "      (@Y           ! " # $ % & '  ( ) * + ,  -  _.  `/  b0  d1  e2 f3 4 5 6  7  8 9 (: '; /<  /=  0> 3? B@ RA B  C 4D E $F  G  H  I  J  K  L  M  N  O  !P  "Q  #R  $S (T  U V  W X  Y  Z 2[)p8I YYbYIYNY$4)I9&4)Ix)7 Y=)@)   Yy@x)  Yy@x)  2,9Yy@8YYU)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 )4)6I8Ii))IYS Y9999I۩Y)I/YIYW8)IYS iY )Y99D)xyȉ yyy9Yi8) @CONSOLE)♻) i )9)99)Y999yس8))@8)8I9)89)) JI\ JIY9ix9()@9)Iyi*y YYYyyi)YYUY ))8)⩻) 8)YYU)9X)yyiIIx9 ){  Console name not found in Console Types table or out of range! Correct SCREEN_DEMON.CONTYPES and then MAKE_SCREEN_DEMON.VM i  )`Ii)YYU / / Q(Q- 03 8Q@ EQKSX^ euQz Q  Q Q;289; @ DK N V [QlQt x { Q   Q0Q02 Q2  '0,Q8A F M RQb-f2l s z Q2   P  Q\)IYS ) ʩ)ʩ)ˉ Y)ʩ) ʙ) ʩ)@ʙ)I  ) ʩY)ʙ) ʩ)ʙ!) yy)0Yyy0Y9)/yYyi) YYUY0)Y12396 9495Y9Y)!Ii)9999)99)99)99)O99#() YyyiY)nyyɀi)nyyi9y) y)R8)P).yyYy* YYy yiY9ϫI))I) YY )x')IixI NY9Y:) YYU   IR)YiY )I Y9Y)Ii )99(YYo)) 8y9(98)$yy*)ܧIi) 9Y9(Y Unable to load configuration file: ) IYS)YYUi  )Ii  )Ii) IYSY)8 Y)x  ")္II)iY Ȃ:PER:CONSOLENOCON))  Q 3# '26 9 A G2U X _ g r y ~Q J L M  IHK     6 76 8    *9CK R UGZ c4f5k n q x   Q  Q @ABQ  .N 2 : ?QD K PQUY d o w |Q2   Q <# ]) ţbyYyyyIyyxyYyyb)yl)"Ibyyy) yYy: YYYyyЉIyYYyy)x89Y8y)YĹI8IX)Iȉ艇yyyY8Y) IY) YcYY'Y湁Y9))WYYYȮ癮x)YxYxY)IISYYUxY$8' -x)' yx) ) x ) ')^C^@yI9)  ) ')8) ))8)88) &8Y$YSx(щ8xYI  L  8Y)x))x*щx))x) -) )8WY)xY)Y) 9*) }Y9)EConsole Interrupt (y**yIYy)АIYy-щY- ΉQy) Y)y幥))YY) )x)Ή)   #) 199~ 9 Q)Q$ 2 Q Q Q   &F /49 ?B QTX`c i p4v2|,E2D3)  Q QQ   ' ( 3  #Q(+.)1482? FNQ[Qn%s x { ?  ? 3 Q  C1Q^ )@xY)˸ P8Y) 88Y)`x) sy)x,fYNy))⹂ )8)8)⹁x))⹁)IP))©x)@))ꙻY)8)x)x)xσ80x0ϔiyy8y IyY)艆Yɇ))8 ) )Y*IyYyi )*),깁Y9Yi ) *IY9 )yYYY)))C)) )y 9)Y9)I9) ) IiY9)xyYyy234   '3.1 4: A HQP2Z a#d4j5q"u4{544!5422454=   ,2 5 H2k p:_ .@'GZ'H}'HtSD_PLAY_HELP_SCREEN.OB  SD_PLAY_HELP_SCREENC7SD_SHARED_DATA_PARTSD_PLAY_HELP_SCREEN7 _______________ . . . |_______________| |_______________| |_______________| | 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]========================== 7  .@'Fox'Hu'Hu OJ SDCONTROL.WS  ******************************************************************************* * $Id: sdcontrol.ws,v 1.4 1995/07/11 20:51:13 mark Exp mark $ * * $Log: sdcontrol.ws,v $ * Revision 1.4 1995/07/11 20:51:13 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 * ******************************************************************************* *** SDCONTROL.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of the Screen Demon user control word. ** The value of this word can be set by the SD_CONTROL call, ** or obtained using the SD_GET_CONTROL call. ** This copy file is intended to be used to manipulate the bits ** in the control word via the SD_BITS_TO_DIGITS and the ** SD_DIGITS_TO_BITS calls. 01 SD-CONTROL-BITS-GROUP. 05 SD-CONTROL-RESERVED-BITS PIC X(5). 05 SD-CONTROL-FULL-COMPARE-FLUSH PIC X. 05 SD-CONTROL-NO-HOT-KEYS-BIT PIC X. 05 SD-CONTROL-UNDER-WP-BIT PIC X. 05 SD-CONTROL-UNDER-CEO-BIT PIC X. 05 SD-CONTROL-FLUSH-NEEDED-BIT PIC X. 05 SD-CONTROL-PARTIAL-TURBO-BIT PIC X. 05 SD-CONTROL-TURBO-BIT PIC X. 05 SD-CONTROL-RESERVED-1-BIT PIC X. 05 SD-CONTROL-REDRAW-BIT PIC X. 05 SD-CONTROL-RESERVED-2-BIT PIC X. 05 SD-CONTROL-DISABLE-BIT PIC X. ************************************************************************ * SD-CONTROL-RESERVED-BITS Undefined * SD-CONTROL-FULL-COMPARE-FLUSH Ignore "modified zones" when updating * the terminal screen, comparing the * entire image at every flush. Needed * if program modifies image buffers * directly, instead of through SD calls. * SD-CONTROL-NO-HOT-KEYS-BIT Hot keys are disabled * SD-CONTROL-UNDER-WP-BIT Successful connection established with * WordPerfect Office Shell * SD-CONTROL-UNDER-CEO-BIT Successful connection established with CEO_CP * SD-CONTROL-FLUSH-NEEDED-BIT Window image buffers have been modified since * the last terminal screen update * SD-CONTROL-PARTIAL-TURBO-BIT If the Turbo bit below is also set, then * Turbo mode is Partial, rather than Full * (OBSOLETE!) * SD-CONTROL-TURBO-BIT Optimized display processing is on * SD-CONTROL-RESERVED-1-BIT Undefined * SD-CONTROL-REDRAW-BIT A Redraw is needed at the next screen update * SD-CONTROL-RESERVED-2-BIT Undefined * SD-CONTROL-DISABLE-BIT Screen Demon is disabled - all functions off *** End of SDCONTROL.WS *** .C'H}'H}'H}[SCREEN_DEMON.SL.ST   SD_LD_THICK_THIN ;SDDisplay/&..sc..SD_C_FILE_IO/ ..sc..SD_C_SCREEN_IO kSD_PO_BOX_CHAN (sstrcpy sd_nopen SDinput lpSD_FORCE_CURSOR_WRAP_AT_MARGIN 2FUNTBL DSPTBL PRIMARY_WINDOW BINPUT_ERROR_WINDOW l..RIP AWCPL% λWREPLACE 0SDLoadTib _SDFlush CURRDL 2UPPERCASE_XLAT_TBL &SD_IS_NAME_CONSOLE? SD_FIND_CONSOLE_CHANNEL_INFO ^HOT_KEY_DEFS_TABLE \HOT_KEY_ASSIGNMENTS_TABLE CONSOLE_CHAN_MAP 8SD_CONSOLE_MATCH_?CTO bHOT_DELIMITER_TABLE kREAD_CHAR_CONSOLE_CHAN0 SDSetLogoffInterval SDControl `SDAskQuestion SDMonitorStringIntoTIB/ ..ud..SD_C_SCREEN_IO SDSendMail bSDCompileRDL RDL_REBUILD_COUNT SD_CONSOLE_INPUT_PREP  SD_MEM_FREE_BP iZAOS.VS_REVISION RELEASE_VM_RECORD ]SD_SCROLL_WINDOW_UPA .REQUIRE_LANG_RT_REV_2.30 `SDBypassOn SDTurboPartial SDInputString .REQUIRE_LANG_RT_REV_3.10 4SDMalloc  SDTurboFull SD.SD_READ_CHAR fWSLAP FLDSCRNPKT SD_HOT_KEY_LEVEL" 2SDTemplateMatch ySDGetValue SDDrawBox".NULLDEL/ ..ud..sd_mail SDwrite [SDGetImage CHOT_OFF_CON_CHARACTERISTICS 4HOT_ON_CON_CHARACTERISTICS SDGetHotCalledFromName SD_CALL_ICOBOL_SUBPROGRAM FLUSH_OUTPUT_CNT SD_?READ_ABORT_SEM$ ,  sd_nread UD.SD_HOT_KEYS UD.SD_WINDOWS SD_PRE_FLUSH_CALLS_LIST TSD_OUTPUT _SD_FLUSH_FOR_MONITOR_HOLD_OUTPUT SD_INPUT_TASK_ID (SD_SPY_REMOTE_INPUT (SD_INPUT_FIELD SD_PRE_?READ_CALLS_LIST SD_LOG_CONSOLE_EVENT _SD_FLUSH_BUT_HOLD_OUTPUT SC.SD_INTERFACE! kUI.SD_COMMAND UD.SD_COMMAND/..ud..sd_cscreenprint gsd_nclose sd_nwrite ~SD_CONSOLE_TO_HOT_KEY_STATE tSD_GET_SCREEN_IMAGE AWCPS \POPWINDOW |lSD_APPEND_TO_GETCHAR_CACHE kUI.SD_INPUT_FIELD UD.SD_INPUT_FIELD "SD_HOT_INPUT_TYPE uSDDumpScreen/,..sc..sd_cscreenprint"SD_SCR_PRT_MAX_LEVELS-..LOW32K SDProcPr kUI.SD_READ_CHAR UD.SD_READ_CHAR w0READCHAR fSD_RESET_MOD_ZONES eSD_ADJUST_AW_MOD_ZONES aSD_SYNC_AW_FIELDS k,UI.SD_MONITOR FUD.SD_MONITOR SD.SD_INPUT_FIELD (SDTurboReset |SDDiscardTypeAhead TOP_WINDOW :SDSetAcceptLowercase :SDSetAcceptUppercase ;SD_GET_NEXT_FROM_INPUT_HISTORY ;SD_GET_PREV_FROM_INPUT_HISTORY 8SD_REQUEST_INPUT_THROUGH_SPY _SD_FLUSH_HDW_STATE_ONLY &SD_WAIT_FOR_HOT_KEY jSD_MODEM_DISCONNECT_KEY iSD_ALT_EXIT_KEY& tvWREFRESH f9SD_DISPLAY_INTO_STRING_JSR X{SC.SD_WINDOWS SD.SD_WINDOWS AW_LIST_HEAD _SD_CLEAR_TIB fSD_DISPLAY_INTO_STRING_FOR_TIB u SD_GET_SCREEN_IMAGE_JSR U\SD_FATAL_ERROR [SD_RESTORE_WINDOW_FROM_CLONE_JSR XSD_CLONE_WINDOW_JSR _SD_FLUSH_FOR_MONITOR SD_INPUT_ABORT_ADDR XPFUNTBL \SD_REMOVE_WINDOW_NO_FLUSH JUD.SD_LOAD_CONFIG SD_FLOAT_CLOCK_WIDTH MAX_CONLOG_SIZE SD_REMOTE_INPUT_INDICATOR_WIDTH ~SD_REMOTE_VIEW_INDICATOR_WIDTH vMAIL_VIEW_HEIGHT SD_MATCH iVM_PATHNAME tVM_FILENAME_BASE irSD_WORK_DIR_PATH ٴACTUAL_CON_DELIMITER_TABLE3 :NONPRT_TBL AWSET T:SD_OUTPUT_STRING_TO_BUF UD.SD_INTERFACE {SC.SD_LOAD_CONFIG SD.SD_LOAD_CONFIG qMAIL_INDICATOR QSD_CONFIG_REV k UI.SD_CONSOLE UD.SD_CONSOLE |OUTNAME ACCEPT_TIMEOUT_RESET ACCEPT_TIMEOUT AWDSC, ,SD_?ESBB_DISABLE |SD_CALL_HOT_KEY_ROUTINE TSD_CONSOLE_?WRITE SD_SCROLLBACK_BUFFER_SIZE SD_INPUT_HISTORY_SIZE SD_FLOAT_CLOCK_LINE SD_READ_MAIL_AUTO_DELETE SD_READ_MAIL_ASK_OUTPUT_NAME SD_READ_MAIL_OUTPUT_NAME SD_CLI_PATHNAME SD_COMMAND_TITLE SD_INPUT_MAIL_TITLE')EXTC_SD_PRE_FLUSH_CALLS)EXTC_SD_POST_PROC_CALLS FLOAT_TOP_WINDOW PAD_PATH_SUFFIX PAD_PATH_PREFIX |INNAME RVIRTUAL_CON_TIMEOUT-IG_TABLE_DATA_PART-IG_TABLE_DATA_START- IG_TABLE_PART-IG_TABLE_START SL.DERR.HOOK SL.DERR.IHOOKG eSD_ADJUST_WINDOW_MOD_ZONES SD_?IDGOTO_TARGET_TASKS  SD_INTF_?WRITE_DATASENS SD_SHCON_IPC_IGNORE_PNAMES SD_GET_IMAGE_DEFAULTS SD_WEEKDAY_NAMES SD_MONTH_NAMES SDCALCULATOR_TITLE_TWO hHOT_ESCAPE_KEY SD_SHCON_IPC_IGNORE_PIDS *CONPKT CONSOLE_PORT  OUTPATH_PTR+  'SWITCH_TO_SCREEN_DEMON_STACK  kSD_MEM_ALLOCATE- ?UDP000014 SD_DYNAMIC_CONFIG_FILENAME SD_HOT_LINKS_TABLE SD_CONFIG_BASE- ?UDP000004 SCREEN_DEMON_SLD.OB \SD_SET_DELIMITER_TABLE FSD_GET_DELIMITER_TABLE ʙSD_SET_BOX_FILL_STYLE USD_SET_LINEDRAW_STYLE;- T?UDP000011- ?UDP000001 w#SD_EXTENDED_READ_CHAR SD_COMMAND XSD_NEW_WINDOW_NO_INIT SD_RETURN_INPUT SD_SET_ACCEPT_TIMEOUT  H?SCOPE_DEFN_PART  H?SCOPE_INFO_PTRS_PART-SD_UNSHARED_DATA_PART SD_INITH )SD_CLI_INTERFACE SD_MAIN_MENU żSD_DRAW_HLINE ƂSD_DRAW_VLINE SD_SYS_ERROR_MESSAGE SD_ERROR_MESSAGE 3SD_MESSAGE !SD_MENU SD_POP_UP_MENU  \SD_REMOVE_WINDOW XSD_NEW_WINDOW 7SD_INPUT_STRING fJSD_DISPLAY_INTO_STRING bSN.ROOT_SCREEN_DEMON- H?SL_INTERFACE_END- *?SL_INTERFACE_PART- ?SL_INTERFACE_START {?SL.USER.STATICS.INIT ?G.UTSKB  6ROOT_SD_SHUTDOWN_CALLS  3ROOT_SD_PERIODIC_CALLS  0ROOT_SD_INIT_CALLS ?G.UTSKG m.?NMAX)EXTC_SD_POST_INPUT_CALLS)EXTC_SD_PRE_INPUT_CALLS)EXTC_SD_POST_HOT_CALLS)EXTC_SD_PRE_HOT_CALLS)EXTC_SD_SHUTDOWN_CALLS)EXTC_SD_PERIODIC_CALLS)EXTC_SD_INIT_CALLS-pTSD_SHARED_DATA_PART- HcSD_UNINITIALIZED_DATA_PART .C'H}1'H}>'H}>09SD_MAIL_CALL.ST   p?BOMB ?G.IXIT 0?G.IXMT 0?G.BKPT pM?NTOP pu.KILL- p&?UDP000000 pp?URTB p(?ZMAX pN?NMAX 0?G.UTSKG p(?ZBOT ?SBOT p?NBOT p.UKIL p?UKIL p)CFALT p&SFALT 0?G.UKILL p/FFALT p{.UTSK p,IFALT 0?G.SYSCA p?UTSK pREPEAT_INTERVAL p}SD_MAIL_CALL pr.BOMB 0?G.UTSKB pMAIL_CHECK_DELAY ( .C'H}'H}'H}SCREEN_DEMON_RING_6.ST   `?BOMB `hSD_LD_THICK_THIN `USDDisplay/`@..sc..SD_C_FILE_IO/`:..sc..SD_C_SCREEN_IO `c{SD_PO_BOX_CHAN `Bsstrcpy `sd_nopen `SDinput `SD_FORCE_CURSOR_WRAP_AT_MARGIN `2FUNTBL `DSPTBL `gPRIMARY_WINDOW `gpINPUT_ERROR_WINDOW `d..RIP# ?G.IXIT 0?G.IXMT 0?G.BKPT `WREPLACE `JSDLoadTib `SDFlush `gCURRDL `fHOT_KEY_DEFS_TABLE `fHOT_KEY_ASSIGNMENTS_TABLE `..ud..SD_C_SCREEN_IO `SDSendMail `SDCompileRDL `gRDL_REBUILD_COUNT `?SD_CONSOLE_INPUT_PREP `7SD_MEM_FREE_BP `aHAOS.VS_REVISION `2RELEASE_VM_RECORD `SD_SCROLL_WINDOW_UPC `?NTOP .REQUIRE_LANG_RT_REV_2.30 `zSDBypassOn `3SDTurboPartial `SDInputString .REQUIRE_LANG_RT_REV_3.10 `NSDMalloc `$SDTurboFull `SD.SD_READ_CHAR `WSLAP `g`SC.SD_MONITOR `SD.SD_MONITOR `ZDISPLAYABLE_CHARS_TBL `bSET_FLD_DELIM_TBL. `(?ZMAX `L?NMAX `?SD_GET_LINEDRAW_INTERSECT_CHAR `hSD_LD_ATTRB `kSD_ASK_QUESTION_JSR `SD_MESSAGE_ONLY_JSR `SC.sd_sys `wSD_ERROR_MESSAGE_JSR `SD_SYS_ERROR_MESSAGE_JSR `SD_MESSAGE_JSR `SD_PO_DIR `SC.SD_HOT_KEYS `SD.SD_HOT_KEYS `SD_SPY_REMOTE_GETCHAR `?SBOT `?NBOT `>SC.SD_NO_LANG_RT ?LBOT `2SC.SD_RETURN_INPUT `SDTurboOn `ݒSDMessage `SD.SD_NOTEPAD `ЇSDNotepad `FSC.SD_MAIL_SUPPORT `SD.SD_MAIL_SUPPORT `SDbeep `$sd_sys `ռSDfill `;utoa `SDMenu `?UKIL `i$SD_PATCH_LIST `d..ESC `hUD.SD_CALL_LISTS `hCONLOG_SIZE `SD_PASTE_FIELD `SD_CUT_FIELD `0SC.SD_MENU `SD.SD_MENU `SD.SD_POP_UP_MENU `iSC.SD_MESSAGE `SD.SD_MESSAGE `SDGetControl `ۦSDObtainInput `SC.SD_MAIN_MENU `1SC.SD_MODEM_INTF `OWCTRL/`jH..ud..sd_get_put `SD_CONLOG_DIR_NAME `ڕSDMonitorString `dUI.SD_NOTEPAD `hzUD.SD_NOTEPAD `hUD.SD_MAIL_SUPPORT `cvUI.SD_MAIL_SUPPORT- ` ?UDP000014 `SD_UNLOCK_PO_FILE `SD_LOCK_PO_FILE `czSD_READ_MAIL_ACTIVE `SDReadChar `)CFALT `&SFALT- `&?UDP000015 `SD.SD_CONLOG `hUD.SD_MESSAGE `bSDPutValue `hUD.SD_MAIN_MENU `h~UD.SD_CLI_INTERFACE `SDsetcur `SDPopUpMenu `SDNewWindow `aCOBOL32_OFF_CON_CHARACTERISTICS `RCOBOL32_ON_CON_CHARACTERISTICS `GFUNTBL 0?G.UKILL `SC.SD_MATCH `SD.SD_MATCH `SD.SD_DRAW_BOX `SDMessageOnly `_SDReturnInput `SDOutputString"`i.UtoaBase `XFUNTBL `gCURRDL_PRIMWND `clWINDOW_SCROLL_COUNT `gSD_MONITOR_STRING_INTO_WINDOW `SD_CREATE_FLOAT_WINDOW `gCHARACTER_SET_PALETTE( `<SD_PATCH `dSD_NPATCH `6SC.SD_WLI_DUMMY `SDDisableHotKeys `d UI.SD_CONLOG `hUD.SD_CONLOG `SDSetAndLockUserId `SDSetUserId `SDSetAcceptCursorOffset `PSDSetAcceptTimeout `өSDSetCLIInitCmd `çSD_CLOSE_USERS_PO_BOX `{SDCLICmd `dcurrent_opcode `/FFALT `dUI.SD_PATCH `i"UD.SD_PATCH ?SD_NPATCH `dUI.SD_NO_ICX `SDEnableHotKeys `SDBypassOff `=SD_CONTROL_ONLY `hUD.SD_DRAW_BOX `SDSetBoxFillStyle `oSDSetLineDrawStyle `2SD_MENU_CALC_SIZE_ONLY `<SDSetFieldDelimiterTable `SDObtainHotKey)`iEXTC_SD_POST_?CHAIN_CALLS)`iEXTC_SD_PRE_?CHAIN_CALLS)`iEXTC_SD_PRE_?READ_CALLS)`iEXTC_SD_POST_INPUT_CALLS)`iEXTC_SD_PRE_INPUT_CALLS)`hEXTC_SD_POST_HOT_CALLS)`hEXTC_SD_PRE_HOT_CALLS)`hEXTC_SD_SHUTDOWN_CALLS `zSDDisable `"SDUnlockUserId `SDUserId ` SDGetChar `SDDrawVLine `SDEnable `TDRAWBOX `߆SDCreateWindow `gSDGetTermcaps `SDTurboOff `SDErrorMessage `ڇSDGetPos `!sd_nseek/ `..sc..sd_mail)`EXTC_SD_HOT_KEY_LIST `SDXGetChar `gBOTTOM_WINDOW `{SDSuspendWindow `gPRIMARY_WINDOW_SCROLL_COUNT' `,IFALT `)SDGetUserId `SDCreateWindowNoBox `SDGetAcceptCursorOffset `0SDReadCharOnly `~SDGetImageBelowFloat ``SDDisplayIntoString `SD_OPEN_MAIL `HSD_CHECK_FOR_NEW_MAIL `ZSDFree `SD_COMPILE_NONFLOAT_TEMP_RDL `"SD_NONTRAIL_DELIM_TBL `glFLDSCRNPKT" `n.BOMB `8WLI? `LSDTemplateMatch `ܓSDGetValue `٢SDDrawBox"`.NULLDEL/ `iB..ud..sd_mail `SDwrite `uSDGetImage `CHOT_OFF_CON_CHARACTERISTICS `4HOT_ON_CON_CHARACTERISTICS `1SDGetHotCalledFromName `.SD_CALL_ICOBOL_SUBPROGRAM `gFLUSH_OUTPUT_CNT ,  `SD.SD_CLI_INTERFACE `sd_nread `gUD.SD_HOT_KEYS `gUD.SD_WINDOWS `iSD_PRE_FLUSH_CALLS_LIST `SD_OUTPUT `SD_FLUSH_FOR_MONITOR_HOLD_OUTPUT `gDSD_INPUT_TASK_ID `SSD_SPY_REMOTE_INPUT `S6SD_INPUT_FIELD `iSD_PRE_?READ_CALLS_LIST `9SD_LOG_CONSOLE_EVENT `SD_FLUSH_BUT_HOLD_OUTPUT$)`hEXTC_SD_SCREEN_SAVER_CALLS)`i EXTC_SD_PRE_PROC_CALLS)`hEXTC_SD_PERIODIC_CALLS `"SDDrawHLine `SDRemoveWindow `SDRedraw `gAW_LIST_TAIL)`iEXTC_SD_PRE_FLUSH_CALLS)`iEXTC_SD_POST_PROC_CALLS)`hEXTC_SD_INIT_CALLS `fPAD_PATH_SUFFIX `fPAD_PATH_PREFIX `gFLOAT_TOP_WINDOW8 `VSC.SD_COMMAND `SD.SD_COMMAND `SDDumpScreen/`F..sc..sd_cscreenprint"`i,SD_SCR_PRT_MAX_LEVELS-`&..LOW32K `SDProcPr `cnUI.SD_READ_CHAR `gUD.SD_READ_CHAR `JREADCHAR `"SD_RESET_MOD_ZONES `SD_ADJUST_AW_MOD_ZONES `SD_SYNC_AW_FIELDS `cUI.SD_MONITOR `crUI.SD_COMMAND `gUD.SD_COMMAND/`i0..ud..sd_cscreenprint `فsd_nclose `؟sd_nwrite `SD_CONSOLE_TO_HOT_KEY_STATE `SD_GET_SCREEN_IMAGE `gAWCPS `POPWINDOW `SD_APPEND_TO_GETCHAR_CACHE `cUI.SD_INPUT_FIELD `gBUD.SD_INPUT_FIELD `gPSD_HOT_INPUT_TYPE! `LSDSysErrorMessage `BSDTurboReset `SDDiscardTypeAhead `gTOP_WINDOW `eSDSetAcceptLowercase `eSDSetAcceptUppercase `gSD_GET_NEXT_FROM_INPUT_HISTORY `fSD_GET_PREV_FROM_INPUT_HISTORY `cSD_REQUEST_INPUT_THROUGH_SPY `SD_FLUSH_HDW_STATE_ONLY `fSD_MODEM_DISCONNECT_KEY `fSD_ALT_EXIT_KEY% `SD_GETCHAR `WREFRESH `SSD_DISPLAY_INTO_STRING_JSR `SC.SD_WINDOWS `SD.SD_WINDOWS `gAW_LIST_HEAD `SD_CLEAR_TIB `7SD_DISPLAY_INTO_STRING_FOR_TIB `&SD_GET_SCREEN_IMAGE_JSR `vSD_FATAL_ERROR `6SD_RESTORE_WINDOW_FROM_CLONE_JSR `SD_CLONE_WINDOW_JSR `SD_FLUSH_FOR_MONITOR `SD.SD_DISPLAY `XPFUNTBL `SD_REMOVE_WINDOW_NO_FLUSH `fxUD.SD_LOAD_CONFIG `fSD_FLOAT_CLOCK_WIDTH `fMAX_CONLOG_SIZE `fSD_REMOTE_INPUT_INDICATOR_WIDTH `fSD_REMOTE_VIEW_INDICATOR_WIDTH `fMAIL_VIEW_HEIGHT `SD_MATCH `aVM_PATHNAME `VM_FILENAME_BASE `a`SD_WORK_DIR_PATH0 `gtUD.SD_MONITOR `SD.SD_INPUT_FIELD `SD_ADJUST_WINDOW_MOD_ZONES `fSD_SHCON_IPC_IGNORE_PNAMES `fSD_GET_IMAGE_DEFAULTS `fSD_WEEKDAY_NAMES `fSD_MONTH_NAMES `fSDCALCULATOR_TITLE_TWO `fHOT_ESCAPE_KEY `fXCONPKT `={SD_CONSOLE_INIT_CHARACTERISTICS `:SD_RESET_TIMEOUTS `fSD_NO_LOGOFF_USERS- `cfWINDOW_PEND_MISC `cdWINDOW_PENDFUNC `:NONPRT_TBL `gAWSET `TSD_OUTPUT_STRING_TO_BUF `ASC.SD_LOAD_CONFIG `SD.SD_LOAD_CONFIG `fMAIL_INDICATOR `fSD_CONFIG_REV `bUI.SD_CONSOLE `eUD.SD_CONSOLE `gAWDSC `fSD_CONFIG_NRM_OFF `fLOGOFF_OK_BEFORE_TIME+ `gISD_?READ_ABORT_SEM `gSD_LOGOFF_CALL_PROGRAM `fHOT_MENU_ITEM_NUMS `fHOT_MENU_ITEMS `fLOGOFF_INTERVAL `7SD_MAP_MEM_TO_VM `eCON_CUT_BUFFER_LEN `6$SDGetConsoleDeviceName `gFLUSH_OUTPUT_END 0?G.UTSKB `eFLUSH_TIMER_TASK_ID `bCONSOLE_CHAN `a_SD_CON_NUM `gvICTRL2 `gGSD_INPUT_ABORT_ADDR `goSD_MONITOR_ECHO_INTO_TIB `h9SD_MONITOR_ECHO_INTO_VIB `fSD_MAIN_MENU_FOOTER `fSD_WP_SHELL_CLI_LETTER `fSD_REMOTE_INPUT_INDICATOR `fSD_REMOTE_VIEW_INDICATOR `fMAIL_VIEW_COLUMN `fzSD_CONFIG_BASE_ADDR `=SD_CONSOLE_GET_VIRTUAL_CHAR `:cSD_PROCESS_TIMEOUT_ERROR) `XSD_?ESBB_DISABLE `SD_CALL_HOT_KEY_ROUTINE `fSD_SCROLLBACK_BUFFER_SIZE `fSD_INPUT_HISTORY_SIZE `fSD_FLOAT_CLOCK_LINE `fSD_READ_MAIL_AUTO_DELETE `fSD_READ_MAIL_ASK_OUTPUT_NAME `fSD_READ_MAIL_OUTPUT_NAME `fSD_CLI_PATHNAME `fSD_COMMAND_TITLE `fSD_INPUT_MAIL_TITLE `fSD_READ_MAIL_TITLE& `gSD_HOT_KEY_LEVEL `fMAIL_VIEW_WIDTH `fINPUT_FEEDBACK_STRING_SIZE `fSD_HOT_TIMEOUT_INTERVAL `SD_LOGOFF_WAIT_INTERVAL `f=USER_TIMEOUT `>lSD_CONSOLE_GET_VIRTUAL_DELIM_TBL `gQFLDPKT `fSD_SCREEN_SAVER_INTERVAL `fPERIODIC_INTERVAL `eUD.SD_LOCK `SD.SD_MEM `0CON_LAST_DELIM1 `fSD_FLOAT_CLOCK_FORMAT_LEN `fSD_FLOAT_CLOCK_COLUMN `fCEO_MAIL_VIEW_COLUMN `fSD_REMOTE_INPUT_INDICATOR_COLUMN `fSD_REMOTE_VIEW_INDICATOR_COLUMN `fINPUT_FEEDBACK_STRING `<SD_CONSOLE_OPEN `bxUI.SD_MEM `eUD.SD_MEM `7SD_EXPAND_SHARED_PARTITION `(RESTORE_USER_STACK `gAWCPL: `fSD_FLOAT_CLOCK_FORMAT `fSD_FLOAT_CLOCK_HEIGHT `fSD_DEFAULT_CLI_INIT_CMD `fSD_REMOTE_INPUT_INDICATOR_HEIGHT `fSD_REMOTE_VIEW_INDICATOR_HEIGHT `9SC.SD_CONSOLE `SD.SD_CONSOLE `;SD_CONSOLE_SET_TIMEOUT `:SD_SELECT_CONSOLE_TIMEOUT `hSD_SCREEN_SAVER_CALLS_LIST `hSD_POST_HOT_CALLS_LIST* `fSD_IMMEDIATE_MAIL_DELIVERY `fSDSCREENPRINT_ASK_OUTPUT_NAME `fSDSCREENPRINT_OUTPUT_NAME `fSDCALENDAR_TITLE `fSDCALCULATOR_TITLE_ONE `fSDSCREENPRINT_TITLE `fMAIL_VIEW_LINE `fMAIL_INDICATOR_SIZE `FORCE_ON_CON_CHARACTERISTICS `{SD_EXIT_HOT_KEY `SD_ENTER_HOT_KEY `SD_GETCHAR_ONLY/ L  `fSD_NOTEPAD_TITLE `fSD_MAIN_MENU_TITLE `fCEO_MAIL_VIEW_LINE `fSD_REMOTE_INPUT_INDICATOR_LINE `fSD_REMOTE_INPUT_INDICATOR_SIZE `fSD_REMOTE_VIEW_INDICATOR_LINE `fSD_REMOTE_VIEW_INDICATOR_SIZE `f@LOGOFF_TIMEOUT `=SD_CONSOLE_INIT_DELIMITER_TABLE `grINPUT_CASE_CONVERSION `gOUTPKT `SD_MEM_DIR_NAME, `fMAX_SCROLL_BEFORE_FLUSH `RETURN_INPUT_STRING ` TIB_WNDFLG `5HANDLE_SPECIAL_TURBO_SETTING `gFLUSH_OUTPUT_PTR `(.UTSK `(SC.SD_SYSCALL `'8SD_?TUNLOCK `'!SD_?TLOCK `(SD.SYSCALL `fFINPUT_PORT `BVIRTUAL_CON_DELIMITER_TABLE `gAWLPP `xDUMMY_GATE_CALLA `fKEY_TRANSLATION_TABLE `7OSD_MEM_ALLOCATE_RING_7 SD_LINKED_WITH_ICX_FLAG `aIAOS.VS_TYPE `"TIB_VIEWS `TIB_WNDDSC `0TIBOFS `fSD_DEFAULT_KEYBD_LANG `fSD_CONSOLE_INTERRUPT_HANDLING `ASD_LOAD_CONFIG `fSD_SHCON_IPC_HANDLING `ACTUAL_CON_TIMEOUT `gAWBUF `gwICTRL= `:FSD_CLASSIFY_TIMEOUT_ERROR `SD_GET_IMAGE_BELOW_FLOAT_JSR `SD_WORK_DIR `COMPOSITE_UPD_COUNT `CON_TERMCAPS `4`SD_DECLARE_SIGNAL_HANDLER `4\SD_DECLARE_CON_INTERRUPT_HANDLER `2SD_?KWAIT_HANDLER `5SD_RESET_FLUSH_TIMER `3SD_GET_CONNAME_FROM_MODEM_MGR `=SD_CONSOLE_SET_VIRTUAL_CHAR4 `hSD_PRE_HOT_CALLS_LIST `hSD_PERIODIC_CALLS_LIST `a^SD_ACTUAL_DAD_PID `'CON_USERNAME `fSD_DEFAULT_ALTERNATE_CHAR_SET `fSD_DEFAULT_PRIMARY_CHAR_SET `gSD_HOT_KEY_UTID `fSD_SPECIAL_PROGRAMS_LIST `hSD_SHUTDOWN_CALLS_LIST `hSD_INIT_CALLS_LIST `g{DEF_CTRL `.SD_ICX_INTERRUPT3 `fLOGOFF_OK_AFTER_TIME `CON_PROG `TIB_ORMAR `TIB_OLMAR `TIB_RMAR `TIB_LMAR `_OBTAIN_INPUT_SIZE `TIBATR `07ASSIGN_SD_CON_NUM_USING_LIST `hCONLOG_OPEN_FLAG `eUD.SD_INTERFACE `*NONFNB_TBL `NONFN_TBL `f?ACCEPT_TIMEOUT_RESET `f>ACCEPT_TIMEOUT7 ` SD_MEM_ELEMENT_SIZE `aFUI.SD_INIT `eVUD.SD_INIT `aJSD_CON_DEVICE `2CHARSETS `1ATTRB `5IS_PROGRAM_SPECIAL? `0SD_TERMINATE `fSD_DEFAULT_7_OR_8_BIT_MODE `fSD_DEFAULT_SCROLL_RATE `fSD_DEFAULT_CURSOR_TYPE `gESD_INPUT_SEMAPHORE `.SD_ICX_TERMINATE5 `6tSD_MALLOC `SD.SD_INIT `lCON_TYPE_LIST `COMPOSITE_IMAGE `CON_MODELID `pSD_DISCARD_INPUT_CACHES `(?ZBOT- `?UDP000012 `.UKIL `eHSD_?IDGOTO_TARGET_TASKS `!DSD_INTF_?WRITE_DATASENS `gSD_SHCON_IPC_IGNORE_PIDS `fSD_CONFIG_FLAGS `f:OUTPATH_PTR9 `fSD_MEM_INITIAL_AREA `aVM_CHAN `fCON_CUT_BUFFER `aZCON_PROG_END_PTR `(SC.SD_URTB `(.KILL `gAWOFS- `j?UDP000010- `?UDP000000 `l?URTB `TIB_CLONE `5SDSetSecondaryProgramName ?SD_PATCH `dSD_DIVERT_INPUT_THROUGH_SPY `RETURN_INPUT_SIZE `3VIRTUAL_CON_CHARACTERISTICS `eISD_INPUT_IS_AVAILABLE_FROM_SPY `@SD_WAIT_FOR_HOT_KEY `SD_GATE_ARRAY `0SD_READ_CHAR_ONLY `>SD_MESSAGE_ONLY `SD_DISPLAY ``CON_HOT_KEY `TIB_UPD_COUNT `ACTUAL_CON_DELIMITER_TABLE `ACTUAL_CON_CHARACTERISTICS_SIZE `SD_MAIL_INBOX `KSDSCREENPRINT- `'C?UDP000007 `SD_TEMPLATE_MATCH `SD_FLUSH `TSD_DRAW_BOX `SD_CREATE_WINDOW_NO_BOX `CON_HOT_FROM `fSD_CONFIG_TURBO_LEVEL `SD_COMPILE_RDL `?UTSK `SD_SYSCALL_DISPATCH_TBL `(SD_RING_7_SYSCALL `'SD_INTERCEPT_SYSCALL `A?G.SYSCA `ez?KWAIT_MAILBOX `CON_VM `S*SD_INPUT_FIELD_TO_FULL `>SD_CONSOLE_GET_OUTPUT_DELIM_TBL `>SD_CONSOLE_SET_OUTPUT_DELIM_TBL< `2MAP_IN_VM_RECORD `2lMAP_IN_PID_VM_RECORD `gFLUSH_OUTPUT_BUF `6UPPERCASE_XLAT_TBL `'KSD_IS_NAME_CONSOLE? ` zSD_FIND_CONSOLE_CHANNEL_INFO `fHCONSOLE_CHAN_MAP `ACTUAL_CON_OUTPUT_DELIMITER_TBL `gzCTRL `2(MAP_IN_CON_VM_RECORD `>SD_CONSOLE_INIT_MODELID ` `(VSWITCH_TO_SCREEN_DEMON_STACK `fFLUSH_INTERVAL `fDOUTPUT_PORT `PID_FLAGS `eSD_CONNAME `SD_CLOSE_CONSOLE_LOG_FILE `9SD_RELEASE_RESOURCE `9zSD_ACQUIRE_RESOURCE `7SD_MEM_FREE `6SD_MEM_ALLOCATE `=bSD_CONSOLE_TO_VIRTUAL_STATE `>SD_CONSOLE_GET_DELIMITER_TABLE; l `i SD_PRE_PROC_CALLS_LIST `iSD_POST_INPUT_CALLS_LIST `iSD_PRE_INPUT_CALLS_LIST `bCONSOLE_FILE_TYPE `a]SD_DAD_PID `a\SD_CUR_PID `0UNLINK_PID_FROM_CONSOLE `9SD_CONSOLE_SET_DELIMITER_TABLE `SD_CONSOLE_?WRITE `SD_DYNAMIC_CONFIG_FILENAME `SD_HOT_LINKS_TABLE `SD_CONFIG_BASE `SD_MAIN_MENU- `5?UDP000004 `SD_DRAW_UNDERLINE `>vSD_SET_DELIMITER_TABLE `>`SD_GET_DELIMITER_TABLE `SD_SET_BOX_FILL_STYLE `oSD_SET_LINEDRAW_STYLE@ `>SD_CONSOLE_SET_VIRTUAL_DELIM_TBL ` SD_TURBO_PARTIAL `SD_TURBO_FULL `@SD_SET_LOGOFF_INTERVAL `SD_SEND_MAIL `JSD_READ_MAIL `zSD_INPUT_MAIL `SD_GET_CONTROL `OSD_CONTROL `SD_OUTPUT_STRING `haSD_MONITOR_STRING- `"?UDP000006 `SD_CLONE_WINDOW `)SD_TOP_WINDOW `{SD_SUSPEND_WINDOW `SD_REMOVE_WINDOW `SD_REDRAW `SD_PUT_WINDOW_VIEW `SD_NEW_WINDOW_VIEW `SD_NEW_WINDOW `bSD_INPUT_STRING `QSD_GET_WINDOW_VIEW `(SD_GET_NEXT_WINDOW_VIEWF `~SD_SHOW_SCROLLBACK_BUFFER `{SD_APPEND_TO_SCROLLBACK_BUFFER- `?UDP000011- `?UDP000001 `=SD_EXTENDED_READ_CHAR `(SD_RING_7_SYSCALL_ERROR `JSD_READ_CHAR `SD_PUT_WINDOW_DESCRIPTOR `SD_PROC_PR `SD_LOAD_TIB `oSD_GET_WINDOW_DESCRIPTOR- `?UDP000003 `SD_DIRECT_OUTPUT `SD_USER_ID `"SD_UNLOCK_USER_ID `KSD_TURBO_RESET `SD_SET_USER_ID `өSD_SET_CLI_INIT_CMD `SD_SET_AND_LOCK_USER_ID `;SD_SET_ACCEPT_TIMEOUT `eSD_SET_ACCEPT_CURSOR_OFFSET `SD_SCROLL_WINDOW_RIGHT `SD_SCROLL_WINDOW_LEFT `4SD_RETURN_INPUTB `:SD_RESTORE_WINDOW_FROM_CLONE `SD_SYS_ERROR_MESSAGE `8SD_SET_WINDOW_SIZE `5SD_SET_SECONDARY_PROGRAM_NAME `eSD_SET_ACCEPT_UPPERCASE `eSD_SET_ACCEPT_LOWERCASE `eSD_PUT_VALUE `SD_POP_UP_MENU `MSD_MESSAGE `;SD_MENU `MSD_GET_VALUE `SD_GET_IMAGE `1SD_GET_HOT_CALLED_FROM_NAMEE `(SD_RING_7_SYSCALL_OK `SD_OBTAIN_INPUT `ЇSD_NOTEPAD `SD_NEW_WINDOW_NO_INIT `<SD_MOVE_WINDOW_RIGHT `-SD_MOVE_WINDOW_LEFT `)SD_GET_USER_ID `SD_GET_IMAGE_BELOW_FLOAT `eSD_GET_ACCEPT_CURSOR_OFFSET `SD_DISCARD_TYPE_AHEAD `SD_CREATE_WINDOW_NO_INIT `XSD_COMMAND `{SD_CLI_CMD-`XSD_SHARED_DATA_PART `WSD_MOVE_WINDOW_UP  `SD_GET_POS `6 SD_GET_CONSOLE_STATUS `eSD_GET_ACCEPT_POS `SD_ENABLE_HOT_KEYS `SD_DISABLE_HOT_KEYS `SD_DIGITS_TO_BITS `SD_BITS_TO_DIGITS `6*SD_GET_CONSOLE_DEVICE_NAME `1SD_ERROR_MESSAGE `SD_ENABLE `SD_DRAW_VLINE `SD_DRAW_HLINE `zSD_DISABLE `CSD_CLI_INTERFACE `SD_SYSCALL_GATE `RSD_FLOAT_WINDOW `dSD_DISPLAY_INTO_STRING `SD_CREATE_WINDOW `SD_ACTIVE_WINDOW .C'Hz'Hz'Hz0PSD_SEND_MAIL.ST   p?BOMB p=SD_PO_BOX_CHAN ?G.IXIT 0?G.IXMT 0?G.BKPT piCTRL prSD_MEM_FREE_BP p?NTOP p~.KILL p7AWOFS puSET_FLD_DELIM_TBL- p?UDP000000 py?URTB p(?ZMAX p?NMAX 0?G.UTSKG- p&?UDP000001 pSD_PO_DIR p7AWATR p7AWPOS p7MAIL_VIEW_COLUMN pxSD_CONSOLE_SET_VIRTUAL_CHAR pxSD_CONSOLE_GET_VIRTUAL_CHAR puSD_ERROR_MESSAGE_JSR puSD_SYS_ERROR_MESSAGE_JSR puSD_MESSAGE_JSR puSD_GETCHAR p(?ZBOT p?SBOT p?NBOT p.UKIL p/SC.SD_MAIL_SUPPORT pSD.SD_MAIL_SUPPORT p?UKIL pGNULL_TBL prSD_TURBO_RESET puSD_INPUT_FIELD-piSD_UNSHARED_DATA_PART-p8SD_UNINITIALIZED_DATA_PART-pSD_SHARED_DATA_PART pJSD_SEND_MAIL_CMD pzCON_USERNAME pUD.SD_MAIL_SUPPORT p8UI.SD_MAIL_SUPPORT p<SD_READ_MAIL_ACTIVE pSD_UNLOCK_PO_FILE pSD_LOCK_PO_FILE p7SD_INPUT_MAIL_TITLE prSD_MENU prSD_SET_SECONDARY_PROGRAM_NAME prSD_MEM_ALLOCATE p)CFALT p&SFALT p7AWDSC pWNONPRT_TBL p7NONFN_TBL p7MAIL_INDICATOR 0?G.UKILL pgICTRL puSD_OUTPUT_STRING puSD_MONITOR_STRING_INTO_WINDOW puSD_MONITOR_STRING prSD_CREATE_FLOAT_WINDOW prSD_REMOVE_WINDOW prSD_NEW_WINDOW pSD_CLOSE_USERS_PO_BOX pjSD_WORK_DIR_PATH p7MAIL_VIEW_HEIGHT prSD_DRAW_BOX prSD_FLUSH p/FFALT p7SD_ALT_EXIT_KEY p7SD_IMMEDIATE_MAIL_DELIVERY p7MAIL_VIEW_LINE p7MAIL_INDICATOR_SIZE)pxEXTC_SD_SCREEN_SAVER_CALLS)pvEXTC_SD_PRE_PROC_CALLS)ptEXTC_SD_PERIODIC_CALLS p.UTSK ppSD.SYSCALL p,IFALT 0?G.SYSCA p?UTSK p1SD_CHECK_FOR_NEW_MAIL pSD_OPEN_MAIL pcSD_INPUT_MAIL p7PERIODIC_INTERVAL p7MAIL_VIEW_WIDTH prSD_READ_MAIL prSD_TURBO_FULL pxSD_CONSOLE_SET_VIRTUAL_DELIM_TBL pxSD_CONSOLE_GET_VIRTUAL_DELIM_TBL puSD_INPUT_FIELD_TO_FULL pSD_SEND_MAIL p{.BOMB 0?G.UTSKB phICTRL2 ( .J 'HK'HS'HS8U& SD_LOGPRT.PR pp"0&0&0&p< @pp&ppbp,/))x)4)5)6Y) d@J\bhntz؀؎ؚؔؠئجزظؾ$*06<N^n~َٞٮپ&8>JT^hr|چڐښڤڰڼ "(.4:@FLRX^djpvۂێۚۦ۬۲۸۾*6BNZfrx~܄܊ܐܖܜܢܨܮܴܺ LOCTALDECIMALHEX  N H <202><203><204><205><206><207><211><212><213><214><215><216><217><220><222><223><224><225><226><233><234><235><236><237><257><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><357><377>Switch unknown or not unique: Duplicate switch: :SCREEN_DEMON_3.60:CONLOG:Usage: XEQ SD_LOGPRT[{/OCTAL/DECIMAL/HEX}] logfilename [outputfilename] rr@OUTPUTad [rec ] LogHdr short. Expected , read ---Sync--- Display ( chars): <> Field Input: at line , column , end offset chars + delim = <> input: <> GetChar: <> Unknown log record type: Log Records Processed Sync Display Input ReadChar [rec ] LogData read error . (decimal) [rec ] LogData short. Expected bytes, read bytes [rec ] LogData read error . (decimal) [rec ] LogData short. Expected bytes, read bytes [rec ] Hdr/Trailer Len mismatch. Hdr= bytes, Trl= bytes )GY9 )09#yYѩ8ȩYiy  8W9 09 #Wy Y҉Yiyy )8FX Y  F8)8)0 9 X)  y   )  ։ƉYE y Yi i)))Ȯ ))9 I9 Y  Y )))Ǯ ))9Y9Ej )))Ǯ nxI) x )/,8 x Y) xY )/ ) ) 8 )/, 8=x Y) XY yIIII"Iy) љY I,ԹI. ,y0 .yyi yIIII!Iy ,yyi 0Yi 0Y)  I ιx) YY90yyyi90Y9)0)C kYy ~yIIII!Iy)6 I ιx) YY90yyyi90Y9)0)C )Yy ~axI9 )=8 Y) x )/,8 x Y) x  6XI9 )/ ~ ) љ8xIyIIII!Iy) xI))Y   yIIII I yi yyi yIIII Iy)Y9 yIIII I)8Yy )I )/89xI IyIIII Y yIIII Iy)yi  )))D \y')j)) )y }) }H) y=)8)) 0xi yy }! })  }N9 ) ) ~x{9):) 8i) y | ~) ω8 ~))Y) y .ƙ   y {)z)ry)d) M {)j y< y {)P y+) ~f Ѯ)Ҏ ~ y {)؅y)) ) ~)ގ ~)֎ ~ Y 9  )9 yyyi  Ĉ ) x) 99 ȩ) ~  ) 8 .ˮ)D ~k {y {1)8y)() 9 Y  ]¡I ˆ ) ~9d9)8 ))yy z)ƅy))dO9dY) xP) 9) ~Y9  Y y9dyyi    ) 9) } ~#) } Ӆy z)y)))  y zq) y y z_) y) } y zH)y))  ) ~89Y ))yy z)ry)j yv) xIIy yy`) 9) } )) N9 YP  "I )y x~9d )9)8xLK ))yy y)y))d9dY) .xI'Iy y)d9dYP) 9) |Y9  Y y9dyyi    _ u) 9) |j }#Į)Ž |`))  ) ~89Y ))yy y)py)h y^) xIIy yyH) 9) | |)6 |Uy x) y) ') {By x)y)) ) {-y x)y)) ) {y x)y)̾) ) {y xm)…y)﮾) ) {)臘 x)T YYIѬוy8)` {hy x.)Py)D)  iy x)> yz) {?)$ {4y w)y)) Xry w) yF y w) y5) z)QyX8) z6y w)y))  iy w) y) zƙ8)~ zy wt)ny)b)  wa)d y y wP)P y) zu~)* zgy w-)y)) cy w) yyKy w) yg+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 )))Bxi) ) I9 Y9  I9Y99 )))îxi)) I9 Y9  I9Y99 )))®8)/8Y xi)) I9 Y) Y9 Y999I  )))Ү{x 8 򁉉89 )))Ү] i) I9Y )))8i))9  X yyYIi xY9ɂ򇉧))  Ii 9 Y4x8DOx00@0y0i0I ))ȹyIlj9  FATAL RUNTIME ERROR: TERMINATION THRU ?BOMB 0 .W'Ha'Hb'Hb0KSHORT_RVID_3.60.01.OPTPAT 0;--------------------------------------------------------------------- ; SHORT_RVID_3.60.01.OPTPAT 13-JUL-95 ; ;This patch forces Screen Demon to use single-character sequences ; for Reverse Video On and Off commands to the terminal, instead ; of the standard two-character sequences. Note that some terminal ; emulators do not support these shorter versions. ; Applies to programs linked with Screen Demon rev 3.60 SD_DISPLAY+4370 36 202 ^+2 151131 100470 SD_DISPLAY+4472 36 226 ^+2 151131 100470 ;end of patch .@'GV'Ht'Ht-]SD_ICDEB_1.71_INTF.OB  SD_ICDEB17_INTF%C!/ SD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTHWl | # &3SD_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_JSRICTRLCTRLCON_FLAGSTIBTIB_UPD_COUNTEXTC_SD_INIT_CALLSB8M_ qSD_VIEW_TARGET_SCREENSD.SD_ICDEB17_INTFUI.SD_ICDEB17_INTFSC.SD_ICDEB17_INTF )Y  Y y)xb8֐ـgyb8kiɇ)) @y 9x)yYI<؉븫@yƉYSD_ICX.PR    * 0 8; > d i q v  ICX.PRy@y)♀y@y)♣8щƉ yy)♀) 8 ))<yYIY)X SD_VIEW_TARGET_SCREEN 9$y9)yYx) o  o "(+ 0 9=I N S Z_ f i os   .@'M'M'MfSD_ICRUN_INTF.OB  SD_ICRUN_INTF"C$!/ SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART+ 'A] er  %6EJ PY g pz  !cob_callcob_cancelaccept_envreset_scrngetfld_scrngetkey_scrnget_info_scrninit_user_bltn_fcnssystem_call_in_progressSD_ABORT_?READ_IN_PROGRESSHANDLE_SPECIAL_TURBO_SETTINGSD_FLUSHSD_NEW_WINDOWSD_REMOVE_WINDOW_NO_FLUSHSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSET_FLD_DELIM_TBLSD_RETURN_INPUTICTRLICTRL2PID_FLAGS?KWAIT_MAILBOXNONFN_TBLNONFNB_TBLCON_PROGCON_PROG_END_PTRACTUAL_CON_DELIMITER_TABLERETURN_INPUT_SIZEACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETINPUT_ERROR_WINDOWAWDSCAWBUFAWPOSAWOFSAWCPLNAMTBEXTC_SD_INIT_CALLSSD.SYSCALLXo    :4JIZ^esDbllZd1DIY iSD_LINKED_WITH_ICX_FLAGSD_ICRUN_OP_CODE_DISPATCHSD_ICRUN_ACTIVE_DISPATCH_TBLSD_ICRUN_STD_DISPATCH_TBLSD_ICRUN_OP.STPSD_ICRUN_OP.CHNSD_ICRUN_OP.XITSD_ICRUN_OP.CLLSD_ICRUN_INITSD_CALL_ICOBOL_SUBPROGRAMSD_OP.STP_INTERCEPTORSD_OP.CHN_INTERCEPTORSD_OP.XIT_INTERCEPTORSD_OP.CLL_INTERCEPTORSD_INIT_USER_BLTN_FCNSSD_ICRUN_RESET_SCRNSD_ICRUN_RESET_SCRN_CONTDSD_ICX_INTERRUPTSD_ICX_TERMINATESD_ICRUN_GETFLD_SCRNSD_ICRUN_GETFLD_SCRN_CONTDSD_ICRUN_GETKEY_SCRNSD_ICRUN_GETKEY_SCRN_CONTDSD_ICX_UPDATE_..KTO..RIPSD.SD_ICRUN_INTFUD.SD_ICRUN_INTFSC.SD_ICRUN_INTF . o?3     ))™&)  Y )yiI y)y    YI))щx)Y)ѩщ8  )  ) I)!))Y9+)*Y9,))' y)+Y9-) )( y),Y9.))% )+X-YȃY-9/))& ),X.YȃY.90) y9fy) X Y9Yxyyy)9Y9i)0)/) iYii y) yމIމIy) ii9f))@x㉁i91)b)f891)b)f)L8)M8i8)d)d91)b)fx)d)di)0 YȃYY/ȫYـ  ))y yiY99Y &)yyy  )X T ))y y 8&)Nـ 8&)Pـ &)yـ&)xـy ـ))F9y)IY9)y) yYY YyY),YyyY)I艁x),9YyyY9YyYx)"  *+ ! % J M P T*W+bg r)w          ' C*J T \f(w   10./$            # & 6 ; @C HK PS X[^ cfi ntw { $%''''2  xy  ix y)  ) y) Y)i8 8)ˋ 􍉩)i yx 􍉭y   Yy y yIyЉY))) )YS)$2im-{, !#4 " "pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~jppppppppppppppppppppppppppppppppppppppppppppppppppppp   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfh .@'G]'Ht'Ht SD_WP_SHELL.OB  SD_WP_SHELL4C& !9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTI   #BYq   4Jap SD_GETCHAR_ONLYSD_FLUSHSD_NEW_WINDOWSD_REMOVE_WINDOWSD_MONITOR_STRINGSD_OUTPUT_STRINGSD_PROC_PRSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_TIMEOUTSD_EXECUTE_LIST_OF_CALLSSD_SET_SECONDARY_PROGRAM_NAMESD_RING_7_SYSCALLSD_MEM_ALLOCATE_RING_7SD_CLOSE_CONSOLE_LOG_FILEST_SHLCL_SHLICTRLCTRLPID_FLAGSNULL_TBLNONPRT_TBLNONFN_TBLSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_WP_SHELL_CLI_LETTERSD_DEFAULT_CLI_INIT_CMDSD_CLI_PATHNAMEEXTC_SD_INIT_CALLS..RIPSD.SYSCALL ~tt  SD_WP_SHELLSD_WP_SHELL_PGMSD_CLI_INTERFACESD_WP_SHELL_CLISD_SET_CLI_INIT_CMDSDSetCLIInitCmdSD.SD_WP_SHELLUD.SD_WP_SHELLUI.SD_WP_SHELLSC.SD_WP_SHELL ((       ))Yx Yp))C9Y9 )9IY99yǀ8)89~9)IxYYY=  Iyi)™i9)8YY==) Y9))R) I9))B}x)8)x )8YIYAZxazYy9)) ) I  yi) ) Y) ʙY) ) )/SHELLSD_WP_SHELLSD_WP_SHELL_PGMSD_CLI_INTERFACEy)ǂbـYIiԂiiy)b8ـ)))9IYR8y ~9)`9$)I)Y)Y)x),9YIY9Y9i)$) ) ):UTIL:SD_CLI_ACCESS.ACL    )) y)IiY9y0iy) Iyyy)yyȉyI)ЉɂiЉ8y0iy) II)8 II)  )byxЉɂy)9)9 )9) 9 x  IȉiЉx   4*D*L*S [` gm x*   #)  )  $$T r {*% '" !&% *!3 B S ]k z        .@'Fow'Hu'HumSDCALCULATOR.CO  ******************************************************************************* * $Id: sdcalculator.co,v 1.4 1995/07/11 20:51:10 mark Exp mark $ * * $Log: sdcalculator.co,v $ * Revision 1.4 1995/07/11 20:51:10 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 * ******************************************************************************* IDENTIFICATION DIVISION. PROGRAM-ID. SDCALCULATOR. DATE-WRITTEN. 03/19/88. * AUTHOR MARK A. PAINTER ************************************************************************** *** Screen Demon 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 *** *** *** ************************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. DG. OBJECT-COMPUTER. DG. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROGRAM-ID-NAME PIC X(14) VALUE "SDCALCULATOR ". 01 ORIGINAL-TURBO-SETTING PIC 9(04) COMP VALUE ZERO. 01 CALC-BOX-LINE PIC 9(04) COMP VALUE 16. 01 CALC-BOX-COLUMN PIC 9(04) COMP VALUE 32. 01 CALC-BOX-HEIGHT PIC 9(04) COMP VALUE 8. 01 CALC-BOX-WIDTH PIC 9(04) COMP VALUE 45. 01 NBR-BOX-LINE PIC 9(04) COMP VALUE 17. 01 NBR-BOX-COLUMN PIC 9(04) COMP VALUE 51. 01 NBR-BOX-HEIGHT PIC 9(04) COMP VALUE 1. 01 NBR-BOX-WIDTH PIC 9(04) COMP VALUE 23. 01 TAPE-BOX-LINE PIC 9(04) COMP VALUE 3. 01 TAPE-BOX-COLUMN PIC 9(04) COMP VALUE 50. 01 TAPE-BOX-HEIGHT PIC 9(04) COMP VALUE 13. 01 TAPE-BOX-WIDTH PIC 9(04) COMP VALUE 25. 01 MAIN-HELP-BOX-LINE PIC 9(04) COMP VALUE 2. 01 MAIN-HELP-BOX-COLUMN PIC 9(04) COMP VALUE 1. 01 MAIN-HELP-BOX-HEIGHT PIC 9(04) COMP VALUE 13. 01 MAIN-HELP-BOX-WIDTH PIC 9(04) COMP VALUE 80. 01 MAIN-HELP-BOX-LABEL PIC X(30) VALUE " Calculator Help|". 01 ADDL-HELP-BOX-LINE PIC 9(04) COMP VALUE 4. 01 ADDL-HELP-BOX-COLUMN PIC 9(04) COMP VALUE 5. 01 ADDL-HELP-BOX-HEIGHT PIC 9(04) COMP VALUE 20. 01 ADDL-HELP-BOX-WIDTH PIC 9(04) COMP VALUE 70. 01 RETURN-NUMBER PIC ------------9.9999 VALUE ZERO. 01 RETURN-NUMBER-AREA REDEFINES RETURN-NUMBER. 05 RETURN-CHAR-1 PIC X(01). 05 RETURN-CHARS-2-LAST PIC X(17). 01 RETURN-SIZE PIC 9(04) COMP VALUE ZERO. 01 MAX-GET-VALUE-LEN PIC 9(04) COMP VALUE ZERO. 01 CALC-TITLE-1-ACTUAL-LEN PIC S9(04) COMP VALUE ZERO. 01 CALC-TITLE-2-ACTUAL-LEN PIC S9(04) COMP VALUE ZERO. 01 ALTERNATE-EXIT-KEY-VALUE PIC S9(04) COMP VALUE -1. 01 ALTERNATE-EXIT-KEY-REDEF REDEFINES ALTERNATE-EXIT-KEY-VALUE. 05 FILLER PIC X. 05 ALTERNATE-EXIT-KEY PIC X. 01 ALT-EXIT-KEY-ACTUAL-LEN PIC S9(04) COMP VALUE ZERO. 01 CALC-VIEW-ADDR PIC S9(9) COMP VALUE ZERO. 01 CALC-VIEW-DESCRIPTOR. COPY "SDVIEW.DEF". 01 MOVE-INCREMENT PIC 9(04) COMP VALUE 1. *********** end of word-aligned fields ****************** 01 IN-USE-FLAG PIC X(01) VALUE "N". 88 CALCULATOR-IS-ALREADY-IN-USE VALUE IS "Y". 01 ORIGINAL-SECONDARY-PROGRAM PIC X(32) VALUE SPACES. 01 READ-CHAR PIC X(01) VALUE SPACE. 01 INPUT-CHAR-VALUE PIC 9(04) COMP VALUE ZERO. 01 INPUT-CHAR-REDEF REDEFINES INPUT-CHAR-VALUE. 05 FILLER PIC X(01). 05 INPUT-CHAR PIC X(01). 05 INPUT-CHAR-DIGIT REDEFINES INPUT-CHAR PIC 9(01). 01 INPUT-CHAR-COUNT PIC 9(02) VALUE ZERO. 01 FUNCTION-CODE PIC X(01) VALUE SPACE. 88 RETURN-RESULT-FUNCTION VALUE IS "R". 88 EXIT-FUNCTION VALUE IS "E". 88 EQUALS-FUNCTION VALUE IS "=". 88 ADD-FUNCTION VALUE IS "+". 88 SUBTRACT-FUNCTION VALUE IS "-". 88 MULTIPLY-FUNCTION VALUE IS "x". 88 DIVIDE-FUNCTION VALUE IS "/". 88 MATH-FUNCTION VALUES ARE "+", "-", "x", "/". 01 RETURN-RESULT-FUN-CODE PIC X(01) VALUE "R". 01 EXIT-FUN-CODE PIC X(01) VALUE "E". 01 ADD-FUN-CODE PIC X(01) VALUE "+". 01 SUBTRACT-FUN-CODE PIC X(01) VALUE "-". 01 MULTIPLY-FUN-CODE PIC X(01) VALUE "x". 01 DIVIDE-FUN-CODE PIC X(01) VALUE "/". 01 EQUALS-FUN-CODE PIC X(01) VALUE "=". 01 GRAND-TOTAL-FUN-CODE PIC X(01) VALUE "*". 01 PENDING-FUNCTION-CODE PIC X(01) VALUE SPACE. 88 PENDING-EQUALS-FUNCTION VALUE IS "=". 88 PENDING-ADD-FUNCTION VALUE IS "+". 88 PENDING-SUBTRACT-FUNCTION VALUE IS "-". 88 PENDING-MULTIPLY-FUNCTION VALUE IS "x". 88 PENDING-DIVIDE-FUNCTION VALUE IS "/". 88 PENDING-MATH-FUNCTION VALUES ARE "+", "-", "x", "/". ** The next two literal fields must match the PIC of DISPLAY-NUMBER ** 01 MAX-WHOLE-PLACES PIC 99 VALUE 12. 01 MAX-DECIMAL-PLACES PIC 9 VALUE 4. 01 NEXT-DECIMAL-PLACE PIC 9 VALUE ZERO. 01 DISPLAY-NUMBER PIC S9(12)V9(04) SIGN IS LEADING SEPARATE VALUE ZERO. 01 DISPLAY-NUMBER-X REDEFINES DISPLAY-NUMBER. 05 DISPLAY-SIGN PIC X(01). 05 DISPLAY-NUMBER-ONLY PIC 9(12)V9(04). 05 DISPLAY-NUMBER-ONLY-X REDEFINES DISPLAY-NUMBER-ONLY. 10 DISPLAY-WHOLE. 15 DISPLAY-WHOLE-TOP-DIGIT PIC 9(01). 15 DISPLAY-WHOLE-ALL-BUT-TOP. 20 FILLER PIC 9(10). 20 DISPLAY-WHOLE-1ST-DIGIT PIC 9(01). 10 DISPLAY-FRACTION. 15 DISPLAY-FRACTION-DIGIT OCCURS 4 TIMES PIC 9(01). 01 ACCUMULATOR PIC S9(12)V9999 VALUE ZERO. 01 LAST-ENTERED-NUMBER PIC S9(12)V9999 VALUE ZERO. 01 K-NUMBER PIC S9(12)V9999 VALUE ZERO. 01 K-FUNCTION-CODE PIC X(01) VALUE SPACE. 01 TEMP-STRING PIC X(20) VALUE SPACES. 01 TEMP-NUMBER PIC S9(12)V9999 VALUE ZERO. 01 TEMP-COUNT PIC 9(02) VALUE ZERO. 01 TAPE-LINES VALUE SPACES. 05 TAPE-LINE OCCURS 12 TIMES PIC X(20). 01 TAPE-LINES-REDEF REDEFINES TAPE-LINES. 05 TAPE-LINE-1 PIC X(20). 05 TAPE-LINES-2-LAST. 10 FILLER PIC X(200). 10 LAST-TAPE-LINE. 15 LAST-TAPE-NUMBER PIC ------------9.9999. 15 FILLER PIC X(01). 15 LAST-TAPE-FUNCTION PIC X(01). 01 MEMORIES VALUE ZEROES.   05 MEMORY-NUMBER OCCURS 10 TIMES PIC S9(12)V9999. 01 DELETE-KEY-VALUE PIC 9(04) COMP VALUE 127. 01 DELETE-KEY-REDEF REDEFINES DELETE-KEY-VALUE. 05 FILLER PIC X(01). 05 DELETE-KEY PIC X(01). 01 C1-KEY-VALUE PIC 9(04) COMP VALUE 220. 01 C1-KEY-REDEF REDEFINES C1-KEY-VALUE. 05 FILLER PIC X(01). 05 C1-KEY PIC X(01). 01 C2-KEY-VALUE PIC 9(04) COMP VALUE 221. 01 C2-KEY-REDEF REDEFINES C2-KEY-VALUE. 05 FILLER PIC X(01). 05 C2-KEY PIC X(01). 01 C3-KEY-VALUE PIC 9(04) COMP VALUE 222. 01 C3-KEY-REDEF REDEFINES C3-KEY-VALUE. 05 FILLER PIC X(01). 05 C3-KEY PIC X(01). 01 C4-KEY-VALUE PIC 9(04) COMP VALUE 223. 01 C4-KEY-REDEF REDEFINES C4-KEY-VALUE. 05 FILLER PIC X(01). 05 C4-KEY PIC X(01). 01 SHIFT-C1-KEY-VALUE PIC 9(04) COMP VALUE 216. 01 SHIFT-C1-KEY-REDEF REDEFINES SHIFT-C1-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-C1-KEY PIC X(01). 01 SHIFT-C3-KEY-VALUE PIC 9(04) COMP VALUE 218. 01 SHIFT-C3-KEY-REDEF REDEFINES SHIFT-C3-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-C3-KEY PIC X(01). 01 SHIFT-UP-ARROW-KEY-VALUE PIC 9(04) COMP VALUE 151. 01 SHIFT-UP-ARROW-KEY-REDEF REDEFINES SHIFT-UP-ARROW-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-UP-ARROW-KEY PIC X(01). 01 SHIFT-DOWN-ARROW-KEY-VALUE PIC 9(04) COMP VALUE 154. 01 SHIFT-DOWN-ARROW-KEY-REDEF REDEFINES SHIFT-DOWN-ARROW-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-DOWN-ARROW-KEY PIC X(01). 01 SHIFT-RIGHT-ARROW-KEY-VALUE PIC 9(04) COMP VALUE 152. 01 SHIFT-RIGHT-ARROW-KEY-REDEF REDEFINES SHIFT-RIGHT-ARROW-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-RIGHT-ARROW-KEY PIC X(01). 01 SHIFT-LEFT-ARROW-KEY-VALUE PIC 9(04) COMP VALUE 153. 01 SHIFT-LEFT-ARROW-KEY-REDEF REDEFINES SHIFT-LEFT-ARROW-KEY-VALUE. 05 FILLER PIC X(01). 05 SHIFT-LEFT-ARROW-KEY PIC X(01). 01 F8-KEY-VALUE PIC 9(04) COMP VALUE 248. 01 F8-KEY-REDEF REDEFINES F8-KEY-VALUE. 05 FILLER PIC X(01). 05 F8-KEY PIC X(01). 01 F10-KEY-VALUE PIC 9(04) COMP VALUE 250. 01 F10-KEY-REDEF REDEFINES F10-KEY-VALUE. 05 FILLER PIC X(01). 05 F10-KEY PIC X(01). 01 NEW-LINE. 05 FILLER PIC 9(02) COMP VALUE 10. 01 ESCAPE-KEY. 05 FILLER PIC 9(02) COMP VALUE 27. 01 CR-KEY. 05 FILLER PIC 9(02) COMP VALUE 13. 01 ERASE-EOL-KEY. 05 FILLER PIC 9(02) COMP VALUE 11. 01 TAB-KEY. 05 FILLER PIC 9(02) COMP VALUE 9. 01 UP-ARROW-KEY. 05 FILLER PIC 9(02) COMP VALUE 23. 01 DOWN-ARROW-KEY. 05 FILLER PIC 9(02) COMP VALUE 26. 01 RIGHT-ARROW-KEY. 05 FILLER PIC 9(02) COMP VALUE 24. 01 LEFT-ARROW-KEY. 05 FILLER PIC 9(02) COMP VALUE 25. 01 HOME-KEY. 05 FILLER PIC 9(02) COMP VALUE 8. 01 UNDERLINE-ON. 05 FILLER PIC 9(02) COMP VALUE 20. 01 UNDERLINE-OFF. 05 FILLER PIC 9(02) COMP VALUE 21. *** These two title lines will be initialized at startup with values * specified in the SD_CONFIG file. 01 CALCULATOR-TITLE-LINE-1. 05 CALC-TITLE-1-CHAR OCCURS 16 TIMES PIC X. 01 CALCULATOR-TITLE-LINE-2. 05 CALC-TITLE-2-CHAR OCCURS 16 TIMES PIC X. ** This value of the following field must be the length of each * of the above title lines (both must be the same length). 01 CALC-TITLE-LINE-LEN PIC 9(02) VALUE 16. ** Item names used to access the CONFIG values for the above two title lines: 01 CALCULATOR-TITLE-1-NAME PIC X(23) VALUE "SDCALCULATOR_TITLE_ONE ". 01 CALCULATOR-TITLE-2-NAME PIC X(23) VALUE "SDCALCULATOR_TITLE_TWO ". *** Item name used to access the CONFIG value for ALTERNATE-EXIT-KEY, * declared in the word-aligned section above. 01 SD-ALT-EXIT-KEY-NAME PIC X(16) VALUE "SD_ALT_EXIT_KEY ". *** Terminal sequences to properly display the keypad layout *** 01 LIT-ESC. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "ESC". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-TAB. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "TAB". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-DEL. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "DEL". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-CR. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "CR ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-UNUSED. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-CLR. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "Clr". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-MEM. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "Mem". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-UP-ARROW. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " ^ ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-MUL. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " x ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE @  21. 01 LIT-LEFT-ARROW. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "< ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-PLUS-MINUS. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "+|-". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-RIGHT-ARROW. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " >". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-FRM. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "FrM". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-DOWN-ARROW. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " v ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-DIV. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE " / ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-1. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "1". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-2. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "2". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-3. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "3". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-4. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "4". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-5. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "5". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-6. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "6". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-7. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "7". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-8. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "8". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-9. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE "9". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-0. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(03) VALUE "0 ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-MINUS. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(02) VALUE "- ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-EQUALS. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(02) VALUE "= ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-PLUS. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(02) VALUE "+ ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-DOT. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(01) VALUE ".". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-PLUS-EXT. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(02) VALUE " ". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 01 LIT-M. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(01) VALUE "M". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-NOT-M. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(01) VALUE " ". 05 FI ` LLER PIC 9(02) COMP VALUE 21. 01 LIT-HELP. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(06) VALUE "Press ". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC X(05) VALUE "SPACE". 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 05 FILLER PIC 9(02) COMP VALUE 28. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(09) VALUE " for Help". 05 FILLER PIC 9(02) COMP VALUE 21. 01 LIT-SPACE. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(05) VALUE "SPACE". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 01 LIT-CLEAR-FUNCTIONS. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(15) VALUE "Clear Functions". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 01 LIT-ENTERING-DATA. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(13) VALUE "Entering Data". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 01 LIT-MEMORY-FUNCTIONS. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(16) VALUE "Memory Functions". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 01 LIT-SHIFT. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "D". 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(05) VALUE "shift". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 05 FILLER PIC 9(02) COMP VALUE 30. 05 FILLER PIC X(01) VALUE "E". 01 LIT-MOVING-THE-CALCULATOR. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(21) VALUE "Moving the Calculator". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 01 LIT-MATH-FUNCTIONS. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(14) VALUE "Math Functions". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. 01 LIT-LEAVING-THE-CALCULATOR. 05 FILLER PIC 9(02) COMP VALUE 29. 05 FILLER PIC 9(02) COMP VALUE 20. 05 FILLER PIC X(22) VALUE "Leaving the Calculator". 05 FILLER PIC 9(02) COMP VALUE 21. 05 FILLER PIC 9(02) COMP VALUE 28. SCREEN SECTION. 01 LITERALS-SCREEN. 05 LINE 16 COLUMN 34 PIC X(16) USING CALCULATOR-TITLE-LINE-1. 05 LINE 17 COLUMN 34 PIC X(16) USING CALCULATOR-TITLE-LINE-2. 05 LINE 19 COLUMN 34 PIC X(09) USING LIT-ESC. 05 LINE 19 COLUMN 38 "Exit". 05 LINE 20 COLUMN 34 PIC X(09) USING LIT-TAB. 05 LINE 20 COLUMN 38 "Tape Clear". 05 LINE 21 COLUMN 34 PIC X(09) USING LIT-DEL. 05 LINE 21 COLUMN 38 "Delete Digit". 05 LINE 22 COLUMN 34 PIC X(09) USING LIT-CR. 05 LINE 22 COLUMN 38 "Return Result". 05 LINE 19 COLUMN 53 PIC X(09) FROM LIT-UNUSED. 05 LINE 19 COLUMN 57 PIC X(09) FROM LIT-UNUSED. 05 LINE 19 COLUMN 61 PIC X(09) USING LIT-CLR. 05 LINE 20 COLUMN 53 PIC X(09) USING LIT-MEM. 05 LINE 20 COLUMN 57 PIC X(09) USING LIT-UP-ARROW. 05 LINE 20 COLUMN 61 PIC X(09) USING LIT-MUL. 05 LINE 21 COLUMN 53 PIC X(09) USING LIT-LEFT-ARROW. 05 LINE 21 COLUMN 57 PIC X(09) USING LIT-PLUS-MINUS. 05 LINE 21 COLUMN 61 PIC X(09) USING LIT-RIGHT-ARROW. 05 LINE 22 COLUMN 53 PIC X(09) USING LIT-FRM. 05 LINE 22 COLUMN 57 PIC X(09) USING LIT-DOWN-ARROW. 05 LINE 22 COLUMN 61 PIC X(09) USING LIT-DIV. 05 LINE 19 COLUMN 66 PIC X(07) USING LIT-7. 05 LINE 19 COLUMN 68 PIC X(07) USING LIT-8. 05 LINE 19 COLUMN 70 PIC X(07) USING LIT-9. 05 LINE 19 COLUMN 72 PIC X(08) USING LIT-MINUS. 05 LINE 20 COLUMN 66 PIC X(07) USING LIT-4. 05 LINE 20 COLUMN 68 PIC X(07) USING LIT-5. 05 LINE 20 COLUMN 70 PIC X(07) USING LIT-6. 05 LINE 20 COLUMN 72 PIC X(08) USING LIT-EQUALS. 05 LINE 21 COLUMN 66 PIC X(07) USING LIT-1. 05 LINE 21 COLUMN 68 PIC X(07) USING LIT-2. 05 LINE 21 COLUMN 70 PIC X(07) USING LIT-3. 05 LINE 21 COLUMN 72 PIC X(06) USING LIT-PLUS-EXT. 05 LINE 22 COLUMN 66 PIC X(09) USING LIT-0. 05 LINE 22 COLUMN 70 PIC X(07) USING LIT-DOT. 05 LINE 22 COLUMN 72 PIC X(08) USING LIT-PLUS. 05 LINE 23 COLUMN 53 PIC X(30) FROM LIT-HELP. 01 NUMBER-SCREEN. 05 LINE 17 COLUMN 53 PIC X USING UNDERLINE-ON. 05 LINE 17 COLUMN 53 PIC ------------9.9999 USING DISPLAY-NUMBER. 05 PIC X USING UNDERLINE-OFF. 01 MEMORY-INDICATOR. 05 LINE 17 COLUMN 52 PIC X(03) USING LIT-M. 05 LINE 17 COLUMN 70. 01 MEMORY-INDICATOR-CLEAR. 05 LINE 17 COLUMN 52 PIC X(03) USING LIT-NOT-M. 05 LINE 17 COLUMN 70. 01 TAPE-SCREEN. 05 LINE 03 COLUMN 53 PIC X(20) FROM TAPE-LINE (1). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (2). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (3). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (4). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (5). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (6). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (7). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (8). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (9). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (10). 05 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (11). 05 LAST-TAPE-LINE-SCREEN. 10 LINE PLUS 1 COLUMN 53 PIC X(20) FROM TAPE-LINE (12). 01 MAIN-HELP-SCREEN. 05 LINE 4 COLUMN 4 "The Calculator is controlled from the". 05 " numeric and cursor keypads. These". 05 LINE PLUS 1 COLUMN 4 "match the key layout shown on the". 05 " Calculator, where each key is labeled". 05 LINE PLUS 1 COLUMN 4 "with its function. Other keys and their". 05 " functions are listed to the left.". 05 LINE PLUS 1 COLUMN 4 "To perform a function, press the indicated". 05 " key or type the first letter of". 05 LINE PLUS 1 COLUMN 4 "the function name. The Calculator operates". 05 " like an ordinary hand-held". 05 LINE PLUS 1 COLUMN 4 "calculator, which is somewhat different from". 05 " a desk-type calculator.". 05 LINE PLUS 1 COLUMN 4 "See the additional help for the math". 05 " functions (+ - x / =) for details.". 05 LINE PLUS 2 COLUMN 4 "For additional information about a particular". 05 " key, press that key now.". 05 LINE PLUS 1 COLUMN 4 "Otherwise, press ". 05 PIC X(13)  USING LIT-SPACE. 05 COLUMN 27 "to return to the Calculator...". 01 CLEAR-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(19) USING LIT-CLEAR-FUNCTIONS. 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-CLR. 05 COLUMN 18 "When pressed once, this key clears the calculator". 05 LINE PLUS 1 COLUMN 18 "display. If pressed a second time, the automatic". 05 LINE PLUS 1 COLUMN 18 "constant is also cleared, which prepares the". 05 LINE PLUS 1 COLUMN 18 "calculator for a new calculation.". 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-DEL. 05 COLUMN 18 "Pressing this key deletes the last entered digit". 05 LINE PLUS 1 COLUMN 18 "or decimal point from the display.". 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-TAB. 05 COLUMN 18 "This key clears all results from the tape display.". 05 LINE PLUS 2 COLUMN 8 "None of these functions affect Memory. Memories can be". 05 LINE PLUS 1 COLUMN 8 "can be cleared by storing zero into them.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". 01 ENTERING-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(17) USING LIT-ENTERING-DATA. 05 LINE PLUS 2 COLUMN 12 PIC X(07) USING LIT-7. 05 COLUMN 14 PIC X(07) USING LIT-8. 05 COLUMN 16 PIC X(07) USING LIT-9. 05 COLUMN 20 "Use the numeric keys to enter the digits of". 05 LINE PLUS 1 COLUMN 12 PIC X(07) USING LIT-4. 05 COLUMN 14 PIC X(07) USING LIT-5. 05 COLUMN 16 PIC X(07) USING LIT-6. 05 COLUMN 20 "numbers to be used in calculations. Excess digits". 05 LINE PLUS 1 COLUMN 12 PIC X(07) USING LIT-1. 05 COLUMN 14 PIC X(07) USING LIT-2. 05 COLUMN 16 PIC X(07) USING LIT-3. 05 COLUMN 20 "will be ignored. If the period (.) key is pressed,". 05 LINE PLUS 1 COLUMN 12 PIC X(09) USING LIT-0. 05 COLUMN 16 PIC X(07) USING LIT-DOT. 05 COLUMN 20 "subsequently entered digits will be placed to the". 05 LINE PLUS 1 COLUMN 20 "right of the decimal point in the display.". 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-PLUS-MINUS. 05 COLUMN 20 "Pressing this key causes the sign of the number". 05 LINE PLUS 1 COLUMN 20 "currently in the display to be changed. Positive". 05 LINE PLUS 1 COLUMN 20 "numbers will become negative, and negative numbers". 05 LINE PLUS 1 COLUMN 20 "will become positive; zero is always positive.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". 01 MEMORY-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(20) USING LIT-MEMORY-FUNCTIONS. 05 LINE PLUS 2 COLUMN 12 "There are ten separate memories, numbered 0 through 9.". 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-MEM. 05 COLUMN 18 "Copies the number currently in the display into". 05 LINE PLUS 1 COLUMN 18 "memory number 0. An ". 05 PIC X(03) USING LIT-M. 05 COLUMN 41 "will appear in the display". 05 LINE PLUS 1 COLUMN 18 "whenever this memory contains a nonzero value.". 05 LINE PLUS 2 COLUMN 12 PIC X(09) USING LIT-FRM. 05 COLUMN 18 "Copies the number currently in memory number 0". 05 LINE PLUS 1 COLUMN 18 "into the display.". 05 LINE PLUS 2 COLUMN 6 PIC X(11) USING LIT-SHIFT. 05 COLUMN 12 PIC X(09) USING LIT-MEM. 05 COLUMN 18 "Same as unshifted versions, except after pressing". 05 LINE PLUS 1 COLUMN 6 PIC X(11) USING LIT-SHIFT. 05 COLUMN 12 PIC X(09) USING LIT-FRM. 05 COLUMN 18 "either of these keys, press a digit from 0 through 9". 05 LINE PLUS 1 COLUMN 18 "to specify which of the ten memories to access.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". 01 MOVING-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(25) USING LIT-MOVING-THE-CALCULATOR. 05 LINE PLUS 2 COLUMN 12 "The arrow keys in the cursor keypad can be used to move". 05 LINE PLUS 1 COLUMN 12 "calculator to a different location on the screen. This". 05 LINE PLUS 1 COLUMN 12 "may be necessary if a value needed for a calculation was". 05 LINE PLUS 1 COLUMN 12 "covered up by the calculator when it appeared.". 05 LINE PLUS 2 COLUMN 12 "The unshifted arrow keys move the entire calculator one". 05 LINE PLUS 1 COLUMN 12 "position in the direction of the arrow.". 05 LINE PLUS 2 COLUMN 12 "The shifted arrow keys move the entire calculator several". 05 LINE PLUS 1 COLUMN 12 "positions in the direction of the arrow.". 05 LINE PLUS 2 COLUMN 12 "You may move the calculator partially or even completely". 05 LINE PLUS 1 COLUMN 12 "off the screen if desired.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". 01 MATH-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(18) USING LIT-MATH-FUNCTIONS. 05 COLUMN 35 PIC X(08) USING LIT-PLUS. 05 COLUMN 40 PIC X(08) USING LIT-MINUS. 05 COLUMN 45 PIC X(09) USING LIT-MUL. 05 COLUMN 50 PIC X(09) USING LIT-DIV. 05 COLUMN 55 PIC X(08) USING LIT-EQUALS. 05 LINE PLUS 2 COLUMN 12 "All math functions take two numbers and produce a result.". 05 LINE PLUS 1 COLUMN 12 "The first number is entered, then the proper math key is". 05 LINE PLUS 1 COLUMN 12 "pressed, then the second number is entered. The second". 05 LINE PLUS 1 COLUMN 12 "number isn't known to be complete until another math key". 05 LINE PLUS 1 COLUMN 12 "is pressed. Then the calculator has the two numbers it". 05 LINE PLUS 1 COLUMN 12 "needs to evaluate the first math function, and it places". 05 LINE PLUS 1 COLUMN 12 "the result into the display. The second math function". 05 LINE PLUS 1 COLUMN 12 "will use this result as its first number, but must wait". 05 LINE PLUS 1 COLUMN 12 "for its second number to be entered, which means waiting". 05 LINE PLUS 1 COLUMN 12 "until yet another math key is pressed, and so on. This". 05 LINE PLUS 1 COLUMN 12 "cycle continues until the special math key ". 05 PIC X(08) USING LIT-EQUALS. 05 COLUMN 58 " is pressed,". 05 LINE PLUS 1 COLUMN 12 "which completes the pending math function, but doesn't". 05 LINE PLUS 1 COLUMN 12 "actually perform a function of its own.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". 01 EXIT-HELP-SCREEN. 05 LINE 05 COLUMN 8 PIC X(26) USING LIT-LEAVING-THE-CALCULATOR. 05 LINE PLUS 2 COLUMN 12 "When you exit from the calculator, the calculator will be". 05 LINE PLUS 1 COLUMN 12 "removed from the screen, and you will be returned to the". 05 LINE PLUS 1 COLUMN 12 "input field where you originally pressed the Hot Key that". 05 LINE PLUS 1 COLUMN 12 "accessed the calculator. There are two ways to do this:". 05 LINE PLUS 2 COLUMN 16 PIC X(09) USING LIT-ESC. 05 COLUMN 22 "Normal exit. Restarts the interrupted input". 05 LINE PLUS 1 COLUMN 22 "with the contents of the input field unchanged.". 05 LINE PLUS 2 COLUMN 16 PIC X(09) USING LIT-CR. 05 COLUMN 22 "Return result. Restarts the interrupted input,". 05 LINE PLUS 1 COLUMN 22 "but the number currently shown in the calculator". 05 LINE PLUS 1 COLUMN 22 "display is placed into the input field at the". 05 LINE PLUS 1 COLUMN 22 "position of the cursor at the time that the". 05 LINE PLUS 1 COLUMN 22 "calculator Hot Key was originally pressed.". 05 LINE PLUS 2 COLUMN 8 "Press any key to return to Main Help screen...". PROCEDURE DIVISION. CALCULATOR-ROUTINE SECTION. CALCULATOR-BEGIN. IF CALCULATOR-IS-ALREADY-IN-USE GO TO CALCULATOR-EXIT. MOVE "Y" TO IN-USE-FLAG. *** Declare that this is now the active secondary program, but * remember the former secondary program so it can be restored * when Calculat or exits. CALL "SD_SET_SECONDARY_PROGRAM_NAME" USING PROGRAM-ID-NAME, ORIGINAL-SECONDARY-PROGRAM. *** Force Turbo to a Full setting while Calculator is running, but * remember what Turbo level was originally so it can be restored * when Calculator exits. CALL "SD_TURBO_FULL" USING ORIGINAL-TURBO-SETTING. *** Obtain the title(s) for the Calculator from the SD_CONFIG file. * Use defaults if no titles are available. MOVE CALC-TITLE-LINE-LEN TO MAX-GET-VALUE-LEN. CALL "SD_GET_VALUE" USING CALCULATOR-TITLE-1-NAME, CALCULATOR-TITLE-LINE-1, MAX-GET-VALUE-LEN, CALC-TITLE-1-ACTUAL-LEN. CALL "SD_GET_VALUE" USING CALCULATOR-TITLE-2-NAME, CALCULATOR-TITLE-LINE-2, MAX-GET-VALUE-LEN, CALC-TITLE-2-ACTUAL-LEN. IF CALC-TITLE-1-ACTUAL-LEN NOT > ZERO AND CALC-TITLE-2-ACTUAL-LEN NOT > ZERO MOVE "SCREEN DEMON" TO CALCULATOR-TITLE-LINE-1 MOVE 12 TO CALC-TITLE-1-ACTUAL-LEN MOVE " Calculator" TO CALCULATOR-TITLE-LINE-2 MOVE 11 TO CALC-TITLE-2-ACTUAL-LEN. IF CALC-TITLE-1-ACTUAL-LEN < CALC-TITLE-LINE-LEN ADD 1 TO CALC-TITLE-1-ACTUAL-LEN MOVE LOW-VALUE TO CALC-TITLE-1-CHAR (CALC-TITLE-1-ACTUAL-LEN) INSPECT CALCULATOR-TITLE-LINE-1 REPLACING CHARACTERS BY SPACES AFTER INITIAL LOW-VALUE MOVE SPACE TO CALC-TITLE-1-CHAR (CALC-TITLE-1-ACTUAL-LEN). IF CALC-TITLE-2-ACTUAL-LEN < CALC-TITLE-LINE-LEN ADD 1 TO CALC-TITLE-2-ACTUAL-LEN MOVE LOW-VALUE TO CALC-TITLE-2-CHAR (CALC-TITLE-2-ACTUAL-LEN) INSPECT CALCULATOR-TITLE-LINE-2 REPLACING CHARACTERS BY SPACES AFTER INITIAL LOW-VALUE MOVE SPACE TO CALC-TITLE-2-CHAR (CALC-TITLE-2-ACTUAL-LEN). *** Obtain the value defined in the configuration file for the alternate * exit key, which causes any Screen Demon hot key, including this one, * to exit. If not defined, set the alternate exit key to HIGH-VALUES, * which means that no key will act as the alternate exit key. MOVE 2 TO MAX-GET-VALUE-LEN. CALL "SD_GET_VALUE" USING SD-ALT-EXIT-KEY-NAME, ALTERNATE-EXIT-KEY-VALUE, MAX-GET-VALUE-LEN, ALT-EXIT-KEY-ACTUAL-LEN. IF ALT-EXIT-KEY-ACTUAL-LEN < 2 MOVE HIGH-VALUES TO ALTERNATE-EXIT-KEY. *** Now create a window for the calculator, and draw its boxes *** * Tape box is drawn first for best appearance if linedrawing * character set is being used for boxes. CALL "SD_NEW_WINDOW". CALL "SD_DRAW_BOX" USING TAPE-BOX-LINE, TAPE-BOX-COLUMN, TAPE-BOX-HEIGHT, TAPE-BOX-WIDTH. CALL "SD_DRAW_BOX" USING CALC-BOX-LINE, CALC-BOX-COLUMN, CALC-BOX-HEIGHT, CALC-BOX-WIDTH. CALL "SD_DRAW_BOX" USING NBR-BOX-LINE, NBR-BOX-COLUMN, NBR-BOX-HEIGHT, NBR-BOX-WIDTH. *** Declare window views for the two main boxes of the calculator. * This will allow the calculator to be moved around on the screen with * calling program's screen visible surrounding the calculator views. * Note that the line above each box is included in the views so that the * underscore above box is shown. MOVE ZERO TO CALC-VIEW-ADDR. CALL "SD_GET_WINDOW_VIEW" USING CALC-VIEW-DESCRIPTOR, CALC-VIEW-ADDR. SUBTRACT 1 FROM TAPE-BOX-LINE GIVING SD-VIEW-VIB-LINE OF CALC-VIEW-DESCRIPTOR. MOVE SD-VIEW-VIB-LINE OF CALC-VIEW-DESCRIPTOR TO SD-VIEW-TIB-LINE OF CALC-VIEW-DESCRIPTOR. MOVE TAPE-BOX-COLUMN TO SD-VIEW-VIB-COL OF CALC-VIEW-DESCRIPTOR, SD-VIEW-TIB-COL OF CALC-VIEW-DESCRIPTOR. ADD 1, TAPE-BOX-HEIGHT GIVING SD-VIEW-HEIGHT OF CALC-VIEW-DESCRIPTOR. MOVE TAPE-BOX-WIDTH TO SD-VIEW-WIDTH OF CALC-VIEW-DESCRIPTOR. CALL "SD_PUT_WINDOW_VIEW" USING CALC-VIEW-DESCRIPTOR, CALC-VIEW-ADDR. SUBTRACT 1 FROM CALC-BOX-LINE GIVING SD-VIEW-VIB-LINE OF CALC-VIEW-DESCRIPTOR. MOVE SD-VIEW-VIB-LINE OF CALC-VIEW-DESCRIPTOR TO SD-VIEW-TIB-LINE OF CALC-VIEW-DESCRIPTOR. MOVE CALC-BOX-COLUMN TO SD-VIEW-VIB-COL OF CALC-VIEW-DESCRIPTOR, SD-VIEW-TIB-COL OF CALC-VIEW-DESCRIPTOR. ADD 2, CALC-BOX-HEIGHT GIVING SD-VIEW-HEIGHT OF CALC-VIEW-DESCRIPTOR. MOVE CALC-BOX-WIDTH TO SD-VIEW-WIDTH OF CALC-VIEW-DESCRIPTOR. CALL "SD_NEW_WINDOW_VIEW" USING CALC-VIEW-DESCRIPTOR, CALC-VIEW-ADDR. DISPLAY LITERALS-SCREEN, TAPE-SCREEN, NUMBER-SCREEN. MOVE SPACE TO FUNCTION-CODE. PERFORM CALCULATE-THINGS UNTIL EXIT-FUNCTION OR RETURN-RESULT-FUNCTION. CALL "SD_REMOVE_WINDOW". *** Restore Turbo setting to its original value *** CALL "SD_TURBO_RESET" USING ORIGINAL-TURBO-SETTING. *** Declare that the former secondary program is now active again *** CALL "SD_SET_SECONDARY_PROGRAM_NAME" USING ORIGINAL-SECONDARY-PROGRAM. MOVE "N" TO IN-USE-FLAG. CALCULATOR-EXIT. EXIT PROGRAM. CALCULATOR-STOP. STOP RUN. CALCULATE-THINGS. PERFORM ACCEPT-NUMBER. IF NOT EXIT-FUNCTION AND NOT RETURN-RESULT-FUNCTION PERFORM PUT-NUMBER-AND-FUNC-ON-TAPE MOVE DISPLAY-NUMBER TO ACCUMULATOR, LAST-ENTERED-NUMBER IF EQUALS-FUNCTION MOVE K-NUMBER TO DISPLAY-NUMBER MOVE K-FUNCTION-CODE TO PENDING-FUNCTION-CODE PERFORM EVALUATE-PENDING-FUNCTION PERFORM PUT-RESULT-ON-TAPE ELSE MOVE FUNCTION-CODE TO PENDING-FUNCTION-CODE PERFORM ACCEPT-REST-OF-CALC UNTIL EXIT-FUNCTION OR RETURN-RESULT-FUNCTION OR EQUALS-FUNCTION IF EQUALS-FUNCTION PERFORM PUT-RESULT-ON-TAPE. ACCEPT-REST-OF-CALC. PERFORM ACCEPT-NUMBER. IF NOT EXIT-FUNCTION AND NOT RETURN-RESULT-FUNCTION IF INPUT-CHAR-COUNT = ZERO MOVE LAST-ENTERED-NUMBER TO DISPLAY-NUMBER ELSE MOVE DISPLAY-NUMBER TO LAST-ENTERED-NUMBER. IF NOT EXIT-FUNCTION AND NOT RETURN-RESULT-FUNCTION PERFORM PUT-NUMBER-AND-FUNC-ON-TAPE PERFORM EVALUATE-PENDING-FUNCTION MOVE FUNCTION-CODE TO PENDING-FUNCTION-CODE. ACCEPT-NUMBER. MOVE SPACE TO FUNCTION-CODE. MOVE ZERO TO INPUT-CHAR-COUNT. PERFORM ACCEPT-NUMBER-DIGITS UNTIL FUNCTION-CODE NOT = SPACE. ACCEPT-NUMBER-DIGITS. IF MEMORY-NUMBER (1) = ZERO DISPLAY MEMORY-INDICATOR-CLEAR ELSE DISPLAY MEMORY-INDICATOR. PERFORM ACCEPT-CHARACTER. IF INPUT-CHAR NOT < "0" AND INPUT-CHAR NOT > "9" IF INPUT-CHAR-COUNT = ZERO MOVE ZERO TO DISPLAY-NUMBER, NEXT-DECIMAL-PLACE MOVE 1 TO INPUT-CHAR-COUNT PERFORM BUILD-AND-DISPLAY-NUMBER ELSE ADD 1 TO INPUT-CHAR-COUNT PERFORM BUILD-AND-DISPLAY-NUMBER ELSE IF INPUT-CHAR = "." IF INPUT-CHAR-COUNT = ZERO MOVE ZERO TO DISPLAY-NUMBER MOVE 1 TO NEXT-DECIMAL-PLACE, INPUT-CHAR-COUNT DISPLAY NUMBER-SCREEN ELSE IF NEXT-DECIMAL-PLACE = ZERO MOVE 1 TO NEXT-DECIMAL-PLACE ADD 1 TO INPUT-CHAR-COUNT ELSE NEXT SENTENCE ELSE IF INPUT-CHAR = "-" MOVE SUBTRACT-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = "*" OR INPUT-CHAR = "x" OR INPUT-CHAR = "X" OR INPUT-CHAR = C2-KEY MOVE MULTIPLY-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = C4-KEY OR INPUT-CHAR = "/" MOVE DIVIDE-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = "+" OR INPUT-CHAR = NEW-LINE MOVE ADD-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = "=" OR INPUT-CHAR = "," MOVE EQUALS-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = ESCAPE-KEY OR INPUT-CHAR = ALTERNATE-EXIT-KEY OR INPUT- CHAR = F8-KEY OR INPUT-CHAR = "E" OR INPUT-CHAR = "e" MOVE EXIT-FUN-CODE TO FUNCTION-CODE ELSE IF INPUT-CHAR = CR-KEY OR INPUT-CHAR = F10-KEY OR INPUT-CHAR = "R" OR INPUT-CHAR = "r" PERFORM RETURN-DISPLAY-NUMBER MOVE RETURN-RESULT-FUN-CODE TO FUNCTION-CODE. ACCEPT-CHARACTER. PERFORM GET-INPUT-CHAR. IF INPUT-CHAR = DELETE-KEY OR INPUT-CHAR = "D" OR INPUT-CHAR = "d" PERFORM DELETE-LAST-DIGIT DISPLAY NUMBER-SCREEN ELSE IF INPUT-CHAR = ERASE-EOL-KEY OR INPUT-CHAR = "C" OR INPUT-CHAR = "c" IF DISPLAY-NUMBER = ZERO MOVE SPACE TO PENDING-FUNCTION-CODE, K-FUNCTION-CODE, FUNCTION-CODE MOVE ZERO TO K-NUMBER, DISPLAY-NUMBER, LAST-ENTERED-NUMBER, ACCUMULATOR, NEXT-DECIMAL-PLACE, INPUT-CHAR-COUNT MOVE "C" TO LAST-TAPE-FUNCTION MOVE TAPE-LINES-2-LAST TO TAPE-LINES DISPLAY TAPE-SCREEN, NUMBER-SCREEN ELSE MOVE ZERO TO DISPLAY-NUMBER, NEXT-DECIMAL-PLACE, INPUT-CHAR-COUNT DISPLAY NUMBER-SCREEN ELSE IF INPUT-CHAR = TAB-KEY OR INPUT-CHAR = "T" OR INPUT-CHAR = "t" MOVE SPACES TO TAPE-LINES DISPLAY TAPE-SCREEN, NUMBER-SCREEN ELSE IF INPUT-CHAR = HOME-KEY OR INPUT-CHAR = "|" IF DISPLAY-SIGN = "+" MOVE "-" TO DISPLAY-SIGN DISPLAY NUMBER-SCREEN ELSE MOVE "+" TO DISPLAY-SIGN DISPLAY NUMBER-SCREEN ELSE IF INPUT-CHAR = C1-KEY OR INPUT-CHAR = "M" OR INPUT-CHAR = "m" MOVE DISPLAY-NUMBER TO MEMORY-NUMBER (1) ELSE IF INPUT-CHAR = SHIFT-C1-KEY PERFORM GET-INPUT-CHAR IF INPUT-CHAR NOT < "0" AND INPUT-CHAR NOT > "9" MOVE DISPLAY-NUMBER TO MEMORY-NUMBER (INPUT-CHAR-DIGIT + 1) MOVE SHIFT-C1-KEY TO INPUT-CHAR ELSE MOVE SHIFT-C1-KEY TO INPUT-CHAR ELSE IF INPUT-CHAR = C3-KEY OR INPUT-CHAR = "F" OR INPUT-CHAR = "f" MOVE MEMORY-NUMBER (1) TO DISPLAY-NUMBER ADD 1, MAX-DECIMAL-PLACES GIVING NEXT-DECIMAL-PLACE MOVE ZERO TO INPUT-CHAR-COUNT INSPECT DISPLAY-WHOLE TALLYING INPUT-CHAR-COUNT FOR LEADING ZEROES COMPUTE INPUT-CHAR-COUNT = MAX-WHOLE-PLACES - INPUT-CHAR-COUNT + 1 + MAX-DECIMAL-PLACES DISPLAY NUMBER-SCREEN ELSE IF INPUT-CHAR = SHIFT-C3-KEY PERFORM GET-INPUT-CHAR IF INPUT-CHAR NOT < "0" AND INPUT-CHAR NOT > "9" MOVE MEMORY-NUMBER (INPUT-CHAR-DIGIT + 1) TO DISPLAY-NUMBER ADD 1, MAX-DECIMAL-PLACES GIVING NEXT-DECIMAL-PLACE MOVE ZERO TO INPUT-CHAR-COUNT INSPECT DISPLAY-WHOLE TALLYING INPUT-CHAR-COUNT FOR LEADING ZEROES COMPUTE INPUT-CHAR-COUNT = MAX-WHOLE-PLACES - INPUT-CHAR-COUNT + 1 + MAX-DECIMAL-PLACES DISPLAY NUMBER-SCREEN MOVE SHIFT-C3-KEY TO INPUT-CHAR ELSE MOVE SHIFT-C3-KEY TO INPUT-CHAR ELSE IF INPUT-CHAR = UP-ARROW-KEY CALL "SD_MOVE_WINDOW_UP" ELSE IF INPUT-CHAR = DOWN-ARROW-KEY CALL "SD_MOVE_WINDOW_DOWN" ELSE IF INPUT-CHAR = RIGHT-ARROW-KEY CALL "SD_MOVE_WINDOW_RIGHT" ELSE IF INPUT-CHAR = LEFT-ARROW-KEY CALL "SD_MOVE_WINDOW_LEFT" ELSE IF INPUT-CHAR = SHIFT-UP-ARROW-KEY MOVE 3 TO MOVE-INCREMENT CALL "SD_MOVE_WINDOW_UP" USING MOVE-INCREMENT ELSE IF INPUT-CHAR = SHIFT-DOWN-ARROW-KEY MOVE 3 TO MOVE-INCREMENT CALL "SD_MOVE_WINDOW_DOWN" USING MOVE-INCREMENT ELSE IF INPUT-CHAR = SHIFT-RIGHT-ARROW-KEY MOVE 10 TO MOVE-INCREMENT CALL "SD_MOVE_WINDOW_RIGHT" USING MOVE-INCREMENT ELSE IF INPUT-CHAR = SHIFT-LEFT-ARROW-KEY MOVE 10 TO MOVE-INCREMENT CALL "SD_MOVE_WINDOW_LEFT" USING MOVE-INCREMENT ELSE IF INPUT-CHAR = SPACE OR INPUT-CHAR = "H" OR INPUT-CHAR = "h" PERFORM CALCULATOR-HELP. BUILD-AND-DISPLAY-NUMBER. IF NEXT-DECIMAL-PLACE = ZERO IF DISPLAY-WHOLE-TOP-DIGIT = ZERO MOVE DISPLAY-WHOLE-ALL-BUT-TOP TO DISPLAY-WHOLE MOVE INPUT-CHAR-DIGIT TO DISPLAY-WHOLE-1ST-DIGIT ELSE NEXT SENTENCE ELSE IF NEXT-DECIMAL-PLACE NOT > MAX-DECIMAL-PLACES MOVE INPUT-CHAR-DIGIT TO DISPLAY-FRACTION-DIGIT (NEXT-DECIMAL-PLACE) ADD 1 TO NEXT-DECIMAL-PLACE. DISPLAY NUMBER-SCREEN. DELETE-LAST-DIGIT. IF NEXT-DECIMAL-PLACE NOT > ZERO MOVE DISPLAY-WHOLE TO TEMP-STRING MOVE ZERO TO DISPLAY-WHOLE-TOP-DIGIT MOVE TEMP-STRING TO DISPLAY-WHOLE-ALL-BUT-TOP ELSE SUBTRACT 1 FROM NEXT-DECIMAL-PLACE IF NEXT-DECIMAL-PLACE > ZERO MOVE ZERO TO DISPLAY-FRACTION-DIGIT (NEXT-DECIMAL-PLACE). IF INPUT-CHAR-COUNT > ZERO SUBTRACT 1 FROM INPUT-CHAR-COUNT. PUT-NUMBER-AND-FUNC-ON-TAPE. MOVE TAPE-LINES-2-LAST TO TAPE-LINES. MOVE DISPLAY-NUMBER TO LAST-TAPE-NUMBER. MOVE FUNCTION-CODE TO LAST-TAPE-FUNCTION. DISPLAY TAPE-SCREEN, NUMBER-SCREEN. EVALUATE-PENDING-FUNCTION. IF PENDING-EQUALS-FUNCTION MOVE DISPLAY-NUMBER TO ACCUMULATOR ELSE IF PENDING-MATH-FUNCTION MOVE DISPLAY-NUMBER TO K-NUMBER MOVE PENDING-FUNCTION-CODE TO K-FUNCTION-CODE IF PENDING-ADD-FUNCTION ADD DISPLAY-NUMBER TO ACCUMULATOR ELSE IF PENDING-SUBTRACT-FUNCTION SUBTRACT DISPLAY-NUMBER FROM ACCUMULATOR ELSE IF PENDING-MULTIPLY-FUNCTION MULTIPLY DISPLAY-NUMBER BY ACCUMULATOR ELSE IF PENDING-DIVIDE-FUNCTION DIVIDE DISPLAY-NUMBER INTO ACCUMULATOR. MOVE ACCUMULATOR TO DISPLAY-NUMBER. DISPLAY NUMBER-SCREEN. PUT-RESULT-ON-TAPE. MOVE ACCUMULATOR TO DISPLAY-NUMBER. MOVE GRAND-TOTAL-FUN-CODE TO FUNCTION-CODE. PERFORM PUT-NUMBER-AND-FUNC-ON-TAPE. MOVE TAPE-LINES-2-LAST TO TAPE-LINES. DISPLAY TAPE-SCREEN, NUMBER-SCREEN. RETURN-DISPLAY-NUMBER. MOVE DISPLAY-NUMBER-ONLY TO TEMP-NUMBER. IF DISPLAY-SIGN = "-" COMPUTE TEMP-NUMBER = - TEMP-NUMBER. MOVE TEMP-NUMBER TO RETURN-NUMBER. PERFORM SHIFT-RETURN-NUMBER UNTIL RETURN-CHAR-1 NOT = SPACE. MOVE ZERO TO RETURN-SIZE. INSPECT RETURN-NUMBER TALLYING RETURN-SIZE FOR CHARACTERS BEFORE INITIAL SPACE. MOVE ZERO TO TEMP-COUNT. INSPECT RETURN-NUMBER TALLYING TEMP-COUNT FOR ALL ZEROES AFTER INITIAL "." IF TEMP-COUNT = MAX-DECIMAL-PLACES SUBTRACT MAX-DECIMAL-PLACES, 1 FROM RETURN-SIZE. CALL "SD_RETURN_INPUT" USING RETURN-NUMBER, RETURN-SIZE. SHIFT-RETURN-NUMBER. MOVE RETURN-CHARS-2-LAST TO RETURN-NUMBER-AREA. GET-INPUT-CHAR. CALL "SD_READ_CHAR" USING READ-CHAR. MOVE READ-CHAR TO INPUT-CHAR. CALCULATOR-HELP. CALL "SD_NEW_WINDOW" USING MAIN-HELP-BOX-LINE, MAIN-HELP-BOX-COLUMN, MAIN-HELP-BOX-HEIGHT, MAIN-HELP-BOX-WIDTH, MAIN-HELP-BOX-LABEL. DISPLAY MAIN-HELP-SCREEN. PERFORM GET-INPUT-CHAR. PERFORM CALCULATOR-ADDITIONAL-HELP UNTIL INPUT-CHAR = SPACE OR INPUT-CHAR = ALTERNATE-EXIT-KEY. CALL "SD_REMOVE_WINDOW". CALCULATOR-ADDITIONAL-HELP. IF INPUT-CHAR = DELETE-KEY OR INPUT-CHAR = "D" OR INPUT-CHAR = "d" OR INPUT-CHAR = ERASE-EOL-KEY OR INPUT-CHAR = "C" OR INPUT-CHAR = "c" OR INPUT-CHAR = TAB-KEY OR INPUT-CHAR = "T" OR INPUT-CHAR = "t" PERFORM CLEARING-HELP ELSE IF (INPUT-CHAR NOT < "0" AND INPUT-CHAR NOT > "9") OR INPUT-CHAR = "." OR INPUT-CHAR = HOME-KEY OR INPUT-CHAR = "|" PERFORM ENTERING-HELP ELSE IF INPUT-CHAR = C1-KEY OR INPUT-CHAR = "M"   OR INPUT-CHAR = "m" OR INPUT-CHAR = SHIFT-C1-KEY OR INPUT-CHAR = C3-KEY OR INPUT-CHAR = "F" OR INPUT-CHAR = "f" OR INPUT-CHAR = SHIFT-C3-KEY PERFORM MEMORY-HELP ELSE IF INPUT-CHAR = UP-ARROW-KEY OR INPUT-CHAR = DOWN-ARROW-KEY OR INPUT-CHAR = RIGHT-ARROW-KEY OR INPUT-CHAR = LEFT-ARROW-KEY OR INPUT-CHAR = SHIFT-UP-ARROW-KEY OR INPUT-CHAR = SHIFT-DOWN-ARROW-KEY OR INPUT-CHAR = SHIFT-RIGHT-ARROW-KEY OR INPUT-CHAR = SHIFT-LEFT-ARROW-KEY PERFORM MOVING-HELP ELSE IF INPUT-CHAR = "-" OR INPUT-CHAR = "*" OR INPUT-CHAR = "x" OR INPUT-CHAR = "X" OR INPUT-CHAR = C2-KEY OR INPUT-CHAR = C4-KEY OR INPUT-CHAR = "/" OR INPUT-CHAR = "+" OR INPUT-CHAR = NEW-LINE OR INPUT-CHAR = "=" OR INPUT-CHAR = "," PERFORM MATH-HELP ELSE IF INPUT-CHAR = ESCAPE-KEY OR INPUT-CHAR = F8-KEY OR INPUT-CHAR = "E" OR INPUT-CHAR = "e" OR INPUT-CHAR = CR-KEY OR INPUT-CHAR = F10-KEY OR INPUT-CHAR = "R" OR INPUT-CHAR = "r" PERFORM EXIT-HELP. PERFORM GET-INPUT-CHAR. CLEARING-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY CLEAR-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. ENTERING-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY ENTERING-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. MEMORY-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY MEMORY-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. MOVING-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY MOVING-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. MATH-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY MATH-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. EXIT-HELP. PERFORM DRAW-ADDITIONAL-HELP-BOX. DISPLAY EXIT-HELP-SCREEN. PERFORM WAIT-FOR-ACKNOWLEDGEMENT. DRAW-ADDITIONAL-HELP-BOX. CALL "SD_NEW_WINDOW". CALL "SD_DRAW_BOX" USING ADDL-HELP-BOX-LINE, ADDL-HELP-BOX-COLUMN, ADDL-HELP-BOX-HEIGHT, ADDL-HELP-BOX-WIDTH. WAIT-FOR-ACKNOWLEDGEMENT. PERFORM GET-INPUT-CHAR. CALL "SD_REMOVE_WINDOW". ********** Last line of SDCALCULATOR.CO ********** .@'Fox'Hu'HuMSDCONSTANTS.WS  ******************************************************************************* * $Id: sdconstants.ws,v 1.4 1995/07/11 20:51:12 mark Exp mark $ * * $Log: sdconstants.ws,v $ * Revision 1.4 1995/07/11 20:51:12 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 * ******************************************************************************* *** SDCONSTANTS.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- * This copy file is intended to be copied into WORKING-STORAGE. * It defines various Screen Demon constant values as fields that * can be referenced in COBOL procedure code. Use of these fields * instead of hard-coded numeric values insulates the program from * possible changes to these parameters in future revisions of * Screen Demon. ***** Image size constants ***** * Number of lines per image 01 SD-LPP PIC 9(04) COMP VALUE 24. * Number of columns per line 01 SD-CPL PIC 9(04) COMP VALUE 162. * Total number of character positions in an image 01 SD-CPS PIC 9(04) COMP VALUE 3888. * Size in bytes of additional parameters following the image characters * and attributes in an image buffer (defined in SDIMAGE.DEF) 01 SD-IMAGE-PARAMETERS-SIZE PIC 9(04) COMP VALUE 14. * Total used size of an image buffer in bytes (defined in SDIMAGE.DEF) 01 SD-IMAGE-SIZE PIC 9(04) COMP VALUE 7790. *** End of SDCONSTANTS.WS *** .@'Fo|'Hv'HvrYSDVIEWFLAGS.WS r ******************************************************************************* * $Id: sdviewflags.ws,v 1.4 1995/07/11 20:51:20 mark Exp mark $ * * $Log: sdviewflags.ws,v $ * Revision 1.4 1995/07/11 20:51: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 * ******************************************************************************* *** SDVIEWFLAGS.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of the flags word in a Screen Demon window view descriptor. ** A window view descriptor can be examined using SD_GET_WINDOW_VIEW. ** This copy file is intended to be used to examine the bits ** in the flags word via the SD_BITS_TO_DIGITS call. 01 SD-VIEW-FLAGS-BITS-GROUP. 05 SD-VIEW-FLAGS-RESERVED-BITS PIC X(15). 05 SD-VIEW-FLAGS-COMPRESS-BIT PIC X. ********************************************************************* * SD-VIEW-FLAGS-RESERVED-BITS Undefined * SD-VIEW-FLAGS-COMPRESS-BIT View represents a D400-style * hardware window with compress * mode on. *** End of SDVIEWFLAGS.WS *** .D vZ6'Hv'Hv)WINDOWTEST.CO )*** This program demonstrates the use of multiple partial screen windows * under Screen Demon. Note that either Full or Partial Turbo mode * is required to use these features; the program will NOT work * correctly under No Turbo. IDENTIFICATION DIVISION. PROGRAM-ID. WINDOWTEST. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. DG. OBJECT-COMPUTER. DG. DATA DIVISION. WORKING-STORAGE SECTION. 01 WINDOW-ONE-ID PIC X(04) VALUE LOW-VALUES. 01 WINDOW-TWO-ID PIC X(04) VALUE LOW-VALUES. 01 CUR-TOP-WINDOW PIC X(04) VALUE LOW-VALUES. 01 CUR-BOTTOM-WINDOW PIC X(04) VALUE LOW-VALUES. 01 TEMP-WINDOW PIC X(04) VALUE LOW-VALUES. 01 BOX-LINE PIC 9(04) COMP VALUE ZERO. 01 BOX-COL PIC 9(04) COMP VALUE ZERO. 01 BOX-HEIGHT PIC 9(04) COMP VALUE ZERO. 01 BOX-WIDTH PIC 9(04) COMP VALUE ZERO. 01 BOX-LABEL PIC X(30) VALUE SPACES. 01 FIELD-ONE PIC X(05) VALUE "11111". 01 FIELD-TWO PIC X(05) VALUE "22222". 01 FIELD-THREE PIC X(05) VALUE "33333". 01 FIELD-FOUR PIC X(05) VALUE "44444". 01 FIELD-FIVE PIC X(05) VALUE "55555". 01 FIELD-SIX PIC X(05) VALUE "66666". 01 FIELD-SEVEN PIC X(05) VALUE "77777". 01 FIELD-EIGHT PIC X(05) VALUE "88888". 01 FIELD-NINE PIC X(05) VALUE "99999". 01 FIELD-TEN PIC X(05) VALUE "10101". 01 FIELD-ELEVEN PIC X(05) VALUE "11111". 01 FIELD-TWELVE PIC X(05) VALUE "12121". 01 ESCAPE-CODE PIC X(02) VALUE "00". SCREEN SECTION. 01 MAIN-SCREEN. 05 BLANK SCREEN. 05 LINE 02 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 06 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 10 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 14 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 18 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 22 COLUMN 01 "- - - - - - - - - - - - - - - - - - - - ". 05 "- - - - - - - - - - - - - - - - - - -". 05 LINE 24 COLUMN 01 "WINDOW TEST PROGRAM". 01 WINDOW-ONE-SCREEN. 05 LINE 04 COLUMN 04 "Field One". 05 COLUMN 16 PIC X(05) USING FIELD-ONE. 05 LINE 05 COLUMN 04 "Field Two". 05 COLUMN 16 PIC X(05) USING FIELD-TWO. 05 LINE 06 COLUMN 04 "Field Three". 05 COLUMN 16 PIC X(05) USING FIELD-THREE. 05 LINE 07 COLUMN 04 "Field Four". 05 COLUMN 16 PIC X(05) USING FIELD-FOUR. 05 LINE 08 COLUMN 04 "Field Five". 05 COLUMN 16 PIC X(05) USING FIELD-FIVE. 05 LINE 09 COLUMN 04 "Field Six". 05 COLUMN 16 PIC X(05) USING FIELD-SIX. 01 WINDOW-TWO-SCREEN. 05 LINE 04 COLUMN 04 "Field Seven". 05 COLUMN 17 PIC X(05) USING FIELD-SEVEN. 05 LINE 05 COLUMN 04 "Field Eight". 05 COLUMN 17 PIC X(05) USING FIELD-EIGHT. 05 LINE 06 COLUMN 04 "Field Nine". 05 COLUMN 17 PIC X(05) USING FIELD-NINE. 05 LINE 07 COLUMN 04 "Field Ten". 05 COLUMN 17 PIC X(05) USING FIELD-TEN. 05 LINE 08 COLUMN 04 "Field Eleven". 05 COLUMN 17 PIC X(05) USING FIELD-ELEVEN. 05 LINE 09 COLUMN 04 "Field Twelve". 05 COLUMN 17 PIC X(05) USING FIELD-TWELVE. PROCEDURE DIVISION. TEST-SECTION SECTION. TEST-BEGIN. *** Display background screen *** DISPLAY MAIN-SCREEN. *** Create the first window, specifying the location of the window box * on the TERMINAL screen. The location of the box within the Virtual * Screen Image for this window is always (2,1) when using SD_CREATE_WINDOW. MOVE 5 TO BOX-LINE. MOVE 20 TO BOX-COL. MOVE 10 TO BOX-HEIGHT. MOVE 30 TO BOX-WIDTH. MOVE " Window One|" TO BOX-LABEL. CALL "SD_CREATE_WINDOW" USING BOX-LINE, BOX-COL, BOX-HEIGHT, BOX-WIDTH, BOX-LABEL. *** Obtain the ID of the newly-created window so it can be referenced later. * This is done by passing an ID of LOW-VALUES to the SD_ACTIVE_WINDOW * call, which indicates that this call should return the ID of the * current active window (target of all DISPLAY's and ACCEPT's), * rather than declaring a window to be active. MOVE LOW-VALUES TO WINDOW-ONE-ID. CALL "SD_ACTIVE_WINDOW" USING WINDOW-ONE-ID. *** Display the appropriate contents for the first window. Note that the * screen definition for these contents is based on the box being located * at line 2 column 1 (boxes can't begin on line 1, unfortunately) as * set up by the SD_CREATE_WINDOW call above. DISPLAY WINDOW-ONE-SCREEN. *** Now do the same procedure to create and set up the second window *** MOVE 10 TO BOX-LINE. MOVE 40 TO BOX-COL. MOVE 10 TO BOX-HEIGHT. MOVE 30 TO BOX-WIDTH. MOVE " Window Two|" TO BOX-LABEL. CALL "SD_CREATE_WINDOW" USING BOX-LINE, BOX-COL, BOX-HEIGHT, BOX-WIDTH, BOX-LABEL. MOVE LOW-VALUES TO WINDOW-TWO-ID. CALL "SD_ACTIVE_WINDOW" USING WINDOW-TWO-ID. DISPLAY WINDOW-TWO-SCREEN. *** The windows were created so that they overlap each other, and Window Two * is now both the Top window and the current active window because it was * created last. Before beginning the main loop of the program, switch * this so that Window One is on top and active. CALL "SD_ACTIVE_WINDOW" USING WINDOW-ONE-ID. CALL "SD_TOP_WINDOW" USING WINDOW-ONE-ID. *** Remember the positions of the windows so that if the Switch Windows * key (f5) is pressed later, the program can know how to flip them. MOVE WINDOW-ONE-ID TO CUR-TOP-WINDOW. MOVE WINDOW-TWO-ID TO CUR-BOTTOM-WINDOW. *** Now allow the operator to hit keys until ESCAPE is pressed *** MOVE "00" TO ESCAPE-CODE. PERFORM TEST-LOOP UNTIL ESCAPE-CODE = "01". STOP RUN. *** Main loop of the program *** TEST-LOOP. *** Depending on which window is currently on top, ACCEPT the appropriate * set of fields from the operator. IF CUR-TOP-WINDOW = WINDOW-ONE-ID ACCEPT WINDOW-ONE-SCREEN ELSE ACCEPT WINDOW-TWO-SCREEN. ACCEPT ESCAPE-CODE FROM ESCAPE KEY. *** On f1, move the current active/top window one column to the left * on the terminal screen. Note that this does not change the * position of the window in the VIB, so the program does not need * to compensate for the movement by altering DISPLAY or ACCEPT locations. IF ESCAPE-CODE = "02" CALL "SD_MOVE_WINDOW_LEFT" *** On f2, move the current active/top window one line downward * on the terminal screen. ELSE IF ESCAPE-CODE = "03" CALL "SD_MOVE_WINDOW_DOWN" *** On f3, move the current active/top window one line upward * on the terminal screen. ELSE IF ESCAPE-CODE = "04" CALL "SD_MOVE_WINDOW_UP" *** On f4, move the current active/top window one column to the right * on the terminal screen. ELSE IF ESCAPE-CODE = "05" CALL "SD_MOVE_WINDOW_RIGHT" *** On f5, interchange the two windows *** ELSE IF ESCAPE-CODE = "06" MOVE CUR-TOP-WINDOW TO TEMP-WINDOW MOVE CUR-BOTTOM-WINDOW TO CUR-TOP-WINDOW MOVE TEMP-WINDOW TO CUR-BOTTOM-WINDOW CALL "SD_ACTIVE_WINDOW" USING CUR-TOP-WINDOW CALL "SD_TOP_WINDOW" USING CUR-TOP-WINDOW. .@'Fo5'Hv('Hv( SD_CSCREENPRINT.C  /* ****************************************************************************** * $Id: sd_cscreenprint.c,v 1.5 1995/07/11 20:48:59 mark Exp mark $ * * $Log: sd_cscreenprint.c,v $ * Revision 1.5 1995/07/11 20:48:59 mark * Updated revision and copyright * * Revision 1.4 1994/03/17 17:05:43 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 * ****************************************************************************** */ /************************************************************************* *** sd_cprintscreen.c Screen Demon rev 3.60.01 *** *** *** *** Screen Demon screen print pop-up utility *** *************************************************************************/ /************************************************************************* *** *** *** 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 *** *** *** *************************************************************************/ #include #include "sd_c_screen_io.h" #include "sd_c_file_io.h" #define ERFDE 025 /* System error code for "File Does Not Exist" */ $builtin int strlen(); /* The label for boxes is supplied by the configuration file */ extern $ref char *SDSCREENPRINT_TITLE; /* The default output filename is supplied by the configuration file */ extern $ref char *SDSCREENPRINT_OUTPUT_NAME; /* A flag in the configuration file is nonzero if the output filename */ /* is to be requested from the operator. */ extern $ref short SDSCREENPRINT_ASK_OUTPUT_NAME; /* User-defined alternate exit key defined in the configuration file. * This key causes any Screen Demon hot key routine to exit. */ extern $ref short SD_ALT_EXIT_KEY; /* Layer above SDinput() function that automatically translates the special * SD_ALT_EXIT_KEY to . */ static int InputField (line, col, maxlen, buffer, attr, timeout) int line, col, maxlen, attr, timeout; char *buffer; { int delim; delim = SDinput (line, col, maxlen, buffer, attr, timeout); if ( delim == SD_ALT_EXIT_KEY ) return (K_ESC); else return (delim); } int SDDumpScreen (ib, name) SDVIB *ib; char *name; { int fd, error, line, col; char buf[CPL + 1], *p; char *sstrcpy(); /* If the name pointer is in ring zero, assume that it is instead the AOS/VS channel number of the destination file. */ if (((int) name & (7 << 28)) == 0) fd = (int) name; else { /* Trim trailing spaces from given filename */ p = sstrcpy( buf, name ); /* returns ptr to term null */ p--; while ( (p >= buf) && (*p == ' ') ) *p-- = '\000'; /* Open, for appending and data sensitive writes, the file */ if ((fd = sd_nopen (buf, "ad")) < 0) return (-fd); } SDNewWindow( 14, 35, 1, 14, " Printing |" ); SDFlush(); error = 0; p = ib->SDcharacter; for (line = 0; error >= 0 && line < LPP; line++) { memcpy (buf, p, CPL); p += CPL; for (col = CPL - 1; col >= 0 && buf[col] == ' '; col--) ; buf[++col] = '\n'; error = sd_nwrite (fd, buf, col + 1); } /* Close the file only if we were not passed a channel number */ if (((int) name & (7 << 28)) != 0) sd_nclose (fd); SDRemoveWindow(); return (error >= 0 ? 0 : -error); } /* The maximum nesting allowed for this pop-up. The default does not * allow nesting, so that operators cannot get confused by pressing the * PrintScreen hot key multiple times. */ int SD_SCR_PRT_MAX_LEVELS = 1; static char OutputName[31]; /* The actual entry point - typically from a hot key dispatch */ void SDSCREENPRINT () { static int level = 0; int error, line, column; SDVIB *ImageBuffer; int origTurbo; char origSecondaryPgm[32]; /* If this code is linked into the application program (as * opposed to being in the shared library or in a separate * PROC'ed program), then make sure we are not nesting too much. */ if (level >= SD_SCR_PRT_MAX_LEVELS) return; /* Allocate memory to use for an image buffer. If the * allocation fails for some reason, just leave, because * there won't be enough memory to create an error message * window either. */ ImageBuffer = (SDVIB *)(SDMalloc(sizeof(SDVIB))); if (ImageBuffer == NULL) return; /* Update our current nesting level */ level++; /* Declare that this routine is now the active secondary program, */ /* but remember what the former active secondary program was. */ SDSetSecondaryProgramName( "SDSCREENPRINT", origSecondaryPgm ); /* Force the Turbo setting to Full while this hot key routine runs */ origTurbo = SDTurboFull(); /* Get the current contents of the screen into allocated buffer */ SDGetImage( ImageBuffer ); /* Default the output filename */ if (OutputName[0] == '\0') sstrcpy (OutputName, SDSCREENPRINT_OUTPUT_NAME); /* Check the configuration option that indicates whether or not */ /* the output filename should be requested from the operator. */ /* Pop up a window to ask the question if so. */ if ( SDSCREENPRINT_ASK_OUTPUT_NAME ) { /* Pop-up the Screen Print boxed window */ line = 10; column = 14; SDNewWindow( line, column, 5, 52, SDSCREENPRINT_TITLE ); SDwrite( line + 2, column + 3, 99, "Output Filename", ATTR_DIM); SDwrite( line + 4, column + 3, 99, "ESC", ATTR_REVERSE | ATTR_ULINE); SDwrite( line + 4, column + 6, 99, " to exit without printing", ATTR_SAME); /* Get the destination filename and dump the screen. Loop * until an ESCAPE delimiter is typed or the dump is * successful. */ while ( InputField ( line + 2, column + 19, 30, OutputName, ATTR_NORMAL) != K_ESC && OutputName[0] > ' ' && (error = SDDumpScreen (ImageBuffer, OutputName)) != 0 ) SDSysErrorMessage (error, "", line + 4, column + 5); /* Remove the boxed window that was created */ SDRemoveWindow(); } /* else the output filename is not supposed to be requested from */ /* the operator, so just dump to default output filename. */ /* Ignore "File Does Not Exist" errors since that is what */ /* PRISWI Printer Switcher returns if operator presses */ else { error = SDDumpScreen (ImageBuffer, OutputName); if ( error && (error != ERFDE) ) SDSysErrorMessage (error); } /* Release the memory allocated for the image buffer */ SDFree( (char *)(ImageBuffer) ); /* Restore the original Turbo setting */ SDTurboReset(origTurbo); /* Declare that the former secondary program is now once again */ /* the active secondary program. */ SDSetSecondaryProgramName( origSecondaryPgm ); /* Update the nesting level before leav ing */ level--; } .@%_P'Hv('Hv(Z`SD_C_FILE_IO.H  /* ****************************************************************************** * $Id: sd_c_file_io.h,v 1.3 1994/03/11 17:27:47 mark Exp mark $ * * $Log: sd_c_file_io.h,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_c_file_io.h */ int sd_nopen (char *name, char *modes); int sd_nwrite (int channel, char *buf, int nbytes); int sd_nread (int channel, char *buf, int nbytes); int sd_nclose (int channel); .C'Hv'Hv'HvX_SDCALCULATOR.ST   ph?BOMB pU?FIND_LINEID_INDEX pI.START pI.SFALT pЈI.RESERVE .RND pɈT?PRKIL p.T?IDSUS"pPAS?NUM pXI.LOCK p}T?QTASK p+MT?XMT" pCOBOPEN_LINK pI.E1 p.COBXAC `iSD_ASK_QUESTION `YSD_TURBO_ON& ?G.IXIT 0?G.IXMT 0?G.BKPT p.DUMMY. pPL1?TRAP pdF.E16 pI?SCALE pI.FREEB p;R.SIGNAL p>R?SIGNAL pdI.HEAP pЎI.STORAGE pЊI.STKSIZE pT.INIT"pCOBOVFL"p|AC0 pCOBSTPL"pCOBDSCL I.TOFREE pADA?TRAP pSWAT.NIN pSL_INFO_MAP ppP?DEFON"p>BRKFILE pI?TOFREE" p(T?ID_IN_USE"pBAS?NUM"pCOB?NUM p$OF77?SIZE"pCHARS_ON `FSD_SCROLL_WINDOW_UP @DERR.REL"pt@INPUT `2SD_MOVE_WINDOW_UP p?NTOP p6.KILL- p?UDP000010 .REQUIRE_LANG_RT_REV_3.50 .REQUIRE_LANG_RT_REV_3.40 .REQUIRE_LANG_RT_REV_3.30 .REQUIRE_LANG_RT_REV_3.20 .REQUIRE_LANG_RT_REV_3.10 .REQUIRE_LANG_RT_REV_2.20 .REQUIRE_LANG_RT_REV_2.10 .REQUIRE_LANG_RT_REV_2.00 .REQUIRE_LANG_RT_REV_1.20 p(?ZMAX p.l?NMAX 0?G.UTSKG pSCLOSE_SL_ST_FILE pSCLOSE_SL_FILE p:EX.DIV21.1"pF?SCOPE_INFO_PTRS_ADDR"pD?SCOPE_DEFN_ADDR pkC?TRIM p݄X.CI p}X.CSI pI.FREE pڤI?INHPB pO.SUNDER p+O.SERROR- p ?UDP000001 p5I.GINIT p(?ZBOT p`?SBOT p?NBOT pH.UKIL .REQUIRE_LANG_RT_REV_3.52 p?EX.ADD22.2 pTEX.SUB22.2 pjEX.MUL21.2 p5EX.MULADD111.2 pBAS?TRAP pCOB?TRAP pP?PAGE pI?INHPWS pڼI?INHPBS pO.SSUBSC pO.REVERT#?SCOPE_NUM_ENTRIES" pHSL_LIST_HEAD-pcZ?SCOPE_INFO_PTRS_PART pR?SCOPE_INIT-pcX?SCOPE_DEFN_PART pcD.TEN pO.SZEROD p DERR.TRP p!C.TRANSERRNO pӱI.IFALT pO.SFIXED- p?UDP000003 pPO.SET p?UKIL pЌI.HPSIZE .PEND_UNTIL_EXITMC p{T??EXITMC pUSR?TRAP pULB?TRAP pC?TRAP pSL?FIND_SCOPE"p@?SCOPE pMF.STOPN p%O.SCONVE p$MC.ERRNO- p?UDP000004 pċT?GET_MC_LEVEL .STORAGE .STKSIZE pDT?PRSUS pǻT?UIDRTN pЖ?PEND_UNTIL_EXITMC"pPL1?OFF p$OADA?SIZE pSOPEN_SL_FILE pEX.SUB55.5 pEX.ADD55.5 pEX.MUL41.5 pSOPEN_SL_ST_FILE pI?LINE_PC pd T.16S pݒX.CSNUM pR?SALLOC" p`?UDP000005 pO.SOVERF pDEF?ON p%DERR.USR p R.GOTO pR.SIGREC pБI.SERIAL .RESERVE 0?G.UKILL pXI.STOPM p+F.STOP pڨI?INHPW- pd?UDP000006 pI?LINEID pbT?ABORT p T?IDKIL pT?INITL puI.UNLOCK"p PAS?OFF"pSPTR"p&?TERM_MSG_TYPE p?RECEIVE_TASK_MESSAGE p COBZERO_PACKET pߛSYS pCOBACCEPT " p|?UDP000007 pO.SEARCH ppI.SFCON p.MULTITASKING"pF77?NUM p$OBAS?SIZE p$OCOB?SIZE p LANG?TRAP pN?AGENT pp?LIB_ERROR" pCHARS_OFF pCOBSTORE pCOBGET_TERM_CODE pCOBCLOSE pXCOBSTPL.DE pNCERROR.DE pI?LINE$ pߛ?SYS pȝT?SETUP_ABORT_KILAD pMT?LTASK pT?INITN"pBAS?OFF"pCOB?OFF p$OC?SIZE pĖT?KILL puCOBPERF p@FFALT-p'UNDER32 `>SD_READ_CHAR_ONLY `.SD_MESSAGE_ONLY `SD_DISPLAY pBSDCALCULATOR.DE pJX.AIC pI?PCS pSWAT.REX pX.SCALE1 pԏO.ON pn?FATAL pҊI.NOTICE .SEVERITY pşT?IDGOTO"p:T?TSKLST p{T?EXITMC"p SPL?NUM prT?ENTERMC"pULB?SIZE phI.STOP"pCOBCPSW" p CREATE_PACKET p<.UTSK p$R.INERR .MAIN. .MAIN pBAS?FLSH pF77?TRAP pP?IPKT p?GET_LINEID_ENTRY p?FIND_SCOPE ph?SNAP p?WRITE_ERROR_CHANNEL piX.DCA pӸI.PFALT pД?SEVERITY pPT?GSB pT?PRRDY pT?PRI pdE.ZERO pO.SIGNAL pIFALT pN?UTSK"pPL1?NUM"pC?NUM p_MT?IDGO2 pO?SIGNAL" pFSTAT_PACKET" pNUM_VD_PACKS"p>MAILBOX" pNUM_KEY_PACKS pe.E8 pwTOFIXED pCOBDISPLAY pRSYSCALL_DISPATCH p?G.SYSCA# p3.BOMB 0?G.UTSKB pSPL?TRAP pSLI?PCS pSLI?LINE_PC pI?SALLOC pڙI?ASIZE pАI.RND .SERIAL pI.GOTO pT?GET_UNIQUE_TASK_ID pċT??GET_MC_LEVEL p[T??SET_MC_LEVEL pwGOTO.INTERCEPT"p$ADA?NUM pMT?IDSUS pMT?SUS (  .REQUIRE_LANG_RT_REV_1.10 pP?STOP pPAS?TRAP pP?SNAP p>?ERROR p[T?SET_MC_LEVEL .HPSIZE- p?UDP000000 pT?DQTSK pIT?KILAD p$T?CALL pT?TASK pڍI?HPOWNER"pF77?OFF p9MT?XMTW pTMT?RECNW pCOBXPUN- p?UDP000002 p .OLD?TUNLOCK pST?UKIL pƐT?UIDCALL pT?TERM pВ?STKRECOVER"p"SPL?OFF pMT?IDRDY pMT?IDPRI pMT?PRI"p~AC2 p.E16 p.COBACX p.COBSTOX p.COBLODX p?CBARGCOUNT `jWHO_LOCKED_IT?( .STKRECOVER p̢T?UTSK p?TASK_INIT pT?RETURN pI?FPU"p ULB?NUM p$OSPL?SIZE p?TASK_EMULATORS_START p$MT?DRSCH pMT?ERSCH pCOBSTOP_TMO pOCOBSTART_TMO pMX.IC p?CBSYS pTOCOM p݄X.CDI p'C.INDEX" ptT?IQTSK p?TASK_EMULATORS_FINISH pkSET?PTA p?OUTER_MAIN_INIT"p&ADA?OFF"pC?OFF p$OPAS?SIZE"pT?ID_IN_USE_LOCK pMT?IDKIL pަP.EXTRAC"pFDPTR pSFALT pcCOBSTATUS pCOBXAC- p` COBSTPL.FCBS pCOBCPDIS pRCOBSTPL.DS! prT??ENTERMC pFT?IDPRI pT?IDRDY p;?SETUP_OUTER_MULTI_INTERCEPTOR p$OPL1?SIZE"pPTA?SIZE p I.FREEW p?DEFAULT_ERROR_HANDLER"pPPTR pИI.INIT pCOBCLOSA-pRSD_UNSHARED_DATA_PART ``SD_DIRECT_OUTPUT `]SD_USER_ID `\SD_UNLOCK_USER_ID' pWT?UIDOST"p8T?NUMTSK p"I.ALLOC"pULB?OFF p&jCOBPATCH" p\COBLENGTH pCOBSTOX pCOBACX pCOBLODX p.COBSTOP `DUMMY_GATE_CALL `^SD_RING_7_SYSCALL_OK pCOBSWITCH"p?STACK_OVERHEAD pCOBGET_DEVICE_CHAR p3COBERR"pdPACKET p}COBSET_DEVICE_CHAR"p FUN_CODE_ALIAS pCERROR `kSD_DRAW_UNDERLINE `fSD_SET_DELIMITER_TABLE `eSD_GET_DELIMITER_TABLE `dSD_SET_BOX_FILL_STYLE `cSD_SET_LINEDRAW_STYLE `bSD_RESTORE_WINDOW_FROM_CLONE% pIMT?REC pWX.DC pGETPNT p(.COBERR paEX.MUL"pTID_AVAILABLE_LIST p?KILL_TASK p1COBOPEN"pAC1 p.COBFLEF p?CBBADDR .REQUIRE_LANG_RT_REV_2.30"p NOR_CODE_ALIAS"pTDELIM_TABLE_ALIAS po?CBSTPR p?UNDF .REQUIRE_LANG_RT_REV_3.00"pPROG_CT-p\6PROG_ID" pZPROG_ID_HEAD p1?URTB pCOBLINSPECT p)COBINSPECT pCOBLOAD `aSD_CLONE_WINDOW `VSD_TOP_WINDOW `SSD_SUSPEND_WINDOW `@SD_REDRAW `*SD_INPUT_STRING `"SD_GET_NEXT_WINDOW_VIEW `SD_FLOAT_WINDOW `SD_DISPLAY_INTO_STRING ` SD_CREATE_WINDOW `SD_ACTIVE_WINDOW pkEX.DIV+- p`CERROR.FCBS pDCERROR.DS" pJSCREEN_ERRORS p'CFALT `XSD_TURBO_OFF `SD_BYPASS_OFF pddSDCALCULATOR"pCOBTMP3 p?ICALL32 pJSD_SYSCALL_INTERCEPTOR pLOAD_SD_INNER_RING `hSD_EXTENDED_READ_CHAR `_SD_RING_7_SYSCALL_ERROR `;SD_PUT_WINDOW_DESCRIPTOR `9SD_PROC_PR `+SD_LOAD_TIB `'SD_GET_WINDOW_DESCRIPTOR pCEX.SCA"pu@CONSOLE `=SD_READ_CHAR- p`*,SD.CONSTANTS `ZSD_TURBO_PARTIAL `gSD_SET_LOGOFF_INTERVAL `GSD_SEND_MAIL `?SD_READ_MAIL `)SD_INPUT_MAIL `SD_GET_CONTROL `SD_CONTROL `WSD_TURBO_FULL ptCOBSCREEN_DISPLAY"pPCOBESKY H `USD_TEMPLATE_MATCH `SD_FLUSH ` SD_CREATE_WINDOW_NO_BOX `SD_DRAW_BOX"pcV?CBANSI `TSD_SYS_ERROR_MESSAGE `RSD_SET_WINDOW_SIZE `KSD_SET_ACCEPT_UPPERCASE `ISD_SET_ACCEPT_LOWERCASE `:SD_PUT_VALUE `8SD_POP_UP_MENU `-SD_MESSAGE `,SD_MENU ` SD_GET_IMAGE `SD_GET_HOT_CALLED_FROM_NAME `SD_GET_CONSOLE_DEVICE_NAME `SD_ERROR_MESSAGE `SD_ENABLE* `QSD_SET_WINDOW_POSITION `CSD_SCROLL_WINDOW_DOWN `SD_BYPASS_ON `/SD_MOVE_WINDOW_DOWN `PSD_SET_USER_ID `MSD_SET_CLI_INIT_CMD `LSD_SET_AND_LOCK_USER_ID `JSD_SET_ACCEPT_TIMEOUT `HSD_SET_ACCEPT_CURSOR_OFFSET `ESD_SCROLL_WINDOW_RIGHT `DSD_SCROLL_WINDOW_LEFT `7SD_OBTAIN_INPUT `6SD_NOTEPAD `4SD_NEW_WINDOW_NO_INIT `%SD_GET_USER_ID `!SD_GET_IMAGE_BELOW_FLOAT) `$SD_GET_TERMCAPS `#SD_GET_POS `SD_GET_CONSOLE_STATUS `SD_GET_ACCEPT_POS `SD_ENABLE_HOT_KEYS `SD_DISABLE_HOT_KEYS ` SD_DIGITS_TO_BITS `SD_BITS_TO_DIGITS pnEX.SUB pCOBSTOP"pLCOBFLP"pJCOBWFP"p> COBEFLP"pCOBEXCP"p?CBDPT `SD_GET_ACCEPT_CURSOR_OFFSET `SD_DISCARD_TYPE_AHEAD ` SD_CREATE_WINDOW_NO_INIT `SD_COMMAND `SD_CLI_CMD-p` SD_SHARED_DATA_PART `BSD_RETURN_INPUT `0SD_MOVE_WINDOW_LEFT `1SD_MOVE_WINDOW_RIGHT `[SD_TURBO_RESET"pCOBTMP1-pdN!HSC.CODE- pUD.STATIC-p&UD.SHORT_STATIC `SD_DRAW_VLINE `SD_DRAW_HLINE ` SD_DISABLE `SD_CLI_INTERFACE `SD_SYSCALL_GATE p`SD_INNER_RING_NAME pfEX.ADD `&SD_GET_VALUE `OSD_SET_SECONDARY_PROGRAM_NAME"pCOBCHAR"pCOBTMP2"ppt@OUTPUT-p`SDCALCULATOR.FCBS `ASD_REMOVE_WINDOW `5SD_NEW_WINDOW_VIEW `<SD_PUT_WINDOW_VIEW `(SD_GET_WINDOW_VIEW `3SD_NEW_WINDOW pCOBEXIT pCOBINIT p,COBSINSPECT pSDCALCULATOR.DS .J 'H}'H}'H}PzSCREEN_DEMON_RING_6.PR  < #^`(`n,0&0&0&00``02000>02000J0>000V0J000b0V000n0b000z0n0 00 0z0 0 0 0 0 0 0 0 0 $0 0 0 0 00 $0 0 0<0 000 0H0<000T0H000`0T "0 @``&`jL`K`jL`,/))x)4)5)6Y) 0010110>010213201`d`4 @fufp``D@<P   Fatal Screen Demon error at PC = 00000000000 0 =HNNNYNWWMSG.00000@jD VYYNYNWWY Select recipient: select, exitVYYNYNWWHNNYYNWW` `G``` ``  DDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHNNYYNWW  HNNYYNWW `pppppzp{pCpXpOpppppzppppdpTppppp1pRppepepp6*p6 p1ppp(ppAlp)pMpopQpzpbpp;pMp>pfp-p`p>vp@p=pp8ppxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpx h p,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ hzrELA,mY KT6Unable to find directory called :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM+>?>CONBATCHNOCON@VCON@WCON@PCCON x:MEM:?SD_VM. + @OUTPUT@INPUT<@O :CONFIG:SD  ,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ hqQI (%}.POS@Lv `f `e`c@INPUTo?   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}}  SCREEN DEMON: Copyright (C) 1988-1995, Threshold, Inc., Auburn, Alabama. All Rights Reserved.``gb@OUTPUT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{¥B-ĄU[T[ŻiouIO@e?=LJU[0pr$uʼas?~ ̑3Ғ^C0ʴ ӰJȳQnt͎&{vҵҫҹƃ0ɬɎɫȮɣn26CNL0~hi^&$" rӝŠ͜Å訠Ԡ젬ɮ㠠҇.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  @INPUTqrstuvwxabcdefgh12345678!"#$%&'(yz{|}~pijklmn`9:;<=>0)*+,-. \]^_ `@     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|| `H``ä: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{|}~ SD_NOTEPADD DESCE=Exit DC2E=Prev Page DC4E=Next PageBPage !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ o? SD_CLI_INTERFACE    :UTIL:SD_CLI_ACCESS.ACL`2`ө  Error!Press any key to continue... Yes|No||  Select: to select DDDDDDDDSDSDDSDDDDDDDDDPNPNADDDDNDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDZLL :CONLOGSD_+ %'))&(%%)))&)&)')')))))(()))))))))))'&'&)&'))%%((%))())5799685599969697979999988999999999997676967995588599899  6 :(@Y xSD<< ZjjkMn u  |:O\i~z[200LM8M=   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 8`SD_ALT_EXIT_KEYSD_HOT_TIMEOUT_INTERVALv]s`v`w`K``z`Ї`C`XRedraw 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 ))))oy) pxY IL}) һN) LkNIIIع8҂xYyIYIIy) )   xyIIY  y y  ))N)i L i xI py ɇYY ysXIyi)Y)@ɂ  vxN5)8Y YpY)iI) p)ɦɃ IKnI #K|M)ӸI)Ki0isiMx@yyy hqҎ vK@yyyyy OyOCM8#~IߍY9)IGe9c ) ♈ 0yyły) ⩣OҀ XMM)x) zyyyy@y yN߱[# ɱߍY9)IFɟ9cY)! yy~_ֱyyyy@y  ˕yt))) Lx蹈f)8M&)nyyxL-)L) Y"#N#!;) N:  [yy ~śyyyy@y 3 fy)♣N  6yy ~K WyЎ >yL\Ϥ9z) Y) F-ѩxLBY)"&dVLA)Y9.) } ȂIyI cELOGOFF-TERMyyyy@yY8Eቓxyy ~$yyI)IyEY9 HNyy)py YYyY)Ix 0W4 hy89L) Kx=Y) EѩxKY)!cK4 ĂIyI c癝yKY) xK|)nKYKKi) )nKKY) yy }}$yyyy@yKB  xK6) yy|  }T 9 yy8yyyy@y  )I♻F yy) xy)9)9)9 Y99i))xy o\Yyofщy!ͻ)IЉ)) o@YyoJщy!)I  \yy |ƛyyyy@yI[)⹂xyy |y EI@⩁YY EY)X xixx iЎ ؉yy |uyy |lyyyy@yI)xJ&Y)8J")ߵyI yG8GI)8)YY _I8GIȉy ɭyKr`rCëlx)bY)8yJ!)nyy)JJJ)Љ))x)y 998yy)9)9Љ8yy)9)9y)8IԁY)Ȃ9Љ)) G 8)9)Vy  y))x )))IY9F܍9YFכ8yy)"y  y)) y9yyGΩ鿫)IY48)>8ЉJzdGG{HG)@YxIF ꀉHY) 8FvI 8Fm⩻F⹁F㉁ Byy z؎ЉyJ.yG`G\ YyHY) 8F6I 8F-⩻FK⹁FH㉁ Byy zY9)ay)) yYIIy9Y99))8 yy)y) H.)y))y  y)) yyYق))8 yy)))Y8Y)y  yY9YIfPFF倉GY) 8EqI 8Eh⩻E⹁E㉁ Byy yYyI)F[FWYyGY) 8E1I 8E(⩻EF⹁EC㉁Byy yyE 9YEF %)Iyy8։)>IiD)I9III)Iy)0Iy iy)))))))0I)I yDx)Byy) yyD艇yyyy@yF8E)⹀ )oyQ@Kxu)AY)8y`G)nyy)FFF)Љ)) x))x)yIY)GU)`FdY)8Ff)Wy  yy)))@yy)) yYI~ YyIY))iG )`8F)xY) 8ECY)iF^lx yy xyy x i9)) y))yFY)Ȃ9ЉYC[Ďhyy wҘyy wɛyyyy@yE8x8DR㉉Uyy w9>yy wyyyy@yIxyyyy@yYyEI8x8D ㉓@)8dyyyIyyy wF9㸎ނyy w1)a w*yyyy@yIxyyyy@yYyD8C㉓@x)฻yytIyyy vݼ9u8yy vțyyyy@yD8x8CQ㉋@)y?Iyy v9븎5yy vyyyy@yDQxxC㉙88hYyhщy8c@)Iyy vI9xyy v5yy@yC)IAAYyRUC)©YA䍉yyy v yyyy@yC))AʣAũYy"UC)©YAyy uȉcyy uΛyyyy@y;ny%8AYAYA/yyN8yABکAکЉ'yy uyA+کAکЉlyy u{@Ay)YY8yyyy@y֎ y YN9yy uFwBN u=3C)xB8))xyyyy@yǮfIyytr<8s u tBY)xBE)]8yyyy@y\fÎgyy t t3B)Bx-)8yyyy@y)\ec4yytbx< t ty))8䘹A)xyBG)♀)Ax)xY8ɇyA)B )♣A)B) )))cA)B) ♠yA)8I?ˆY tA)M t  t)A)x) sȉێyy syyyy@yWyA8?w?OyyK8y?dک?<کЉGyy sy?Mک?%کЉ0yy s#yy syyyy@y.y偸?^yy sk) seyyyy@yԎyI) IyIЉ>YY?!9YYt@Y#yy s1 xYyy s )Y>>>@) Y9999I1ۂ)>)$QY>Éx Y9999I ۂ)>yx>p>lYYU)@)I>V>S>RIISy9i) Yہx)yy)YI>I؉ yI   Y?؉y)@y)ɾyIi8 Yy1)ɚyIix@) @CONSOLEI)\yIi?Y))8>II)@Iy)ம.yYY&Y>Y8I)څyIi?Y)8)>iII)@Iy)4yYYY>JY  :2IYYx>-Ixy{y>y8IIyI)@Iy=x)yY)I8:PER:yIiYƉxy!8IiIyIYYy y    I  Y Y   yI ѩx  Y  Y y Y y y y Ay<`йЉiyyIYY)x΁x00)8ف<p8I< .9GYYbYIYNY8+ͼpR)Ix̀)7 = C)@<) )  Yyp@x;)  YyX@x;)  ;9Yy;@8;YY1U?:@=)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 )ռn\)oTI§IioBII387o(IYR )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)⸣67:):IYSI^Ӹ Y9999I۩Y)I5Y6_6]IYW6S 69)9Y99y)606,:$):"IYSyiY v)Y99Dt)xyȉ yyy9 BYi8) t@CONSOLE;)♻9) i )9)99)Y999y>ظ8))@8;)8I9)89)k") dId dIY9ix9()@9s)IyidFy YYYyjyi9f)9aYYUj; ))8!;a)⩻9K) 895)90YYU;C)9j)yyij Ix9 ){ Console name not found in Console Types table or out of range! Correct SCREEN_DEMON.CONTYPES and then MAKE_SCREEN_DEMON.VM 4ώki  )`Ii4Z)} }8)8YYUIY99U4)c8)4x489%y) YYyi9Y:)ʙ)  Y)ʙ:u) ʩ8M)8IIYS) ʩ)ʩ:P)ˉ܄Y:F)ʩ) ʙ) ʩ)@ʙ4 ǰ)I Ǿ) ʩ:&Y)ʙ) ʩ)ʙgִ") yym.)0Yyy|NY9)/yYyi7)7ߩYYTUYŢ)9SYŘ9Lő9EŊT969690949.95BY9Y)!Ii7lh)9999)99)99)99)O99B) YyyiYV9ϼk)nyy9ǣ9¤9i끉Ҵk)nyyi9y) y)R8)P).yyYya YYydyiY928ϫ7I))I9 9 )ٍ2߉YYƉ)xٞ)IixI*Y9YD:6)6YY3U  <  Iٕ2A2Ή)2)@x2Y)˸2 P8Y) 8%,v8Y)`x2)]U sy0S)x0vfYNy2\))⹂)8v2K)82F)⹁xY2:)25)⹁2-)2'IP)U2)©2x)@)2)ꙻ1Y)8)x)x1)xUlσ80x10ϔi1׈yy18y IyY)艆Yɇ))8 ) +)YZOIyYyi )ZD+q),깁Y9Yi ) Z3IY9+Z)yYYY))1d)C)) )y 9)Y9)I9) V() ٧IiY9)xyYyyy0ѹpxґIy/+/*0II)) YY))y晅y)y.Hx.)y.x󸀉y Y) ≃8i .ɂYi )II)y)8Ή`6 x։`@ p8? xYI9YY 8 iI)y9^)xy) )IIyiɂ)-΁x);eiyI IމYYxYiY)$Kxi 幥pi =x)N;8yI IމYYxYiiY5$ € 幥 pi)-ɨ8x-  9Y-08  )I9x)Y9晁)Y9y  щx )I  I x))]Y9-ex) yxxy  yi-G) YYxy-9ɂ  i)-$I))6)Q)SIIi Iy(΄)).9Y)T9Y)M9Y)P9YY9i )@9IY999 [M9)9ShSXII 38,S>Yy8x ) 9.I9Y99 9R e9)Tx9f)`ȂCannot create temporary memory allocation file in directory :SCREEN_DEMON_3.60:MEM Cannot open temporary memory allocation file in directory :SCREEN_DEMON_:SCREEN_DEMON_3.60:MEM )O, ˙8X,$IO, IIYyBU,X)# ,I)8+ʩ%x"+ IIIYS+)˙)YY+)ʩyY++Y)I+9Y) I),:I,yI,3ѹIyyI,)y㇩)Y,I,-KY)8)x,I+,E+)+X++灙X+) +ۣȤo-) .v.rp.xj,) o+X++ḣ+8X+ ã+ 9) UgIY9Yyi9Y؁x)x),9iY) UIIY9Yi9Yx)x+++xșoH))))19)|-6OI+ +9) Y\Yf8̶) LOO o)I~+!*كxL6 o YF  WARNING: You are about to be logged off due to inactivity!  Press any key to clear this message and avoid logoff...)* Y8X \4) yi) Y) )) )I*By+vY)*P )@+g) ;ߣ+^8@ +Z I I IљIx&ΉxRY8؉y)OyIyљYi+) 󉈹8:9Oy)^y*)w8*)Y)* YYA)&[)♻&U9)9))I9 Y99)&482Y)r)8)^y)@*)xII}'y)ZQr PiYYx)%&R*0*\)!♻%9)9))I9 Y99)%YY)**%9ɇy*Y)8~ÎK͎Љy')Y)ȉyѹy%lΉxPBYy; xYIiى8)Iy%=ΉxOYi xى8)I)) yyL)IyC)Iy)}Y)N)IM)Iyѹy$ΉO0Ή@ xى8)Iy$ΉNΉ@cى8)I)))) yy)I)) yɾ)Iy7ѹy$kΉN@Ή9 xى8)Iy$JΉMΉى8)I()) (Y)"{9YCY $9)P99$) 9Y9999   I9) yxـ [9J)@m#Ή)} ) 9^xUo8O8#IḄ ~kH?k=98k2)9/)8&x'Y)#wΉ)NA|YjҁYH) )XXɇ)9$YY9‚xI9xCy') z*yI)Iy')i)II}Ăiy)IX1I)IXI)i9Y8I)&ڤI9I )'VJ©&o)) ™'MY)™I))IYi9oy'.) 깈8U))YYxI}^I')Ki)II})y&))i9YYI)Y)ʙ)y&)깈8))YYxI})I)) )%ȇ)&) %r%rYx%e&) ) &)i'y)x9)) 9)x9)>%59Y%sY`%i%X%[%)%% '&8) x&1) ^E)Ix̣&#)i  D EFEFQ0 ))&Y)Y 9x%Y) f)yy)@ށx2x)8n$ʦp8pI$$$)Iiǎ)@IY9Uxy)v$ y)R8)P).yy).9Y)S9Y)D9YY9yYyN" Yi x )B$bxYYqI$R IY38u9 >H)IIi IY9i9 IY3x$&)9yΉ y?x 9)9 )9Y999Y#N08  Yp#ޝYY5qI#)Dxy#Ļ# 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 Iy" I 8))8Y) Iy IyyyY#I" xY8y#9y ~I 8yIYYNI9YY򸀉Y9 #)x ## #q)xI)"i0i\i#Rx@yyy MF [@yyyyy 6iy$ #$8IߍY9)sI9c) ♈s yyUły|) ⩣$] ")x) yyyy@y Ҏy$X> >ߍY9)I,9cY%)  yyֱyyyy@y  y))) "pxS蹈)8=ʳ")nyyx!)"N) YWR6) #  Hyy ~͛yyyy@y  Syž)♣#  #yy ~_Wyb .ey!ͤ9v) kY) ѩx!Y)9!ӮbK)Y9*) ȂIyIcELOGOFF-TERMyyyy@yY8vቓxyy ~1yyI)IyaY9Nyy)Z YYyY)IxWȎ dy89L) !NxY) %ѩx!:Y)9N!9ĂIyIc癝y!Y) x!)D!QY!M ) )Dz!= ) yy }yyyy@y قx  8 ) xyy$ }f 0 yy8yyyy@y  )p♻" yy) xy)9)9)9 Y99i))xy XYyXщyf)IЉ)) XYyXщyy)I  Syy |؛yyyy@y)⹂xyy |y ⩁YYgY)X xixx ii ؉yy |yy |~yyyy@y)xY)8)bxyI y@88Љ FB)@YxI ဉdY) 8I 8⩻⹁ ㉁߮Byy zЉyy Yy$Y) 8I 8⩻⹁㉁nByy zY9)ay)) yYIIy9Y99))8 yy)y) )y))y  y)) yyYق))8 yy)))Y8Y)y  yY9Y2.܀_Y) 8I 8⩻ ⹁㉁ީByy yYy𨉎YyY) 8I 8⩻⹁㉁iByy yy9Y)IyyW"8։)>Iib)I9III)Iy)0Iy iy)))))))0I)I y+x)y) yy艇yyyy@ys8<)⹀ )fy;䉉x)ڄY)8y1)nyy)7)UЉ)) x))x)yIY))`Y)8)Wy  yy)))@yy)) yYI YyIY))iC)`8)xY) 8<Y%)?4xyy x)yy xi9)) y))yY)Ȃ9ЉYਉ_yy w䘉yy wۛyyyy@y*8x8㉉yy w95yy wyyyy@yIxyyyy@yYy8x8㉓@)8yyyvIyyy wX9㸎Ղyy wC)a wI؉ yI   Y:?؉y)@y)yIi8 Yy1)օyIix) @CONSOLEIC)yIiY))8JII)@Iy)yYYY+Y8I)yIiFY)8) II)@Iy)x֏yYYևY쀉Y2IYYnxIxy&YY]Yyy8IIyI)@I?yx)yY)I8:PER:yIiYƉxyÊ8IiIyIYYy y    I  Y Y   yI ѩx  Y  Y y Y y y y 〉))33I9?9M)3(Y9?I9M)3Y9?9MyY9g)) )Y)8)i W)I؆fiI9giYI Q`ۂȉIY9Y9N9$9%9*9=9>) 9& sYOY9"9!)9II9Y^y)I9)i) )ۉYiکi)cYfdbihQRIKPPZL 3O)?I9yY)')Jy)))@yi9Y9)Y)0yy   Xyi9"9! ))x x))x)xi)9!I9$9%) i yX8iI9$)!i̹yII)! yyi9! OOY y)))I9) 8yY)ȂYY)) )ۉYioکiЉ)) )!iyR)y))II$9Yȹ9 )7i))I9) E9i!yt)yi99999xޭyx -y)I)yĭ yYN YA)x)yi9&YiY)x)iƁY_)) 8Q_8i г)@xiK -y)I)RR yXI^i Oщyy n)xG)?8))Y a Z>Y)wX#Y)@Y  iifUTL\) x)( 9)@Y8 ,) ;) I Q)I9=Y) ){ vm:ڋyyi  )Q ߣSPL۫Hy:vyyi3 Y9=) )ˉYʩiM+ y)Sqo)Yys™x_))YYYK ) )?)IY!Y( +)}8S) nx)I#Y9)9),&iӸY  E) i9>xY8)x`9N) R )i)?xہx |X) 6y)?xPuJ ) RHDBJ< ) JPy  )> )@Y80 8-Y yi)? qx)Y)əy9yX9) )9y Q8i) yY9 y))9 )  yY9(8>x 9(  8 y P Yy i 뀹 x ܑI9x ة8 )x9( űI)¹ ~ y9(9')щ  ) )>)=8Y )'i )ޮ) ^I 8)xyY9YyyiyyIyiЉ)0I) )) Y9YYi ) NՉI5)ޒ)*)I_ 1)( F)*щY9*y9)4ѩ̹$X) )yyYi9 y))9 ) ) i9 i)?)'Y Ў~)#X XI ]XљI‰8y)yYY Qyy)i)>8 բxtxY)ȫYYS) iX )IXYXSIXȫY Y)>)=щIi)'y )   )=)>) )@Yщx. m) c8 @)'yi,yIii y.)0 m )9 )9 ) 9) 9 Y9)9)09x)) M)ȫY J E J =) )x 9 2)YȫY * Y8i)9)9)iiI )9)8)Iyi9X9y) )Iy)yi9))9))X Y S)) )9 )) 9)) x I8Y99 9 9  +xXY)I)X)I9 9)ȫY9 )) )XXYi9  ))y))?8) G B GIx) R)yi)?) )YXiYi YYȳ ȫY XI)I  YI)۟   )۽Ii)*YX%Yi rxYY)ȫY)XI) I  YI؈)' 98 0+)x)! & 7x)Mй8 89)!M w  ) Oщ)$)%)!8)xx)79N88Y)x)79N)"X)x)79N $Y))?щ ݐxYIYC.y Y)xI)й $8* ))) 8o )8i +9i)YBy)';.+ԣyyi9I)H~)I%ѩÝ8$)  Yy+NyѧIyXߣ􀉡YY I8)Yx)Y8y*yyB)@Yil9Ly9x)y98Yy9YXi)Yyyi)tՉI0I9>YzLiY9>)L u γI)щ li)5x¹8)Mй8 ~*))ڹ8)i-)"i)79NyXڸiX!x ~ ¹)!)$Xѩ } +Y9)9N4 y ~xy9ȥY)'Y9'y9 u@ +)y9xYy9)'YY =iYR) Oй k)"yy9] y)xi O )7 8Xi)!Y8y O)IyiyyiI)!Y O I)&y9yYyi O9i O)) yxy`)i9)xyy))y̖YxIYȃYYYiЉI)8y8iX9i))$8)'x 8)?) )88pY))Rx))yI乡Yi8)) IH8YCvx8xi)i)[) 8I)8w)N88i)g W)IE 9D9C G9B 9A 9@)@)A)B G)C)D Eʇy)yY)éYй8xYЉ艇yxxi)')!yYxi)')!yYx)A5y۠O) )ۉ)I)I y)Ii)  ) I)IY9)yΉYYi)i)i))Ii Yxo8oYy )9  ) yyyYyi  Y9xy)'̹yIIy9) 9)99)'9yy9 Çyi )YiI)X)d84y򁹒x|y9")˫ʮ yd8#YW')YJQY; Q9)9Y99yĵ))Y84)ʙ)8xx )9Y9yz)8 Y99ydi))8)YYKi Y99y: ]YyV)pΉ) &35yہux`y9")ޣ ))8Ňy:8j"Y-%y)YãN YYÙUyI)8 =YÀNi)Y)9(9') ˪IYYS) I͉Y9Yyyiq) ) ))Qx)> |9Ys p))I)))) ))) 9))8|YY 9) 9))~YՁY普\8ޤߤޤݤܫI͇yiщ8)'8)8yyYQ YYȹ8yYxi)'YYyyȇyY9Y|yzqpo!m)X8SNxE8J詓?ੀyyYQ9 Y2/.'ȩ8YyIYy>ЉI 1x)A8虑8虂긩鉸่xYP Y޼ۤyYP YͬʤYyyIYyЉI)Y))Y݂I ix))Yɣ l̴fqhy+cR)Շ))ѡ98) Yom  >g< 5 0  3)*) 1( 2%NJi<O98) )p))<йIYI i))&IY x))Y 98) ڙVRTHF>}{+l9x) F)`B)ۣ) y|i|yJ o)c)_i\ D A>I6BYYX@B.*YB/.)x<)x  +)щ )XyKYX㒉y׫XYȃYyYYəy>ѳѻʧIyXY鉃xyYY'!YY9Yyy~X_Y}ȃYY|K8pIYq) 򩁩eKxbҊ8) [KxN8yJY x>90.21 06)Y.-) ~89Y x鉉Yy&I)xK))iI9Y Xщ8)x)x x 8) yI)$9)Y)^9@Y9)~艼8>7 ~tlkjihgfed R)))) I OyYK K?ЉD F) ? )Y 7)Y 0)湎 YIYx   Iyy: ~y XYȃYYЉyȫYجЉ) }) }) }ޣ) }֣) }Σ) }ƣ) }) }) }) }@)i }ni }nzy~) }tv)  }h)QYSQS)EKJ<5376OyK 8x) )8 8)xYY$x9#)) 8n )1Y)x^X҉9)9)O )1)Y^Xѹ85YY)I̳ډ){8) z{ |yWpO |sqKdXE~SYy)IyiY~NX/YI*A@yYyyYyy36I-9Yiyy.) |$ | y~ YYyyY yy Y9IyYyӳlxͫI֫؎ώ)x9)8|F zG|2=9+'y|, z-|Y8| z) ©xY)9)9Y)Y99 y yףY)Yߍݳ)9 yƣ鸁Y)Y󾍉):Z yxYu)Y󝍉t):G y yf)9I)xw yXY=8X 2Y)F "Y)a8?8 Y)28YYG)©&yY#YY y -))9Y x$)9yI:K̹@Iy e y)Iyyy:5)yyYYI)9YYɹЉiyyy6yŅyy1HyGy%yyYyYYy Y)BY)89)Y xCa)9Y)o9Y)#9Y4)yyJ)x~Y))89)I xGFbo9@) 9YYމyIy0I)9Y0 = {@yY/-CY)8))Y N)鸁Y u)89j)I  )  ) ) ))y9 tڣ)89)I  )) t zФ )Y平9 8)Y平w)i9 8)Y\)i9 vx)YmkD9 )Y[Y2)ق@9))ق@9)vy*YY)yyyy Y9 ))I)Ii9YY)xY8yYIߪX)xyyyi9yy ))I)Ii9YIY s_)89)IYYuw)9)O9YYX툫튳`~xuv)IpYVK)294 G=; ) )9v)) &扉x s>FAYB9 yA21 x)Y&$平9 8)Y)i9 )Y9)Xy8y 9 )  xأX와) i}I칁) ٢y)Y99)9쐂Y9)99))1Y9Yy 8Y)9g :^Yt\7Y2z) rQy()999)Y9)9)9Y9V) Y٤X8 Iy й8 x)Y平9 x)Y)i9 ꩹)Yፉ平9 )Y̍ʆ)i9 wƣ뭅x)륕x뚫똉YYX땫뗛ys}ys)_ ) YT qy 8)Yyw平M9 8)Ydb @ 9)i9 S)YJH平9 x)Y53 )i9 $)Y平9 )Y)i9 w)꿣) 8 ӣ99)I9)I9)y9)y)ꮉYYXꬫ)yryxꑹyꋎrn ) Yc p)X)t)pYYXmo pi v| )Yge平;9 )YRP')i9 A8)Y86平 9 )Y#!)i98qy)yqyy鑙yqY o{)9 &)I21)qYȫY阭yz鏣X(8{^Y)8霱Yio oY騣sX 8{B) e) ) {0)8I鄤9z)YY)I}{)FY<;Y o?y2Y6iYIyyy艣*IIyyЉ)tz 9)I.qp,)󍉣ȳYЎpުXXߪiyyYyڪX֪Y豣XJ8zY)yyy艣IIyyЉx賢X诂Yy艻X"8zXY)nYyyy蘹IY9yYy nz>)9)Iߊ)p_YmȫYFy"Љ=Xր8z Y)JY nNq> nEy@I4ꉃxYyyy艣3IIyy#(Y)sy 9)I1ts/)oyȳY׺XXiyyIyXߪY纣XS8yY)yyy艣ʑIIyyЉx缢X縂Yy璻X+8yaY)wYyyy硹IY9yYy m 瞩x)Y畍幣i )Y炍瀆VifY)xU))Q))yWyYC)IyY9! ) b) m9 sL =8)Y42幣 x)Y!iY))YYY9 ) ) l) l) lڣ) ʤ x)Yύ平9 x)Y溍)i9 橩)Y栍平t9 )Y拍扆_)i9 rT)gy9)ɩxYYI))Q))yKy.938)))x))XYY9n)yyn ) 0) Y l$Y)w)@89)I- kFOw)9J)I<;)mʣȫY弻囻X48wjY)iXYyyyy艣堑IIyyY9 kwG)9)I芉)mhwrȫYiHX8wY)-9YYYyy艣SIIyyY9 kKFKFJFHF[FIF\JKHI/) k/') k'yYy ) ) lyYY)Ix8 iͤiIy)@8Pع) Y)x)8)Oyسىx)IщIѹ C8 8щxykIYYIyI)՞I  )iyIY؉8y$X?8)x})щ/ yىb)8(hy ɲ8YIiX  ))`_Y8UyY)Py y yF))))  )8))橉xiޣЁYyʎ8Yۣ缇)9>I,88x2Հ綀I簣) y烄Y) u)) uu)Iι xIu))@8@9)QÂx}AY))}y)dɝy)[)Y)xt)) ))mтt)8p0) ) yTIy09x  ).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 Y9091_)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) 90Y919293)494)595)696i) x})G) I):xI)1Iy 3))x  y y y  )щx9"9y))Yylyi)YoKY ))8)x1)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) ) ))x  8 gy)Y)iyyry)  0 1) 2))ۈiЉ)8y )yຣ൤)))  yQ)4ʎw)W)|)  ay() 2).)Sщx x) %)y))Y9)I9*й `)x    x 8) ~) yy0Љy'' )߁) ~)  ` 98)8 yy)9999)9)9Y9 Y Iy й8))8)9 ))y߂9)x ))ym9)  ) )/))8) )8Y)y>9) )8Y))Pl[)@yy9) ޽) )ᇩ))) )i))) )))I9))) )i))) ))i޽)I9[) X) )|))) )i))) )).ނ) I9 ))) )i))) ))X) I9 ) ) )y0/y ɇyyyщyy )yy y )yyYщx yyyਹyګ٩yԣ̀y )q) n) y  ݭyݨixݠݖ8Y) )Y݉9) 6) yy88ytYyyj88`_Yyy  xKixDy) ) Xyy)0YyyY9Y)/yyYh}h{)Y9998)I9Y99x)I99Y9)ܚY)@ܖ)@I99Y9)Y99I9)I99Y9rY)h)`) |)`)8n)J)E)>) 5)@)f֏i$) ) I9Y9gÎ/)Ig) )<9)i|)͉1Yy&yY艤yyyi`)x9r)YyyY艤yyyy9ghI)9YY)9'gWI)9YY)9gH)ꩴϤ1y)<۽۾{hm9xd9))ʩ۞۝Yѹ8yےYgۍ)9Yۆ)8zYOu*)Yy))J)ENFS10OFS00 FE))[  iy҉8?G}y) )"I) ))8*  iy҉8|Գy) i)"Iڪ) ڧ) )ˇ))  0߬ 1) )8 2))Έiˣ`) ]) )))  8)?yy йI iѩ)X))) t)8  iy8  iy҉8Iy ) I)Љ) ))  ѹ) i) Ii) ٿ) )㇩))  ѹ8) Iy) YyY y) IiyYـ) }) )))Ȯx8y)\)Yًٔйx)ȮUxـyǤ~ )Ax)-)Y xYpo))Y9 9Y)/yyiO йYJy  ) 9 ) 9 )9)9)9)9) ))8f])@ xkq )8)8xIYyI8)Yi99)x)xxI8YyI8)Yi99 ) )xI8YyI8)Yi9)9) )xIYy)Pe)@)yIYyЉi9)9)XYX)XYX y9)XYX)XYX y9)i)I9) )i) I9)Y9`)/)9)9 )/ 8I   щx ~Yi x֤) ׉)  щy)9)) I sy yYyyyi)I9I9yYyyi)yI9R999I99 X/)   ) )8)ꙃ8gbKy yYi9 y   y$yYYyYy铸yyIiU  XIIIIyYIi)֘Y)@x 8  )x )y)y9) y)y9xy֐ 8)99)(93ր>}@<xBI9D`x)(>@@@<BI9DE  I9 Y91:999 )/I )09)19)29)39 E)1I)@Y99)295)396II)y)i9798)9йy;b߬Y)Y11Y:E94 EIY92)xb)x*Y)xv) aiY)x ~ )xa  ))8  ix 8II8 M iawY9-9) )aq) )լY)ar)akaii < BYx z <)9Y)F9Y)X9Y VaK Q<aC)9Y9i < BYx I <)9Y)F9Y)B9Ya  y)09Y)yY09Y)1))9YI) Iy))Q))y`硩yY9 8Iyi)-) i`ىI-YIi BiY8yi< D<X6)9Y9X) )  )yW YYII))))  8i)3)X9XτY)@Y)ȃYY)OxyIyIIIX9| E)2))V҂I9 E)1y)3)9XY)8}ș)@8))5x))6))i9}))i@9})2)x)Vv?)9@Vk)5Vg)6Vc)1i) < BZi ى8i)88 9iIYYY9DWy)09Y)99Љ)19W98)38) )`9)D9)09yiY9&8 +Vg) )8 8)&)8 I9& + I+y)9()&9'y) )I))8yi)IYQV 8) )i)I)x)Vy)iIyIIIX9zG))9Yi90- < BY i <)9Y)F9Y)CY9Yii<3U) yT)i < BYx <)9Y)F9Y)^9Y<T)ʩyT)i < BYx <)9Y)F9Y)]9Y<T)ʙyV[)x) )xI))8yU: 8) )i)I)x)U9y)iIyIIIX9yh)9 < BY1i <)9Y)F9Y)JY9Yi<T) yy09YyY09Yyi > <@B)) d))Z)9 )9)9  )9 ) )9) )9))9 )9)9Y9 )I9  )9 )9)9 ) )9 ) )9) )9)I9 )9 )9)9) )))78#)@8)I9 6 8 Y)xC)dY))xY yY)0yi 0Y9Y)=yyiY9 1 )090)191 2 2)IiY) )ۮ:) 8) M))) 8iy)XI Iyyyy00yi)  Ƽ蹊)0))XIi 90I9 i xi  ɉ8) y)yyyyxi) Y 0yyyxi) `)yyyyi )0Y))Љ9Y9 普v))8G 98DYȫ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 ɬY)@8RYI hۂ щ)5I9 Y9 9 x)5I9 Y9 9 8)5Y9 9 9 I99 Y9ĄY)@8RI hqۂ)  8 )I98 )9e99)9<)X8i щ yyyi8Y)9<)9e9 щy9i) щx))@x)}y)96Y9=9>?GIK9f9g979;I98C)e) {)Yi9ep)d 9iY9΁x+)hxY 999 <Qx8x);Y)) d)I99 9 *)) 9Ɖx)9<)968i y999iY)8灉8Į YڣãQld) xI9 gY)8) щ8 xi‘I)й nQ7)Þ) xy9))JSЉ)8L)II$YQS^SZG9)@y)7)IY)@P꩹UYP щ ~S ~oi7Y)P))) 889))Iڂ})8L9 ) щx x yɂ]щ)x)8 Ly`8Y99I))Y 5yIiI9 y  щ))Y9I)) 8)I wP;I9 hP/yTYyyix) )Y$zY)8r) xYc%h)8A)696P95)I9Y9= eE) 8垣18XTY$) $)x)bՁY k) 9) Y)b) ) I )Y)Or)x)P8 5)P3Tx)h S 5P%)y9 6yyiP i) )ˉYʩ)ei9e'c)j[Y)YY 5©xJ))YYY6fY)Ybxa) )IK))e9e щ)=9Y9 ~| 9)) 8)I)ӸYY)Y2a) i)e9e}x)yI) } щ8y)=)yyy9  9yiՁ)x>ĄY))at)  ~Z)ق zY)xYaT2x8)i)9v ~i;)Ya`) )a'IYS)hx) 9Y& ~#y) x+) RRR) ypYlMщ8y y8)Y8yyY999y9 yi> y))) Y)Y)yE)R)iI IZ xIi)9)9   w) x8 )yy }e$ x)e y ~  y yy'{  8*,)d y ~c ̹ y yy'O)Pڂ 8 )I9J I9K)9L))*"9)N9yy)i)t%xI) y }p9Y)))) }YzY x  n)Y? 8aYY[ VYNr Gt r)Y t9 Y6Yx ,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)Ix9tB9?_2A9G9D)N)y)yy&)J))y ;)y 4 ? @yy })c9") x ?y z ?mx))x)qx 򁉁8))I98 򁉁8))cI9 򁉁8))cI9)c9x)c98| y |)c98Y98)9c_ y {)c9)9x)9)c P( x=9 y |=&?)).Y RT yIIIIIIIIIT R)  x x)Y 8 iy  )  x  yIIIIIIIIIyT RI9Y Ry y 8i 8)$ y{xi89$IY9)@ yIIIIIIIIIv)$)% x)$ yDxix9$IY9)I yIIIIIIIII?9Z9$ Zy%} 8)$ y8i 8)$ yxi89$IY9)_ yIIIIIIIII)$)>%/ 8 yIIIIIIIIÍY)0Z)y y)&y Z)% yIIIIIIIII<)> y x y )  zI)9)I9 PY $    ;)Yx))@ = ȹ8)Y yIIIy)  ) )? ?y } yIIIyI9 yIIIy I9 I9 I9 YI9 ) y))Y89~9z y))y y)Kx y)F)) y y yIIIy) yyIIIIIIIII y))c) yyx  yIIIIIIIIId y)>)c) yyV /Yx  ~ ; 0 I9y8 yyIIY I yY9  8 I9Y) y))Y󩹇 X 8))@8Yѩ𸇩)ʁćѹ )ϙx 􁉁x ѩ )Yx)2)ey)"))F))y"))c))ye)B)yY?????)l9隤9鶬]9̤ZU$\`9\9Y)Y  )9) Y y }l 88ѹx8y ~)y̩Yʵyy }@鸩 ))  )9)y) )y!A )L)6) ) yx)^)6)) y))) ) :<щ8\)YxUYй̹ @щHY x))?yyR :7y)x))?yy9 :'yyD) < :ʸa8A )98x))!8yIIIy))x*8( >))I ))I ))x) ))9x9)BSyyi)DY Dx))888) y }8 }8s y }tYg8ca\)Ux IYx)ϙ8pj y vL) y x ?Q Kyy uP ~ ))))Y YݫY 8 )Y) K8) )@  YY x)ɩYyy xx))Y ) - I'9Qyz8)) y))yYĮ晤tY􇩅Y9y)iyYyi) )妮t-3)Kx) I |)Y 8 |$y yf) sY)Y V)I J)) ) )  yx)  y)޾)  y),Y)) xMйHrHjHbHZAy9)PGx)9) ™) ™9MV)8)xщ8)8Y9) ™) ™ )85M!)) )YMѩ8YY)ѹ 9 )fL@IIe3KYL̴ݳخe089Ήӳ)@9Yye89F) Yɇ8Yy eeqIWARNING: Unable to set SCREEN DEMON `@ON Ready For Mail' flag))ѩYye(qYF)?v;4IIY9i?Z?T)eII):9YY9ɇ).9)9Yydɇ)Y9yd)E))N )))N )) )@ lY oIx9 * 99) ݊x9) Y9i)) y) 7) ߇ x9Y99)) x9)9 0x)) y) 8) ѧ)E)  ܁ Y889) 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.=YIY9i<ԪIIc39)  GUnable to open SCREEN DEMON Stamp file SD_STAMP_DEPT8Y4FƳc092) YycsqI LUnable to read SCREEN DEMON Stamp file L;IIcJ3x悸9V) I ~B8FV Y 8 ?xY9Yx x븴98) F,Yyc%8~Unable to obtain a message number from SCREEN DEMON Stamp DeptEYyb%f}Y^E޴b089*) YyCbq yUnable to access recipient's SCREEN DEMON Post Office Box) :& )@j9)D9I9YYb] Ȅ)C4湁Y9tm:YCIY9i)9) 9Y9YyP) 9Yy) yyyiY9)N)8 )Y)9yЉ9Y) 9Y)yyiy)Ny)8)YyЉ9Y) 9Y91)/d9Z)yy)&Ii) 9YJ89.)yyi) Ii) 9Y096) Yya r9>)  iUnable to write message to message text fileUnable to create message text file )@8y) Yi)@Yya=88_) Y Y9iw9r Y )@9I9YYa8)99)9)LYyG`‚)=yx)4Yy/`  )%6+9)+9YY9Y)9YY969Y`LYy`M{9)  sUnable to obtain use of recipient's SCREEN DEMON Post Office BoxC))8))@)Yy)?IIi9i)9IyiIiCv)@)i9)YYi9C`Yy`7Pӫo{TYyɎ`"q)A85r9)`I8x)y&йxzނx6 YI9IiY9ɇ.BOX)yYyy_!yy))-9Yy)i9pIyy)-9Y)) 9Y9YYyyy_yĩ)):9Y)):9Y)yiJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECYy_oÇɇSD_INPUT_MAIL)i)H)lE)F/B)3lx9) R *Can't allocate memory for message line inputͮ[ t) tY y찮(})~젮9h)"Y9yYyi)N)) )eY9yYyi)8YY9h)")Ѯ 98)y88m8 T9x9h)"9)9Y)9Y)9YIyYiyi9)% )  :x ! $[9hy)ޤyIiih@f¹x9h~x1IY^/Rxx J ) Iт$) IǁY ?49iy) Y9yix 4Ή@ONΉ@ALL9i9)]I) )8[PYIYyN8Yny8p ~ -' s)Y)N)4yIΉy)􀉀PYIYyN8Yny8 ~- 3$-HD)Y)N)J )9ӁY  )K)ѮE9)y)yx8 } i ~ 8 } OI)ӋyY9 K )Ӌyx9 )KY u )ӆ8Y)i9ӁY K Z ,)֮oYIYk8xx }#8 -v)8D蘮%)'`)I ) 9Yi)y Ky)II) 9YK8Y9ih@ 9hYIx9 S) ͡89))))))9)􈸣9y)" yYyyix)x9)%)) ͅy) v |d89))))))Y99))x9ǣ9y)" yYyyi)ȁ98) )) ͅy)h vg  p; pʮ ͮj2)F+)Hg)5s5"oY9vI9dx9 Y)RhY9  YP Xy普hlyy  Yyyi iIy) )йxx8) >9 )J )|9Yi)  x 89hIx)|9)Y)щY33 )" Y9i ) i_No Post Office boxes found)y崅yI9,)i8i 9)i8i@ON@ALL)@)@Y9y/)IY9iJ9 )@9I9yYx 8txY99()Ii IY9iyYx))9)@9)9YyYx )9YyY)Ҭ(J Y9)9I9yYnx)):9)y 9Y9Y YGY)d y) Y9i )y"'IYY 38Y9Ή)9YYY )Y)Xq) )JFB>"]J)aL9) ٸxUnable to open Post Office directory! Stamp Department cannot be rebuilt!9;ƁY9Y)Ii Y9999 )+9 Y) XzYx)9y;i;YyXdP)~ŝ)#) e7)(4wYF %mB mţ-)eӂI9  Unable to allocate memory for notepad page!F 6Y9)YIi 6):9)D9)9I9)x Yx F)In:IIY9Yif F 6  YyW)`9)9 4) y~!)Fn 4Y)9i)99)0Y)) F)yy 9)Y@8l) mYj Fhe)@\Z|Sy)@P Y9Yyyixx8݃ߊ8 m S 44 J 4aY4 =i ~8 x | UoO"UϋyxYģ@ Wyx)@Y >xY) iY@   ~m) 4Yy 6VE F8eS %kI kؾ)&) c yi 6 F 4 YyV‚)8Px F?)yy) YY9YyYYy@xyi F: 4@^yI) Fyii F?) )9@Yy 6UÂyi F)Y9yYy))>y Yyy!))tb{تIYUR8L)`9$c)I)Y)Y)x),9YԮIY9Y9i)$)b!)ԫ%΀8d;) y)v YyybxyyyyyY9)98Y  )(v9(%(xe8oI))Vӊ)N),Y9 )098 Yѩ8ȩYiy0 9óy  Y҉Yiyy8 +X Y x +F 𨹁8) y9 Xx  yy   )9)ć) 􅉁IyIIIIIIII򅉃Iꇩ) 􁹇  )X YB y Yi 𑹀 􅉁IyIIIIIIII 𩙩Y yyyyi x  0x9y)YyIyi j  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 Y@  y YiI9) 9 I9 I9 YI9 YY9 9y)Y9)Y+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  y999 9 y yi  y]) I9 I9 I9999 yi y~) I9 I9 I9999 yi y) 􅹅y) 􅹅yB) 9yY y ) 􅹮ū) 􅹮S)9y))) Y=3  y YiIx Iy9 y)) Y=  y YiIx Iy9 y)) Y<  y YiIx Iy9 y)) 8)1 I99y)")) 8) I99y)) I99y`))x)8 Y  ])~R)y)10Yx)Y) i9 ) i9 Ɖefdb i ?)Y)yi)yYyyyIY8i) y~I9YyyЉ~ߑI8iY9;)<9 h\IZ ?8X~yY~ȃYY Q$VxXA) x)BYy \) Q$Hx)Fx);<< ~)9=y 8 \ yi~z8))VI)Wi9)=yyYyi~`)= Q$Hy 8C \I8;X)\\)<;):x 8 pi)< Q$H8 ?9x)?9~I) 9)<;):8 Q$H)?9x)C9}I) 9)9E ?8Y9GH Q)Y )FX<9F8)x):x)<;X<9F9< ~< ~)F)Ex˂ Nщx)x)x NщY9|)X| |7 |.8 LI)DY t LI)"I)azx)|!~x):9 Z)EI ^ɹ h )az|8 x y hY)<;X )yyi)Y9 )I)Y凩)) 3)yy)Gy;Y))K5)z8=z8zrI Yz{Y:uҊ8YYz`:kƃ zfx?8   \)KyIzJWz5 YY:98 ) 9I9Y9 ƉB@9uƍ9ꄮ:8 ĶIIzY YYy9Ɓ yyux)II):9Yu) IpIuu9N)yyʳuh)y94yi)xY9)9I9YY9ނu?)y9܇yi qb9)9zIu')y9yi9uY9eu)y9yi Y9yC9Yt9Ht)y9Pyi9Y9)9.It)y9yi9)tY99)9 I9YY9ނ~ɇ8pyII) щyyܹIyi 99й qE)Ii )Ii )!Ii 9zy t)"Ii )Ii )9 I8y9 yyyiY9xzY 9 I Y98p8 9iYYxT8_Â)xZxWYiI8)x:)YY8?))Hӳx$)8YY8))HYx"9.LOG.LGO.TMP)698),9) ))yvy9 ))yv߱y ))yvYXyviI9vIp9Y9)-9))8)9Y9u)))xu)幢w9);w9i vI)y)8vvY))p89Ii))i 9Y8 )Eu) 9xe)) _9 ))yv)y9 ))yvYXy ))yvyviI9uIosY9)|9))x)9) 9t)))xt)幢v9):v9)y )))p89)uI)9uYIu4) 9x))  ))y9 ))y9 ))yu`yYY)y9y ))yuIyԹY)y9u9ȫY9u'u.!YnLv' ~Y>) )ݘ *uiYv9)͉yyYyi) !u9Yiyyi ԁY9)|9)x)9) 9s))xs)幢u9):u9)Y )ݘ =ti))p)9ʼn)ʼn7Ĺ'Ĺ9I9)6&9)9I9Y!)9I9xY9)-9Y )9) 9p)8)9Y9s@)])xsR)幢u/9);u'9i !)))p8Yx)yi)8X!))pY9))5I%Ii9!)))i 9Yxi))Ys̈i !s BY)͉)8 Xy))pYyi)9)8Ĺ(Ĺ9Yx9yYyyiȉ!)9yYyyi) 8Ή1234։!"#$twy։++++))py >+9)I?+9 щ@+9IA+9) !9I9 щ!9I9)x{ )Ii ))|Y)Y )sY y Y YyiX) yi !rIY)͉)9yYyyi))YY r)I9 rX) 9xYsss) syrI)q)x))!8YY)8iyIȫYYVI)Y)) x)Y)Y)Sisi)Didi)RiriљYY))YsB))Y))Yis5)) )s)Y )s)) s Ys ) Y99 ) x ) 9 Y) x)tCȃI9)9t:II ) )8Y9 I ĹI yyyiyyi y y Yi Y   8 Y) )/Yx Y!\  y YiIy8 x )Y Y)IIy8 )9ssIIy?晓ysщYsII剁Y s}yyi yyi)) y ) y?晓yщY)9)Y 9 yyyi 9) ) xy@Y 9)y?H x)9 ) )Y  yyyyi)) 𪋈8 )Y Y)II8 )98) 9Y9rϩ)) y ~Yyщ)/)yY   yi yyi) )Y 9)Y9)) )N9 Y   )Y9)ѹy ) x )xY @+x )Y ʹ*x)*xY ʹ )Y 8i8y Y )))8 )o1o/))8 )o)8)8)xoo y)x)8x)nn)n)8DЇ)nynڣn))CDEEH))xn 9)) n0n0i9nn) ʙ) ʩ)) n09nznx) ʙ)) nf09n_n]) ʙ) ʙ)nN)8 09)xn9) n4ʩ)) )n#)x)xn) )) ) n) )) ) )mm)ʙ)mm)ʩ)) ) )y)0BY9Yx)) )yY)YЧ٩ɂ@ 9)) y)0IiЉ)0E)1Aypx,Imx) Iyy pxIy ѹpIxЉɉx )))`>Ɖ9);*Program requires LANG_RT: relink without SD_NO_LANG_RT.OB 4x8DOx00@0y`Ai0I ))ȹyIlj9  FATAL RUNTIME ERROR: TERMINATION THRU ?BOMB 0 .J 'H}1'H}='H}=P SD_MAIL_CALL.PR <pupr0&0&0&p}  @pp&ppMp,/))x)4)5)6Y)@`,8Dp:SCREEN_DEMON_3.60:SD_POST_OFFICE+.BOX.CON(SCREEN DEMON) You have mail  You have URGENT mail  Mail Notifier up, P.O. boxes.>CYCLEREPEAT)IYYK9 )7 Screen Demon Mail Server requires SuperUser privilege! 9¬9)IxI9 )[ Cannot find Screen Demon Post Office directory: :SCREEN_DEMON_3.60:SD_POST_OFFICE )9YY9 )[ rCannot open Screen Demon Post Office directory: :SCREEN_DEMON_3.60:SD_POST_OFFICE ~YyǃxƉ`i~9|Yyǃ8) select, exitURGENTACKNOWLEDGE:SCREEN_DEMON_3.60pp pSD_SEND_MAIL hp1pp: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{|}~>@@INPUTUsage: SD_SEND_MAIL[/URGENT][/ACKNOWLEDGE] recipient [message text] )H)N))I(L): )9IY9yDZx9 )9IY9'^Yyǀx  Y9x)Y)'$ Yyǀx  Y9x)Y))99)9Yyǀ8Y)F8) )99:)9YyNj) ) 9Y)9YY9yǃ89:)yyi))):)YYY)3Y) xй%%%%Փy9)ǫĮ x)9) ™) ™m)8) xщ8)8Y9) ™) ™ )|858)) )Y%_ѩ8YYY)ѹ 9 )?$"bII \3$Y J08Ή)@9Yy 089F) +Yɇ8Yy㎩ qIׇWARNING: Unable to set SCREEN DEMON `@ON Ready For Mail' flag))Yy qY)!(#vIIY9i! !) II):9YY9ɇ)9)9Yy ɇ)ށY9y y)E))N )))N )) )@ lY oIx9 * 99) ݊x9) Y9i)) y) 7) ߇ x9Y99)) x9)9 0x)) y) 8) ѧ)E)   2889) Unable find SCREEN DEMON Post Office directory 'SD_POST_OFFICE' in the SCREEN_DEMON directory. The SD_INIT_MAIL macro will create this directory.KYFIY9iII n39) i GUnable to open SCREEN DEMON Stamp file SD_STAMP_DEPTY ̴ 3092) .Yy򎩀 qI LUnable to read SCREEN DEMON Stamp file LII 3x9V) ~B8m Y 8 ?xY9Yx x븴98) CYy %t~Unable to obtain a message number from SCREEN DEMON Stamp DeptYy v%?}Y7 \089*) WYy Gq yUnable to access recipient's SCREEN DEMON Post Office Box)  )@j9)D9I9YY  Ȅ)湁Y9FYIY9i)9) 9Y9YyP) 9Yy) yyyiY9)N)8 )Y)9yЉ9Y) 9Y)yyiy)Ny)8)YyЉ9Y) 9Y9 ) d9)yy?)Ii) 9YJ89\)yyi$) Ii) 9Y096) MYy @ r9>) : iUnable to write message to message text fileUnable to create message text file )@8 y m) Y ii)@ ]Yy W88 ) Y Y9i B9 = Y )@9I9YY8)99)9) Yy ‚) yx) Yy )  9)+9YY9Y)9YY9x9YfLYy ˮ\ &{9) Q sUnable to obtain use of recipient's SCREEN DEMON Post Office Box))8))@)Yy)?IIi9i)9IyiIi)@)i9)YYi9wYyP  :{TYy q)A8$9)I8x)y йxzނx f YI9IiY9ɇ.BOX)yYyy!yy))-9Yy)i9pIyy)-9Y)) 9Y9YYyyySyĩ)):9Y)):9Y)yiJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECYy ÇɇSD_INPUT_MAIL)i)H))F)3x9)  *Can't allocate memory for message line inputͮ  ρYȣ yޮ)~ή9h)"Y9yYyi)N)) )eY9yYyi)8Y9h)")Ѯv98)y88 $8 T9x9h)"9)9Y)9Y)9Y IyYiyi9)%7)   x ! $[9hy)ޤyIiih@ ¹x9h~x^IYRxx J8) I΂R) IāY ? ~9iy) Y9yix 4Ή@ONΉ@ALL9i9)I) )8PYIYxy N8Yny8 ' ~ -' s)Y)N)4yIΉy)PYIY yN8Yny8 ~- 3$-HD)Y)N)J )9ӁY  )K)Ѯ9)y)yx8 P } i ~  =8 } OI)ӋyY9 K )Ӌyx9 )KY u )ӆ8Y)i9ӁY K Z ,2)YIY8xx }#8 -)8֮Ʈ))I ) 9Yi)y Ky)II) 9YK8Y9ih@ 9hYIx9 S) q89))))))9)􈸣9y)" yYyyix)x9)%>8)) ͅy) v |d89))))))Y99))x9ǣ9y)" yYyyi)ȁ98) )) ͅy)h vg   ׮ ͮȾ)F)H)W>:Y9I9dx9 Y)RY9  YP Xy普pyy  Yyyi _Iy) )йxx8) >9 %)J )|9Yi)  x 89hI&x)|9)Y)щY n (  )" Y9i ) No Post Office boxes found)yyI9,)i8i 9)i8i@ON@ALL)@)@Y9yy)IY9i9 )@9I9yx‹8txکY99 E)Ii IY9i݋ymx))9)@9)9YyNx )9Yy9)  {Y9)9I9yx)b):9)y 9Y9@Y Y) y) Y9i )y" @IY38$9Ή)9YY)Y)q) xtplx)L9) }xUnable to open Post Office directory! Stamp Department cannot be rebuilt!9݁Y9Y)Ii Y9999 )+9 Y) %Yx)9y檢i椩YyP)~ŝ ))4x8DOx00@0y0i0I ))ȹyIlj9  FATAL RUNTIME ERROR: TERMINATION THRU ?BOMB 0 .@'GX'H}'Ht=SD_INTERFACE_IR.OB  SD_INTERFACE<  "Cr!/9SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART_ 3Qo  )@T cn ,<UY^ d n x     %D_y     $ 2=Tl  (;K`x  SD_INITSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_TIBSD_OUTPUT_STRINGSD_CONSOLE_?WRITESD_FLUSHSD_FLUSH_IF_NEEDED_JSRSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_CHARACTERISTICSSD_CONSOLE_GET_CHARACTERISTICSSD_CONSOLE_SET_DELIMITER_TABLESD_CONSOLE_GET_DELIMITER_TABLESD_CONSOLE_SET_OUTPUT_DELIM_TBLSD_CONSOLE_GET_OUTPUT_DELIM_TBLSD_CONSOLE_INIT_TIMEOUTSD_CONSOLE_TO_VIRTUAL_STATESD_SHUTDOWNSD_INPUT_FIELD_TO_FULLSD_XGETCHARUNLINK_PID_FROM_CONSOLEMAP_IN_CON_VM_RECORDSD_MEM_ALLOCATESD_MEM_FREESD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESD_ABORT_ALL_LOCKSSD_ABORT_HOT_KEY_HOLDSSD_EXECUTE_LIST_OF_CALLSSD_WAIT_FOR_HOT_KEYSD_ABORT_?READ_IN_PROGRESSSD_INPUT_IS_AVAILABLE_FROM_SPYSD_NEW_WINDOWSD_REMOVE_WINDOWSD_CLOSE_CONSOLE_LOG_FILECTRLICTRLICTRL2SD_CON_NUMSD_CONNAMECON_FLAGSPID_FLAGSCON_ACTIVE_PIDCON_SHUTDOWN_PIDSD_CUR_PIDSD_DAD_PIDCON_LISN_UTIDAWBUFAWOFSAWATRAWPOSAWLPPAWCPLCON_VMTIBVIRTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICSACTUAL_CON_CHARACTERISTICS_SIZEVIRTUAL_CON_DELIMITER_TABLEACTUAL_CON_DELIMITER_TABLEACTUAL_CON_OUTPUT_DELIMITER_TBLVIRTUAL_CON_TIMEOUTCONSOLE_PORTOUTPUT_PORTINPUT_PORTCONSOLE_CHANCONSOLE_FILE_TYPEOUTNAMEINNAMEOUTPATH_PTRCONSOLE_CHAN_MAPCONSOLE_CHAN_PARAMS?KWAIT_MAILBOX?KWAIT_CHARSD_PRE_INPUT_CALLS_LISTSD_POST_INPUT_CALLS_LISTSD_PRE_PROC_CALLS_LISTSD_POST_PROC_CALLS_LISTSD_PRE_?CHAIN_CALLS_LISTSD_POST_?CHAIN_CALLS_LISTACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETACTUAL_CON_TIMEOUTNONFN_TBLNONFNB_TBLNULL_TBLSD_CONFIG_FLAGSFLUSH_TIMER_TASK_IDFLOAT_TOP_WINDOWSD_SHCON_IPC_HANDLINGSD_SHCON_IPC_IGNORE_PIDSFLUSH_INTERVALRETURN_INPUT_SIZESD_GATE_ARRAYI.INITSD.SYSCALL4<P f ~  X<&O:TQ o6 ,  ?G.SYSCASD_INTERCEPT_SYSCALLSD_SYSCALL_INTERCEPTORSD_SYSCALL_DISPATCH_ADDRSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_FIND_CONSOLE_CHANNEL_INFOSD_IS_NAME_CONSOLE?SD_INTF_?WRITE_DATASENSSD_?TLOCKSD_?TUNLOCKSD_SYSCALL_GATESD_RING_7_SYSCALLSD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERRORSD_RING_7_SYSCALL_HANDLER_ADDRSD_SYSCALL_DISPATCH_TBLDEFAULT_DELIM_TBLNULL_ONLY_DELIM_TBLUPPERCASE_XLAT_TBLSD_?IDGOTO_TARGET_TASKSSD_PENDING_FUNKEY_CHARSD.SD_INTERFACEUD.SD_INTERFACESC.SD_INTERFACE  p,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~O    $  ,F)) pxY I)) IIIع8҂xYyIYIIy))   xyIIY  y y  )))i ɀi xI py ɇYY yXIyi)Y)@ɂ  vx)8Y YpY)iI) p)ɦɃ II #)ӸI)ɀi0iix@yyy hҎ vf! &!)-1 4 K"q.| -g f   . %-,;^FK@yyyyy Oy8IߍY9)I9c) ♈ 0yyły) ⩣ W%, >*h/52>71JhP1VXY%GX)x) zyyyy@y y ߍY9)I9cY)! yy~ֱyyyy@y  ˕y))) x蹈)8)nyyx)) Y)   [yy ~śyyyy@y 3 fy)♣  6yy ~.U%!+$)>3h85;>A4D2Whh2s,x4}1?8_,1V%2V%!KWy >yϤ9z) Y) ѩxY))Y9.) }ȂIyIcELOGOFF-TERMyyyy@yY8ቓxyy ~$yyI)IyY9Nyy) YYyY)IxW y89L) xY) ѩxY)ĂIyIc癝yY) x)Y) )) yy }}h #$,2$6)-03 6 9=2JhQhn55hh#$,26-  hh.-aa- a-$yyyy@y  x) yy| }T 9 yy8yyyy@y  )♻ yy) xy)9)9)9 Y99i))xy Yyщy)IЉ)) Yyщy)I  \yy |ƛyyyy@y)⹂xyy |y ⩁YYY)X xixx i ؉yy |uyy |lyyyy@y)xY)8)yI y 8 I)8)YYI8 Iȉy ɭyx)Y)8y)nyy)ɀ)Љ))x)y 998yy)9)9Љ8yy)9)9y)8ɀY)Ȃ9Љ)) 8)9)Vy  y))x )))IY99Y8yy)"y  y)) y9yy)IY8)>8Љ)@YxI  ꀉY) 8 I 8 ⩻,⹁.㉁Byy z؎Љyy YyY) 8 I 8 ⩻,⹁.㉁Byy zY9)ay)) yYIIy9Y99))8 yy)y) ,-#hCOGPS|DEOJOhP O#-*,3&= C OhV bSe%h3k5n3s@y1?8!98;"9   BYG@JFQ^Ta%dZgYjem_v }.    hT%ZY.    h,ţ)y))y  y)) yyYق))8 yy)))Y8Y)y   yY9Y倉Y) 8 I 8 ⩻,⹁.㉁Byy yYyYyY) 8 I 8 ⩻,⹁.㉁Byy yy9Y)Iyy8։)>Ii)I9III)Iy)0Iy iy)))))))0I)I yx)y) yy艇yyyy@y8)⹀ )oyx)Y)8y)nyy)ɀ)Љ)) x))x)yIY))`Y)8)Wy  yy)))@yy)) yYI YyIY))i)`8)xY) 8 Y)x yy xyy x i9)) y))yɀY)Ȃ9ЉY Ďhyy wҘyy wɛyyyy@y8x8㉉yy w9>yy wyyyy@yIxyyyy@yYy8x8㉓@)8yyyIyyy wF9㸎ނ.YT\%_ZbYi.p w {  hT%ZY.    h  Y@F 5 >PM Y,^Op3s5v3{@1?8!98;" 2, E 2,"d' /25: >v9 ,OF,OB@q yy w1)a w*yyyy@yIxyyyy@yYy8㉓@x)฻yyIyyy vݼ9u8yy vțyyyy@y8x8㉋@)yIyy v9븎5yy vyyyy@yxx㉙88Yyщy8@)Iyy vI9xyy v5yy@y)IYyU)©Yyyy v yyyy@y))YyU)©Yyy uȉcyy uΛyyyy@y;ny%8,0 yyN8y,ک کЉ'yy uy,ک کЉlyy u{y)YY8yyyy@y֎ y YN9yy uFBN u=(,5OFBL@w,OC,OC-RQh-#Q7-?RBQGhL-SQ|   h    '(hhn 3)x8))xyyyy@yǮyytr8s u tY)x)]8yyyy@y\Îgyy t t- b@#2h@-Gb[^ Z3)x-)8yyyy@y)\4yytbx< t ty))8)xy)♀)x)xY8ɇy))♣)) ))))) ♠y)8I4Y t)M t  t))x) sȉێyy syyyy@yWyA8. yyK8y.ک کЉGyy sy.ک کЉ0yy s#yy syyyy@y.y偸.^yy sk) seyyyy@yԎyI) IyIЉ5YY9YY@Y#yy s1 xYyy s )Y024) Y9999Iۂ)4)QYx Y9999Iۂ)4x02YYU))I002IISy9i) Yہx)yy)YI>I؉ yI   Y?؉y)@y)lyIi8 Yy1)lyIix) @CONSOLEI)lyIiY))8II)@Iy)yYYYY8I)lyIiY)8)II)@Iy)yYY- b #2h>@H3MbT-[1bcub{-b.[b,. ..  h   ! % S ~ `h   .h h`h    h.    %h:hI&Phhh{-L-HLhhHM-IMhhwYY2IYYxIxyYYYyy8IIyI)@Iyx)yY)I8:PER:yIiYƉxy8IiIyIYYy y    I  Y Y   yI ѩx  Y  Y y Y y y y yйЉiyyIY)yɇyI KhG#0(h-G2HFhLNk   ! h, + \ ,cH  _ `  @ \  $Pjlnprtz~jr~ .@'Fo'Hu'Hu=SCREEN_DEMON.CONTYPES  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: screen_demon.contypes,v 1.3 1995/07/11 20:48:12 mark Exp mark $ ; ; $Log: screen_demon.contypes,v $ ; Revision 1.3 1995/07/11 20:48:12 mark ; Updated revision and copyright ; ; Revision 1.2 1994/03/11 16:55:11 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Definitions for parameters maintained in SCREEN_DEMON_3.00.VM file, ; including console types and terminal model assignments. ; ; 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 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;--------------- SCREEN DEMON Console Type Definitions --------------- ; ; Specify the console type names of all terminals that will be ; running Screen Demon, followed by the lowest and highest ; unit number in use for each type of console. The console ; types CON, BATCH, and NOCON should always be included. ; ; The value for the BATCH type is the number of simultaneous ; BATCH_INPUT streams that will be used. Batch streams with names ; other than BATCH_INPUT can also be listed, but specify only the ; first word of the batch stream name. ; ; The value for the NOCON type is the maximum number of processes ; that will be running without a console simultaneously, not ; including batch processes that have their own type. ; ; ; For example: ; ; BEGIN_CON_TYPES ; CON_TYPE CON 2 17 ; CON_TYPE VCON 0 4 ; CON_TYPE BATCH 1 2 ; CON_TYPE NOCON 0 8 ; END_CON_TYPES ; ; indicates: ; terminals CON2 through CON17 exist, ; virtual terminals VCON0 through VCON4 exist, ; there will be at most two Batch streams running, ; and there will never be more than 8 nonbatch processes ; running without a console at the same time. ; ;----------------------------------------------------------------------- BEGIN_CON_TYPES ;Specify your actual console configuration here: CON_TYPE CON 0 512 CON_TYPE BATCH 1 4 CON_TYPE NOCON 0 32 END_CON_TYPES ;------------- SCREEN DEMON Console Model Id Definitions ------------- ; ; Optionally, the model ids of terminals on specific console ; lines can be declared, assuming that a given terminal is ; always connected to the same console line. Declaring the ; terminal model ids here will eliminate the need for SCREEN ; DEMON to determine the terminal's model id at runtime. ; ; This is also useful when terminal emulators running on PC's ; are being used. Although the emulator may respond to a ; Read Model Id request as if it was a D400, it may actually ; lack certain capabilities, such as underlining. Since ; SCREEN DEMON will be unable to know this based on the ; returned model id, an entry for the emulator's console line ; can be included in the table below to describe its true ; capabilities. ; ; Each entry in the TERMINAL_ASSIGNMENTS table below specifies ; a terminal model name from the SD_TERMCAPS.SR file. This file ; lists all known Data General terminal models, along with the ; capabilities of each, and should be updated if necessary when ; new DG terminals are installed. Special entries for terminal ; emulators can also be added to the SD_TERMCAPS.SR file. ; ; Following the terminal model name in the table entry, a console ; type name and range of unit numbers are given, which indicates ; that all terminals attached to that range of console lines are ; the specified model. There may be more than one line specifying ; the same terminal model. If only one unit number is specified ; for a console type, then it is assumed that only that single ; console line is being described. If no unit numbers are ; specified, but just a console type, then all units for that ; type are set to the given terminal model. If a particular ; console line is declared more than once, such as when it is ; part of a range on one line and then is specified individually ; on another, the last declaration is used. ; ; For example: ; ; BEGIN_TERMINAL_ASSIGNMENTS ; D210 CON 9 ; D410 CON 13 15 ; D210 VCON ; PC_WITH_CGA_EMULATING_D400 CON 6 ; END_TERMINAL_ASSIGNMENTS ; ; specifies that CON9 is a D210 terminal, CON13, CON14, ; and CON15 are all D410 terminals, every VCON is to be ; considered a D210, and CON6 is a PC emulator that can't ; do underlining. All other console lines will have their ; terminal model ids determined at runtime. ; ;----------------------------------------------------------------------- BEGIN_TERMINAL_ASSIGNMENTS ;Specify any terminal model id assignments here: END_TERMINAL_ASSIGNMENTS ;----------------------------------------------------------------------- ; ;End of SCREEN_DEMON.CONTYPES .END .@'Fo|'Hv'HvZSDWINDOWFLAGS.WS  ******************************************************************************* * $Id: sdwindowflags.ws,v 1.4 1995/07/11 20:51:21 mark Exp mark $ * * $Log: sdwindowflags.ws,v $ * Revision 1.4 1995/07/11 20:51:21 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 * ******************************************************************************* *** SDWINDOWFLAGS.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of the flags word in a Screen Demon window ** descriptor. A window descriptor can be examined using ** the SD_GET_WINDOW_DESCRIPTOR call. ** This copy file is intended to be used to examine the bits ** in the flags word via the SD_BITS_TO_DIGITS call. 01 SD-WINDOW-FLAGS-BITS-GROUP. 05 SD-WIND-FLAGS-RESERVED-BITS PIC X(12). 05 SD-WIND-FLAGS-D400-MODE-BIT PIC X. 05 SD-WIND-FLAGS-WRAPPED-BIT PIC X. 05 SD-WIND-FLAGS-FLOAT-BIT PIC X. 05 SD-WIND-FLAGS-ALLOC-VIB-BIT PIC X. ********************************************************************* * SD-WIND-FLAGS-RESERVED-BITS Undefined * SD-WIND-FLAGS-D400-MODE-BIT Views for this window represent * D400-style hardware windows * rather than Screen Demon views. * SD-WIND-FLAGS-WRAPPED-BIT The last display into this window * image ended by wrapping to the * beginning of the next line. * SD-WIND-FLAGS-FLOAT-BIT This is a floating window. * SD-WIND-FLAGS-ALLOC-VIB-BIT The image buffer for this window * was allocated by Screen Demon, * rather than supplied on the * SD_NEW_WINDOW call that created it. *** End of SDWINDOWFLAGS.WS *** .J 'H~,'H~A'H~AhSD_SET_CONSOLE_MODEL_ID.PR <$@piGp-0&0&0&00pg02000>02000> @p,p6&pg~ppg~,/))x)4)5)6Y) 0010110>010213201pd4 @eepdp~@<P K?n Fatal Screen Demon error at PC = 00000000000 0` p2pp  pUnable to find directory called :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM+>?>CONBATCHNOCON@VCON@WCON@PCCON x:MEM:?SD_VM. + @OUTPUT@INPUT<@O :CONFIG:SD  ,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ hoyzzkz=xnpqqu<pnzovwnv wIvv7vyyyyMwwly yxplpcp@INPUTo?   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}}  SCREEN DEMON: Copyright (C) 1988-1995, Threshold, Inc., Auburn, Alabama. All Rights Reserved.pp@OUTPUT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"+A>) 4Meo@e$?~l~+?BbhY9Vyt n a26*0~A=UCAӝŠ͜Å訠Ԡ젬ɮ㠠҇.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  @INPUTqrstuvwxabcdefgh12345678!"#$%&'(yz{|}~pijklmn`9:;<=>0)*+,-. \]^_ `@     Press any key to continue... :CONLOGSD_+ %'))&(%%)))&)&)')')))))(()))))))))))'&'&)&'))%%((%))())5799685599969697979999988999999999997676967995588599899   (@Y 0SD< y{{M %  HKf, 4E.1*[200PLP|b8=B 4  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 8`SD_ALT_EXIT_KEYSD_HOT_TIMEOUT_INTERVAL|| ) )9IY99&yǃxa) UNLOCK )9IY9yxǀ K )99)9YyZx։NONEXйY8x ~x xY9)5Invalid model id specifiedi) Y) ɨ)္II)̣) ˮ0YYY癇) 9YفY䨣 9)P99$) 9Y9999   I9) yxـ [9)WbhΉ)2 ) 9E8<o868#0Ḅ ~t&i 8^)98 xY0Y"8) )XXɇ)9$YY9*‚xI9xC)))))Ɖ(@Y )χy0ix8ۮDTY)xx00)z̦p8I .YYbYIYNY̤4)Ix4)7 =)j))@) )  Yyp@x)  YyX@x)  9Yy;@8YY1U))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 )v)I3IiII387jIYR )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)⸣פ6W)QIYSI^Ӹ Y9999I۩Y)I֩YIYW m9)9Y99y)ѣͣ)IYSyiY v)Y99Dh)xyȉ yyy9 BYi8) .@CONSOLE)♻) i )9)99)Y999y>ظ8))@8)8I9)89)d) -I; %IY9ix9()@9l)Iyiy YYYyyi5)0YYUЎ; ))8j0)⩻) 8)YYU)9^)yyiNIx9 ){ Console name not found in Console Types table or out of range! Correct SCREEN_DEMON.CONTYPES and then MAKE_SCREEN_DEMON.VM p i  )`Ii])} }v)uYYUIY99U)c)&x!89%y) YYyi9YO)ʙ) ߬Y)ʙD) ʩ)IYSߍ) ʩ)ʩ)ˉ}Y)ʩ) ʙ) ʩ)@ʙQ)I _) ʩY)ʙ) ʩ)ʙd) yyp)0YyyY9)/yYyi)YYTUYC)"Y92+969495Y9Y)!Iiؤ)9999)99)99)99)O99) YyyiY޷V4)nyyi񌁉Ҵ)nyyi9y)q y)R8)P).yyYy~ YYy⦇yiY9ZϫҌI))Iܫ).`YY*)x?)IixIlY9YD:)YY3U  <  I6@5݁IժIҫ%́8axā8IU 9)@9Y99y)pYqpm^iY )I Y9Y)Ii )99(YYo)) @8y9(98)$yyhc)ܧIi) 9Y9(Y Unable to load configuration file: )IY@S)YY/U iݏ  )Iiݔ  )Ii[)[IYShY)8ńY)x  b)္II)ܩiY fȂ:PER:CONSOLENOCON)iO})) ţ̣χyYyyyIyyxyYyyͽ)y)"Iͯyyy) I yYyw YYYyyЉIyYYyy)x89Y8y)YĹI8IX)Iȉ艇yyyY8Y)  IY) YcYY'Y湁Y9))W !z88) w𿩹8YYDSxщ8xYI+  L  8݄Y)x))x|щx)0)1XxP) U) )8Ww.Y)x$Y)zY) V9*) K]3H{ׁY9)EConsole Interrupt yyIYyべ)АIYyщY ΉQʁy)Y)y幥))YY6|))x\)Ή)z)@xsY)˸p P8Y) 8ƫ8긄Y)`xS)U sy")xEfYNy+))⹂ׅ)8{F)8)⹁x ))⹁)IP)Ub)©ޙx)@))ꙻY)8)x)x)xUlσ80x0 T i𦈉yy8y IyY)艆Yɇ))8 ) ')YIyYyi )),깁Y9Yi ) ԧIY9V)yYYY))3)C)) )y 9)Y9)I9) j) zIiY9)xyYyyycѹpxsIyNII)) YY))y晅y)yHx)yx󸀉y Y) ≃8i ɂYi )II)y)8ΉpwG x։p▙ p8 xYI9YY 8 iI)y9^)xy) )IIyiɂ)x);ÓiyI IމYYxYiY)$xi 幥pi =x)N;8yI IމYYxYiiY5$ ɝ 幥 pi)온8x  9Y샮08  )I9x)Y9晁)Y9yщx )I  I x))]Y94x) yxxy  yi) YYxyɂ  i)I))6)/):IBIi :Iyo)).9Y)T9Y)M9Y)P9YY9i )@9IY999 9)9ҪҚII 38냤ҀYy8x ) 9pI9Y99 9& e9)Tx9f)`ȂCannot create temporary memory allocation file in directory :SCREEN_DEMON_3.60:MEM Cannot open temporary memory allocation file in directory :SCREEN_DEMON_:SCREEN_DEMON_3.60:MEM )O ˙8XIO IIYyBUX)# ϱI)8ʩ%x" IIIYS)˙)YY)ʩyY}Y)I9Y) I) IHIѹIyyIy㇩)YI婉Y)8p)xΣ̇)ƁX궁X) ꪣifo) o}a}g}) oxXtmḣb8Xa ãU 9) IY9Yyi9Y؁x)x),9iY) IY9Yi9Yx)xaYTxșoH))))uy9)|-6OIܣ9h) YyYf8W) LOO o)I~騃xL6 o YF  WARNING: You are about to be logged off due to inactivity!  Press any key to clear this message and avoid logoff...) Yz_8X ) yi) Y) )) )IyEY) )@6) ;ߣ-8@ ) I I IљI=xaΉxЈY8'؉y)yIљYi) 󉈹89Oy)y)w8)Y胳龤 YYA)r♻9)9))I9 Y99)82YA)8-y)\)xII}'y) OχPiYYx)僣+♻t9)9))I9 Y99)SYY)E9ɇyY)8∎~dKnЉyȫŬY)ȉyϹѹy ΉxYy; xYIiϢϐى8)IyΉx͂Yψi xpى8)Ih) yy)Iy)IyLY)U)I\)Iy@ѹyΉΉ@ x%ى8)IycΉ̌Ή@ى8)I))) yyt)I)) y_)Iyѹy ΉΉ9 xνى8)IyΉ˜ΉΜى8)It)) jY)Ύ9YYͳͲ 9)P99$) 9Y9999   I9) yxـ [9J)@msΉ)=} ) 9^xUo8O8#IḄ ~?98t)9/)8&xʄY)Ή)N|YYx) )XXɇ)9$YY9‚xI9xCyx) z*yI)Iyh)ai)II}eiy)I]ҹI)II)i9Y8I)婤I9I )%J©>)) ™Y)߲™I))I9Yi9y) 깈8))YYxI}^I)i)II})y))i9YYI)̽Y)ʙ)y)깈8̻))YYxI})I)) )䗇)) AAYx4j) ) a)i'y˷)x9)) 9)x9)>9YBY`8޷޴X*)ޣ܃w) x) ^E)Ix̣)i  D EFEFQ0 ))3Y)Y 9xY) ,)yy)@/x2x)8n㙦p8~I㍳㊻)Iiǎ)@IY9Uxy) y)R8)P).yy).9Y)S9Y)D9YY9yYy Yi x )B1xYYqI! IY38n9 )I§Ii IY9i9 IY3x)9yΉ y?x 9)9 )9Y999YN08  ⭝YY5qI)Dxy⓻ 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 Iy I 8))8Y) Iy IyypyY xY8yy ~I 8yIYYNI9YY򸀉Y9 P)x #ۮ@)xI)ˁi0i7i!x@yyy MF [@yyyyy 6iys 8IBߍY9)sI܏09c4) ♈s yyUły) ⩣zs )x) yyyy@y ҎyGsk ߍY9)I,9cY))  yyֱyyyy@y  yڤ))) ?x蹈ǖ)8m )nyyx)) YWR6k) r  Hyy ~͛yyyy@y  Sy?)♣rπ  #yy ~_Wyb .eyͤ9v)  Y) `ѩ t xY)9!Ӯb)Y9*) ȂIyIcELOGOFF-TERMyyyy@yY8ቓxyy ~1yyI)IyY9Nyy) YYyY)IxWȎ dy89L) xrY) ѩx Y)9N!9ĂIyIc癝yY) x)D Y) )Dz ߼) yy }yyyy@yߨx  8ߜ) xyy$ }f 0 yy8yyyy@y  )?♻ yy) xy)9)9)9 Y99i))xy Yyщyf6)IЉ)) vYyщyy*)I  Syy |؛yyyy@y)⹂xyy |y 4ݨ⩁YYg%Y)X xixx ii ؉yy |yy |~yyyy@yj)xގY)8ފ)bxyI y8 I)8)YYI8Iȉy ypBĬĦx)ĜY)8ygމ)nyy)Xz)vЉ))x)y 998yy)9)9Љ8yy)9)9y)88ЉoFõܯ)@YxIը ဉ3Y) 8ʙI 8⩻⹁㉁߮Byy zЉyݶnyȫĨ YyY) 8܊I 8܁⩻ܟ⹁ܜ㉁nByy zY9)ay)) yYIIy9Y99))8 yy)y) ܖ)y))y  y)) yyYق))8 yy)))Y8Y)y  yY9Yn2܀.Y) 8řI 8ۼ⩻⹁㉁ީByy yYyܱmëڿYyY) 8ۅI 8|⩻ۚ⹁ۗ㉁iByy yy^9YWځD_)IyyW"8։)>Ii1)I9III)Iy)0Iy iy)))))))0I)I yx)׳y) yy艇yyyy@yB8 )⹀ )fyܫxԯ){Y)8y`Գh)nyy)7^Y^)UЉ)) x))x)yIY)-)`Y)8)Wy  yy)))@yy)  ) yYI YyIY))i)`8ڃ)xY) 8ف Y)?4xyy x)yy xi9)) y))yڀY)Ȃ9ЉYٯ_yy w䘉yy wۛyyyy@y8x8غ㉉ӏyy w95yy wyyyy@yIxyyyy@yYyٱ8x8r㉓@)8yyyIyyy wX9㸎Ղyy wC)a w)x) tȉێyy tyyyy@yWyA8Ԣլyy؟K8yکՙکЉGyy syժکՂکЉ0yy s#yy syyyy@y.y偸x^yy s) syyyy@yԎyI) IyIЉTYYӒ9YY@Y#yy sL xYyy s;)YN) Y9999Iۂ))QY4x Y9999I׮ۂ)։xͅɩYYחU))IԳ԰ԯII}Syi) Yhہx)yyX)YIR>I؉ yI   Y:?؉y)@y)Ҙ) 9&҃ sYOY{9"9!)9II9Y^zyp)I9)i) e)ۉYiSکi)2Y53187 !I) 3O)?I9yY))y)))@yi9Y9)Y)0yy   Xyi9"9! ))x x))x)xi)9!I9$9%) i yX8iI9$)!iю̹yIIр)! y{yiv9! O yn)))I9) 8\yʁY)ȂYYYT)) P)ۉYi>کiЉ)) )!iy!)y))II*9Yȹ9 )i))I9)ގ E9iUyC)yi99999ρxЭyмx_ -y)I)ДyГ yY' Y)x)yi9&YЌiYЍЎ)xk)[ViƁYq)`) 8Q_8i ПY)@xi -y)I)!! yX-i Oщyy yxIyYyYyyyiYCd9#)щ iIXתYlYgYiXYYȢ[)ȫYXI )XKY\)xYy=YX8YȃY2)ȫYЉxY)ȫYY)!XωXѹY)I)I")YYi)?4Y칤9 +K()i9 ) )IYۂY֑YiXȫY)!IɹY)X ѩY9))!ɹy#4 )?YoIYY׳υ9#Ί) 8Y Y)8i9&等Y8 D9YyyiңҥI)9Y9)) H)XSXíY4R)))R)8I9*9)'ŁY9)`a )֣Y')xE)Qx)> n)xG)?8`)g)Y>Y)FXĩY)@Yi85$#+) x)(U& 9͆)@Y8 ,m)  ) IZd)I9=Y(#)  )٣;͵jyyi ͈)Q ߣͳ͎ͪy͊̓iyyiԁ Y9=) ͏)ˉYʩ}iy<_t H)S@>)YyB™x.))YYYʡƤ) )?)IYY( )}8")=x)IY9)9)iӸYǻNQ) i9>xYq8)x`9N)\ R )Si)?xہx |X) 6y)?xPuJ̤) A^3^9^̌) JPyɀz)ߣ)@Y80\8񘮮-YOyi)?x)Y)əy9yX9)̐)9y򁹋8i) yY9 y))9 )  yY9(8>x9( 8yǭ Yy˾i˺ x˫I9x˧8˵)x9(˔I)¹ ~ˆy9(9')щ ˘) )>)=8Yb)'i )ޮ) AIR8)xyY9YyyiyԅyIyiЉ)0I) )) Y9YYi˝)ՉI5)ޒ)*)I_)( F)*щY9*y9)ѩ̹$X) yyYi9 y))9 ) ) i9 i)?)'Y Ў~)#X XI,XљI‰8y)yYY yy)i)>8ʤ  x$Y)ȫYY) iX )IYXIXȫYlY)>)=щIi)'yX) T])=)>)ɶ)@Yщx.<)28)'yinyIii y.)0<N)9 )9 ) 9) 9 Y9)9)0_9x)))ȫY ) )x)YȫY Y8i)9)9)iiI )9)8)Iyi9X9y)ɺ)Iy)yi9))9))X Y S))ɔ)9Ɍ )) 9)) x I8Y99 9 9 xXY)I)X)I9 9)ȫY9 )) C)XNXYi9 ))y))?8)Ix) 5)yi)?))YXiYiȀYYȳȫYXI)I  YI)۟ƫ)۽Ii)YXYiAxYY)ȫY)XI) I  YIy)'8+)*x)!x)Mй8项89)!M wڳӕ){ Oщ)$)%)!8)cxx)79N88VY)x)79NǞ)"KXǑ)x)79N. $Y)!)?щ ƬxYIYC.yƠ Y)xƈI)й $Ə8ˮ ]))P) 8o)8Qmi +98)Yáy)'ܻ[yyi9I)怉H~)Iݎ%rYn8)[ ܣĥYyƺZyrIyXƮÀY6Ya I8)Yx)Y8yZ6yy)@Yi 9Ly9Ƌx)y98Yy9YX\]mi)ΣPYyyi)CՉI0I9>YzLiY9>)L u γ_I)щ li)x¹8)Mй8 ~*))ڹ8)i)"i)79NyţXڸiX!x ~ ¹)!)$Xѩ } +Y9)9N4 īŮŨy ~xŴyŘ9ŗYŦ)'Y9'Ņy9 u@ +)y9xYy9pŀ{)'YY =]iiYhfd) Oй :)"yy9, yij)xi O ) 8Xi)!Y8y O)IyiyyiI)!Y O I)&y9yYyi O9i O)) yxy`)i9)xyy))ymY̑xIYȃYYYiЉI)8Py8iX9i))$8)'ąx 8)?) )88Y)) x))yI乡YiÉ8c)) IH8YCvxj8x8)i)*) 8IĪ)8NG)N88i)g W)IE9D9CG9B9A9@)@)A)B Gö)Cç)Dá EÙyS)yY)éYй8xYЉ艇yxxi)')!yÄYxi)')!ytYoxkf)tրy۠) )ۉ)I) y)Ii)  ) I)IY9)yΉYYi)i)i))Ii Yxo8oYy )9  ) yyyYyi  Y9xy)'̹yIIyY9) 9)9·9)'9yy9 ’yi )JlYiI))d84y`xvnf^Ky9") y38\#Y&')YQY k9)9Y99yĵ)z)Y?=8)ʙ)́8xx )9Y9yz)8 Y99ydi,))8)YYKi Y99y: ]Ymy)peΉ) &35yDxH@80/y9")ޣ ))8Ňy 8"Y%y)YãNکYYÙUyIΫ)8 =YÀNi)Y2a9(9'+) IYYS) ,.I͉Y9Yyyi) ) )+Z)Qx)> |9Ys p))I))w)) )i)) V9))8KYY 9) 9))~PYY普\8~}Inyifщ8)'8)8y\UyYV YYȹ8yYxi)'?:Y</0+YyyyY9Y yPF)f8︙x渙8詓ੀyyY YӼФϫȩ8YyIYyFRЉIPFEx)8虑8虂่xY Y|wyYs YnkfYyyIYyEЉI\)YWV))Y~I{ ix))Yjh  8(4[0+,'* " ̳)Շ))ѡm98) Y  ߻  0)˴ 1 2Ƴiݣ98) )p))<йIYI i))&IY x))Y 98) ڙ%Q!M#IEC ;+3+  9x) )`:)ۣx) yi"y ))i  ߣ׫YYXϣˎYЫώ)x )x  )щ)XyKYXyxXYYwȃYyoYYəyrrarkImyXSN]YYT#"鉃xyLYY'!YY4>)9YyyXYȃYYK8IY) 򩁩KxҊ8) Kx8yJ x߳ڑѪύӎ1 0)Yϫ΍ʄ ~89Y"Yy&I)xKw)s)iI9Y Xщ8X)x)x x 8) yI)$9)Y)^9@Y9)VU~艼ML8q ~lkjihgfed R)))) I OyYK K?ЉD F) ? )Y 7)Y 0)湎 YIYx   Iyy: ~yXYȃYYЉyȫYyЉ) }) }) }ޣw) }֣o) }Σg) }ƣ_) }W) }  O) }G) }?@ )i0 }+i! }ny) }t)  }h)QY򡙂)Jݎ֪ԍ؎6y8ox) )8 8k)xYY$x9#)P) 8= )1Y)x^X҉9)9) )1)Yc^X`ѹYY)I̳޻ډ)㈹8.)3 % |O |sKX~SYy)Iyi~XЁYIˣ᱙yYyyYyyױI9Yiyy) |$ | y~ YYyyYyyY9IyYyt;xnR_Iwyώ&)x9)8D xVRZ"QGIG?9z)=)I7)x)Yx) Y)IY)I) {qa) FE,}PYYѹyyYII I {:)8y}̪YYyyI)Y)) 9Y9YYȉ~쇉yyYyyȉyIY9YIȉ) ©x)Yy|yxnlyQ9)Ydby8|@I=y*)|Y z )) z!) z) zx YiI zb|MY8Y屙8ߎ|F zG|2ޒڍ̲ȕy|, z-|Y8| z) ©xY)9)9Y)Y9mn yc yףYX)Y~W)m yƣ鸁Y7)Y_]6)m yxY)Y><)m y y)9Ih) yXYޣk Y)F Y)a8?8 Y)28YY)©yYıYY y ))9Y x)9yIm̹@Iy e y)Iyyym)yyYYI)9YYɹЉiyyyyfyy1HyGy%y?yYyYYy Y)Y)89)Y xC)9Y)o9Y)#9Y7v)yy녹)xMY))89)I xGFb>9@) 9YYމyIy0I)9Y0  Y)hY)9)I D xyXXiYΉiyIY) xyIĹ)I y4) ♼JXR) {? wyމhyIy0Y ) o~I)YIyIiIIʅyIiiyy֮8Ѯ0)u>2F(ǓǼ\)})w\  }hؕ)09Y }OY)09YՍӁYI)YxY8)@Y9i v } Yk)Yx0Z94 vש |YF)Yqox0595 v |Y!)YLJY096 v |Y)Y'%)Yi vi |wY)Y@ى8ĮyңȤ v- |;Y)YǍū Y)b)8y)9yI9YY ; uY)xD)s)9I | u)8)x))) 8)2>,剁) 8)xI)99Y)) 8&ى8)x?8 xyIyyC+CY *) {yY]Y)8) )Y  Y uO?Y)x)9)I v߫ީ {@yYЍΫY)8k))Y N)鸁Y uW)89j)I s )  )) ))y9 tڣ*)89)I \ )) t zФ )Y\Z平.9 8)YEC平)i9 28)Y)')i9 x)Y 9 )Yӧ)ق@9))ق@9)vy˪YY)yyyy Y9))I)Ii9YY)xY8yYIX|)xyyyi9yy S))I)Ii9YZIY, s)89)IYYu)49)O.9YYX)+xu)IY)294 G= ) )9E)) Ǭ (x s>FAY9 yAӫҤ x)YǍ平9 8)Y)i9 )Yo9j)|Xy8y 9I )  x X:d) i!IZ) ٢y*)Y99)91Y9)9*9))1Y9Yy 8Y)9 :Yt\7YӣI) rQy)999)Y9)9)9Y9%) YX8 Iy й8 x)Y平9 x)Yq)i9 )Y平V9 )YmkA)i9 wƣNx)Fx;9YYX68ys}ys&) ) Y qy 8)Y平9 8)Y)i9 )Y덉平9 x)Y֍)i9 ũ)Y平9 )Y{)i9 w)`}) 8 tr9n9)I9)I9)y9)yU)OYYXMO)yryx2y,r ) Y p!)))YYX pi v| )Y平9 )Y󍉫)i9 ⩹8)Yٍ平9 )Yč†)i98qy)yqyyyqY] o1)9 &)I)qY`ȫY9yz0X8Y)8=Yio oYIXۀ8) ) ) )8I%9z)YY)I}J)ݫY o?yYiYIyyy艣ˑIIyyЉ)tp 9)I.@?)ȳYqpުXXiyyYy{XwYRX8!Y)yyy艣bIIyyЉxTXPYy*X8Y)nYyyy9IY9yYy n)9)Ij)p_YȫYy"ЉޣX8Y)Y nNqߎ nEyIꉃxYyyy艣ԑIIyyģɑY)ss 9)I1CB)oyȳYxXXiyyIyXY[X"8*Y)yyy艣kIIyyЉx]XYYy3X  8Y)wYyyyBIY9yYy m ?x)Y64幣 )Y#!iY)x))Q))yyY)IyY9 ) 1) m9 sL ީ8)YՍ幣 x)YiY))YYY9s ) ) l) l{) lڣs) ʤ xu)Ypn平D9 x)Y[Y0)i9 J)YA?平9 )Y,*)i9 r)y9)ɩxYY))Q))yy9ԡ8)))x))XYY9n)yyn ) ) Y lY)L)@89)I- kFO;)9J)I  )mkfȫY]I,88x2ՀI^) yRY) )) @l)Iι xI.))@8@9)QÂx}Y))}y)dɝy)[Y)xU)) ))-c)80) ) yKIy09x K).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 Y9091wE)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) p90Y91{92g93\)494)595)696i) x})G) I):xI)1Iy 3))x  y y y  )щx9"9y))Yy*yi)YY ))8)x)Y艇y  )nyyi Y) i )Ii ) i9 Y   xIy) kxyyYyy) IYyЉxi  )y)c)x  I  y )nyyi ) i  )Ii ) i9 Y y y  xIy) xyyYyy) IYyЉx) ) ))x  8 gy)Y)iyyry)  0 1) 2))iЉ)8y )y))t)  [yQ)4ʎw)W)K)  0y() 2).)"щx x) %)y))Y9)I9й `)x  ۫ډxܐ 8) ~) yy0Љy'' )P) M) 98)8 yy)9999)9)9Y9 Y Iy й8))8)9 ))yQ9)x ))y<9) ) )/))8) )8Y)y 9) )8Y))P)@yy9) ) )ᇩ))) )i))) )))I9))) )i))) ))i)I9*) ') )|))) )i))) )).Q) I9 ))) )i))) ))') I9 ) ) )yy ɇyyyщyy )yyЎ y )yyYщx yyyyyy )@) =) y  |ywixoe8Y) )YX) ) yyN88HCYyy988/.Yyy  xixy) ) Xyy)0YyyY9Y)/yyY)Y9998)I9Y99x)I99Y9)iY)@e)@I99Y9)Y99I9)I99Y9AY)7)/) )`)8-)J)E) ) )@)ਮ֏?) ) I9Y9d/)I\) ) 9))͉YyyY艤  yyy)x9r)YyyY艤Γyyyy I)9YY)9~I)9YY)9~)ꩴ^1y)<<9x39))ʩmlYѹ8yaYg\)9YU)8NIYOD)YH))J)ENFS10OFS00 FE))*  iy҉8}y) )"I) ))8  iy҉8ݫ|Գy) i)"Iy) v) )ˇ))  0 1) )8 2))i/) ,) )))  8)?yy йI iѩ)X))) C)8  iy8  iy҉8y ) I)Љ) ))  ѹ) i) Ii) ) )㇩))  ѹ8) Iy) YyY y) IiyYO) L) )))Ȯx8y)+)YcZйx)ȮUxOyǤM )Ax)-)Y xY?>))Y9 9Y)/yyi йYy  ) 9 ) 9 )9)9)9)9) ))8})@ 稹xQ Q )8)8xIYyI8)Yi99)x)xxI8YyI8)Yi99 ) )xI8YyI8)Yi9)9) )xIYy)P}p)@)yIYyЉi9)9)XYX)XYX y9)XYX)XYX y9)i)I9) )i) I9)Y9`)/)9)9 )/ 8I   щx ~Yi ƀx) X)  щy)9)) I syO yYyyyi)I9I9yYyyi)yI9R999I99 X)   ) )8)ꙃ861yO@ yYi9 y   y󩩳yYYyYy铸yyIiU ٣XԴIIȁIIyБYIi)gY)@x 8  )x )y)y9) y)y9xy_ 8)99)(93O>L@<GBI9DԢx)(>@@@<BI9DE  I9 Y91:999 )/I )09)19)29)39 E)1I)@Y99)295)396II)y)i9798)9йy@zY)Y11Y:94 EʂIY92)xz_)xY)xE) yRiY)x ~ )xy9  ))8  ix 8II8 M iyY9-) )y) )Y)y)y y i < BYx z <)9Y)F9Y)X9Y Vx Q<x)9Y9i < BYx I <)9Y)F9Y)B9Yx  y)09Y)yY09Y)1))9YI) Iy))Q))yxyY9 8Iyi)-) ixzI-YIi BiY8yi< 95x>Y) ( )4g&)4Y) 8 < BYx <)9Y)F9Y)Q9Y09Y<f94 )6f)6Y) 8 < BYx i <)9Y)F9Y)T9Y09Y<f96w)UY)u)x < BYx 3 <)9Y)F9Y)W9Y<u)ʩi') )3 |)j)2))Y)ʩ) )8 < 9 )X9)) )9IY9hY9 I8yyliYY)ᙓi)YYy)) ))XYIY i ))YYy)XI˲Iyyyy00yi )99) ))xx)9 Qʉ Y9)X99Y9 ))yyiYy) I )ʢIY +i )y))vIyyy00yi ¸)9H #i y  8  Iə8ȹx  xyiGI6i M Y '%#yiGI  i I Gi MYM)90)9 MX9EK)蹃x0) Ii)iN) x))i)) <))')t < Bx <)9Y)91 B< <) :I)i9Y<)t[)Y9)Y)&)'y9t@9IyIII9 < BYx <)9Y)9Y)9Y<)2))) 8)Xi xy_XsYXYYxEyK̭y yy0K 8iȉȉyKy y0iK iyixY9!)9 ))!Љ < Bx <) 9Y<))2)8sXYy KyYyy0Y9yYyis{)YyIЉEG)))9)9Y)ȃYYiY)yY)y9)2)8t)s,s(8y < BYx <9)yyiى8i)88 9iIYYY9Do:y)09Y)99Љ)19o898)38) )`9)D9)09yiY9& +n) )8 8)&)8 I9& + I+y)9()&9'y) )I))8yi)IYQm 8) )i)I)x)my)iIyIIIX9zG))9Yi90- < BY i <)9Y)F9Y)CY9Yii<3m_) yl})i < BYx <)9Y)F9Y)^9Y<l\)ʩylS)i < BYx <)9Y)F9Y)]9Y<l1)ʙym)x) )xI))8yl 8) )i)I)x)lډy)iIyIIIX9yh)9 < BY1i <)9Y)F9Y)JY9Yi<l) yy09YyY09Yyi > <@B)) d))))9 )9)9  )9 ) )9) )9))9 )9)9Y9 )I9 )9 )9)9 ) )9 ) )9) )9)I9 )9 )9)9) )))78)@8)I9 x 8لY)x[.)d̄Y))xY yY)0yi 0Y9Y)=yyiY9  )090)191 2 2)IiY) )ۮ:) 8) M))) 8iy)XI Iyyyy00yi)  蹊)0))XIi 90I9 i xi  ɉ8) y)yyyyxi) Y 0yyyxi) `)yyyyi )0Y))Љ9Y9 普v))8 98Yȫ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 Y)@8jYI hۂ щ)5I9 Y9 9 x)5I9 Y9 9 8)5Y9 9 9 I99 Y9SY)@8jOI hqۂ)  8 )I98 )9e99)9<)X8i щ yyyi8Y)9<)9e9 щy9i) щx))@x)y)96Y9=9>?GIK9f9g979;I98C)e) J)Yi9e?)d 9iY9x)hxY 999 <Qx8x) Y)) |)I99 9 *)) 9Ɖx)9<)968i y999iĄY)88b Y}di |0) xI9 gY)8) щ8 xiI)й nh)m) xy9)) #Љ)8 )II$Yhjj9)y))IY)@hUYh щ ~S ~oiY)hc)) 889)) l)8 ) щx x yɂ,щ)x)8 y`8Y99I))Y yIiI9 y  щ))Y9I)) 8)I wgܩI9 ϪgЩyϖYyyix) )Y$IY)8A) xYzƣ7)8A)696}95)I9Y9= eE) 8垣8TY) )x)zvY k) 9) ӄY)z)) ) I~)Y)g)x)g 5)gԮTxV)h S 5g)y9 xyyig i) q)ˉYʩ)ei9e'2)j*()YY 5©x))YYY5Y)Yy}y) )I))e9e щ)=9Y9 ~| 9)) 8)I)ӸYY)Y};y>) i)e9e}x)~쩹yI) } щ8y)=)yyy9  9yiՁ)x>Y))y)  ~Z)ق zqY)xYx2x8Z)i)9v ~i )Y|xx) )x~IYS~)hx) 9Y& ~#y) x~) ۣ~) y?Y;e;щ8y y8)Y8yyY999y9 yi y)~)) ~Y)~Y)yEh)i}I IZ xIi)9)9 ~F) x8C 8   \)HyIxiWxTR YYzi8 ) 9nI9Y9 ƉB@9t9z?8 ĶIIx'Y YYx z)Ɓ xyt׀x+9)I?+9 щ@+9IA+9) !9I9 щ!9I9)x( )Ii ))|Y)Y )sY y Y@t YyiX) yi !sjIY)͉)9yYyyi))YY sO)mI9 r) 9x׉Ys[sWsW) sQys%I)rA)x))!8YY)8iyIȫYYI)Y)) x)Y)Y)Sisi)Didi)RiriљYY))Yr))Y))Yir܇)) )rЩY )rŇ)) r Yr) Y99 ) x ) 9 Y) x)rͿȃI9)9rāII ) )8Y9 I ĹI yyyiyyi y y Yi Y   8 Y) )/Yx YrD  y YiIy8 x )Y Y)IIy8 )9r-r&IIyy晓yrщYrII剁Y ryyi yyi)) y ) y?晓yщY)9)Y 9 yyyi 9) ) xyY 9)y x)9 ) )Y  yyyyi)) 𪋈8 )Y Y)II8 )98) 9Y9qY)) y ~Yyщ)/)yY   yi yyi) )Y 9)Y9)) )N9 Y   )Y9)Apѹy ) x )xY+x )Y ʹ*x)*xY ʹ )Y 8i8y Y )))8 )oo))8 )o)8)8)xLooy)x)8x)7oo|)ow)8)ohyo`o^))}))xo? 9)) o-0o)0i9oo) ʙ) ʩ)) o09on) ʙ)) n09nn) ʙ) ʙ)n)8 09)xwn) nʩ)) )n)x)xSn) )) ) n) )) ) )nynw)ʙ)nlnj)ʩ)) ) )y)0BY9Yx)) )yY)YЧ٩ɂ@ 9)) yCw)0IiЉ)0R)1RypxIm) Iyy pxmIy ѹp_IxЉɉx ))p `Ɖ9);lOProgram requires LANG_RT: relink without SD_NO_LANG_RT.OB 4x8DOx00@0ypTi0I ))ȹyIlj9  FATAL RUNTIME ERROR: TERMINATION THRU ?BOMB 0 .@'G\'Hz~'Hz~z9PSD_SUSPEND_MGR_INTF.OB z SD_SUSPEND_MGR_INTF0  &/E VOL_SUSPENDSD_REDRAWSD_GET_POA_MAIL_COUNTSSD_CEO_MAIL_CHECKCON_FLAGS& 6 SD_SUSPEND_MGR_HOT_KEYSD_INVOKE_SUSPEND_MGR F02 >$) )) y      .C'HK'HT'HT0 SD_LOGPRT.ST   p?BOMB/p..sc..SD_C_FILE_IO!C.INIT p`sstrcpy psd_nopen ?G.IXIT 0?G.IXMT 0?G.BKPT" pLogDataLen!CTRL p}GetSw pCollectGlobalSwitches pGetArg p?NTOP p.KILL- p&?UDP000000!.REQUIRE_LANG_RT_REV_3.10!AWOFS p?URTB p(?ZMAX pb?NMAX 0?G.UTSKG pSC.sd_sys pReadLogData p<main p+WriteOutput pSysReturn"p$Switch"p@@LogData!AWPOS!AWATR! CON_TERMCAPS p(?ZBOT p?SBOT p?NBOT p.UKIL putoa/p..sc..sd_logprt" pSyncCount"p:LogHdr psd_sys" p8LogTrailer!CON_ACTIVE_PID-p&..LOW32K p?UKIL! CON_USERNAME! SD_CUR_PID psd_nread!SD_INIT!I.INIT p?sd_nclose/p..ud..sd_logprt"pOutFD"pLogFD" pReadCharCount"pLogCount!FLUSH_INTERVAL!CHARSETS!ATTRB p]sd_nwrite p)CFALT p&SFALT!AWSET!AWDSC!TIB!ACCEPT_TIMEOUT!CON_PROG!TIBATR 0?G.UKILL"pUtoaBase"pCharBase" pFunKeyName!AWBUF!TIBOFS! TIB_UPD_COUNT p/FFALT" pDisplayCount! TOP_WINDOW!FLOAT_TOP_WINDOW p.UTSK psd_nseek" pInputCount! BOTTOM_WINDOW p,IFALT 0?G.SYSCA p ?UTSK!PERIODIC_INTERVAL p.BOMB 0?G.UTSKB"p.NULLDEL!LOGOFF_INTERVAL ( .W'H'H'HMNO_?ESBB_3.60.01.OPTPAT M;--------------------------------------------------------------------- ; NO_?ESBB_3.60.01.OPTPAT 13-JUL-95 ; ;This patch disables Screen Demon's use of the ?ESBB option for ; console ?READ's. There are several bugs in AOS/VS II rev 2.10 - 3.00 ; and AOS/VS Classic 7.69 - 7.70 with this option that result in strange ; behavior. ; ; NOTE: This patch should NOT be installed if you are running ; a revision of AOS/VS II prior to rev 2.10, or if you ; are running AOS/VS Classic prior to rev 7.69, because ; it will result in less efficient console I/O. ; ; NOTE2: If this patch is installed, the Screen Demon configuration option ; TRIM_SPACE_UNDERSCORE_ON_INPUT? must be set to NO. ; ; Applies to programs linked with Screen Demon rev 3.60 SD_?ESBB_DISABLE [NOP] [WSUB 2,2] ;End of patch .@'G\'Ht'Ht5"SD_SEND_MAIL_NOSD.OB  SD_SEND_MAIL_NOSD-*@EXTC_SD_PERIODIC_CALLSEXTC_SD_PRE_PROC_CALLSEXTC_SD_SCREEN_SAVER_CALLS1 T ^k{  6ESd    %9GZhx   012 C3/SD.SYSCALLSD_NEW_WINDOWSD_REMOVE_WINDOWSD_FLUSHSD_CREATE_FLOAT_WINDOWSD_MONITOR_STRINGSD_MONITOR_STRING_INTO_WINDOWSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_DRAW_BOXSD_GETCHARSD_OUTPUT_STRINGSD_MESSAGE_JSRSD_SYS_ERROR_MESSAGE_JSRSD_MEM_ALLOCATESD_MEM_FREE_BPSET_FLD_DELIM_TBLSD_CONSOLE_GET_VIRTUAL_CHARSD_CONSOLE_SET_VIRTUAL_CHARSD_CONSOLE_GET_VIRTUAL_DELIM_TBLSD_CONSOLE_SET_VIRTUAL_DELIM_TBLSD_TURBO_FULLSD_TURBO_RESETSD_SET_SECONDARY_PROGRAM_NAMESD_READ_MAILSD_MENUSD_ERROR_MESSAGE_JSRMAIL_INDICATORMAIL_INDICATOR_SIZEMAIL_VIEW_LINEMAIL_VIEW_COLUMNMAIL_VIEW_HEIGHTMAIL_VIEW_WIDTHSD_INPUT_MAIL_TITLEPERIODIC_INTERVALNONFN_TBLNONPRT_TBLNULL_TBLICTRLICTRL2CTRLAWDSCAWPOSAWOFSAWATRCON_USERNAMESD_WORK_DIR_PATHSD_IMMEDIATE_MAIL_DELIVERYSD_ALT_EXIT_KEY[J:SCREEN_DEMON_3.60SD_SEND_MAIL=? A Z  )) .@'G\W'H}'Ht5:SD_SL_INIT.OB  SD_SL_INIT$SD_INTERCEPT_SYSCALLEXTC_SD_INIT_CALLS )  .@'G\h'H}'Ht5FSD_SL_MEM_PARAMS.OB  SD_SL_MEM_PARAMS*)!&C@SD_UNINITIALIZED_DATA_PARTSD_SHARED_DATA_PART"'?NMAX?SBOT?NTOPSD_INIT)8=BJ?UTSK.UKIL?G.UTSKG?G.UTSKB             .@'Foy'Hu'HurOZSDICSCREENPRINT.CO r ******************************************************************************* * $Id: sdicscreenprint.co,v 1.4 1995/07/11 20:51:14 mark Exp mark $ * * $Log: sdicscreenprint.co,v $ * Revision 1.4 1995/07/11 20:51:14 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 * ******************************************************************************* IDENTIFICATION DIVISION. PROGRAM-ID. SDICSCREENPRINT. ************************************************************************** *** Screen Demon 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 *** *** *** ************************************************************************** *** NOTE: To enable the ability to create Image Format screen dumps, * change all occurrances of the string "*I*" to nothing. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. DG. OBJECT-COMPUTER. DG. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT TEXT-FILE ASSIGN TO PRINTER, OUTPUT-FILE-NAME ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL STATUS IS OUTPUT-FILE-STATUS. SELECT IMAGE-FILE ASSIGN TO DISK, OUTPUT-FILE-NAME ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS OUTPUT-FILE-STATUS. DATA DIVISION. FILE SECTION. FD TEXT-FILE LABEL RECORDS ARE OMITTED. 01 TEXT-LINE. 05 TEXT-LINE-CHAR OCCURS 132 TIMES PIC X(01). FD IMAGE-FILE LABEL RECORDS ARE OMITTED. 01 IMAGE-BUFFER. COPY "SDIMAGE.DEF". WORKING-STORAGE SECTION. ** This copy file is included here so that the fields defined within it * will be word-aligned for older revisions of ICOBOL. COPY "SDCONSTANTS.WS". 01 BOX-LINE PIC 9(04) COMP VALUE 10. 01 BOX-COLUMN PIC 9(04) COMP VALUE 14. 01 BOX-HEIGHT PIC 9(04) COMP VALUE 4. 01 BOX-WIDTH PIC 9(04) COMP VALUE 51. 01 BOX-LABEL PIC X(28) VALUE " SCREEN DEMON Screen Print| ". 01 OUTPUT-FILE-NAME PIC X(32) VALUE SPACES. 01 OUTPUT-FILE-STATUS PIC X(02) VALUE SPACES. 88 OUTPUT-FILE-OK VALUES ARE "00" THRU "0Z". 88 OUTPUT-FILE-NOT-OK VALUES ARE "10" THRU "ZZ". 01 OUTPUT-FORMAT-TYPE. 05 FILLER PIC X(01) VALUE "(". 05 OUTPUT-FORMAT-CODE PIC X(01) VALUE "T". 88 OUTPUT-FORMAT-IS-TEXT VALUE IS "T". 88 OUTPUT-FORMAT-IS-IMAGE VALUE IS "I". 05 FILLER PIC X(12) VALUE "ext Format) ". 01 LINE-NO PIC 9(02) VALUE ZERO. 01 NEW-LINE. 05 FILLER PIC 9(02) COMP VALUE 10. 01 DELIMITER-CODE PIC X(02) VALUE "00". 88 DELIMITER-WAS-NL VALUE IS "00". 88 DELIMITER-WAS-F1 VALUE IS "02". 01 IN-USE-FLAG PIC X(01) VALUE "N". 88 SCREENPRINT-IS-ALREADY-IN-USE VALUE IS "Y". *I*01 BOX-HEIGHT-IMAGE-INCREMENT PIC 9 VALUE 1. SCREEN SECTION. 01 OUTPUT-FILENAME-SCREEN. 05 LINE 12 COLUMN 17 "Output Filename". 05 COLUMN PLUS 1 PIC X(30) USING OUTPUT-FILE-NAME. *I* 05 LINE 13 COLUMN 17 PIC X(14) FROM OUTPUT-FORMAT-TYPE. *I* 05 " <-- press to switch format". PROCEDURE DIVISION. DECLARATIVES. *** These declarative routines are here only to prevent the program * from aborting on an unexpected I/O error. TEXT-FILE-ERROR SECTION. USE AFTER ERROR PROCEDURE ON TEXT-FILE. PROCESS-TEXT-FILE-ERROR. EXIT. *I*IMAGE-FILE-ERROR SECTION. *I* USE AFTER ERROR PROCEDURE ON IMAGE-FILE. *I*PROCESS-IMAGE-FILE-ERROR. *I* EXIT. END DECLARATIVES. SCREEN-PRINT-ROUTINE SECTION. SCREEN-PRINT-BEGIN. IF SCREENPRINT-IS-ALREADY-IN-USE GO TO SCREEN-PRINT-EXIT. MOVE "Y" TO IN-USE-FLAG. *** Request a current screen image, specifying the optional arguments * to indicate that the IMAGE-BUFFER field is large enough to receive * the complete rev 3.00 image buffer contents, no matter what default * sizes were declared in the configuration file. The values used for * these parameters are constant fields defined in SDCONSTANTS.WS CALL "SD_GET_IMAGE" USING IMAGE-BUFFER, SD-LPP, SD-CPL, SD-IMAGE-PARAMETERS-SIZE. *I**** The following increases box height to allow for image prompt, *I** but just the first time SDICSCREENPRINT is called. *I* ADD BOX-HEIGHT-IMAGE-INCREMENT TO BOX-HEIGHT. *I* MOVE ZERO TO BOX-HEIGHT-IMAGE-INCREMENT. CALL "SD_NEW_WINDOW" USING BOX-LINE, BOX-COLUMN, BOX-HEIGHT, BOX-WIDTH, BOX-LABEL. IF OUTPUT-FILE-NAME = SPACES IF OUTPUT-FORMAT-IS-TEXT MOVE "@LPT" TO OUTPUT-FILE-NAME ELSE MOVE "SCREEN.IMAGE" TO OUTPUT-FILE-NAME. PERFORM GET-OUTPUT-FILENAME. IF OUTPUT-FILE-NAME NOT = SPACES AND DELIMITER-WAS-NL PERFORM DUMP-SCREEN-TO-FILE. CALL "SD_REMOVE_WINDOW". MOVE "N" TO IN-USE-FLAG. SCREEN-PRINT-EXIT. EXIT PROGRAM. SCREEN-PRINT-END. STOP RUN. GET-OUTPUT-FILENAME. DISPLAY OUTPUT-FILENAME-SCREEN. ACCEPT OUTPUT-FILENAME-SCREEN. ACCEPT DELIMITER-CODE FROM ESCAPE KEY. *I* IF DELIMITER-WAS-F1 *I* PERFORM SWITCH-OUTPUT-FORMAT *I* GO TO GET-OUTPUT-FILENAME. *I*SWITCH-OUTPUT-FORMAT. *I* IF OUTPUT-FORMAT-IS-TEXT *I* MOVE "(Image Format)" TO OUTPUT-FORMAT-TYPE *I* ELSE *I* MOVE "(Text Format) " TO OUTPUT-FORMAT-TYPE. DUMP-SCREEN-TO-FILE. *I* IF OUTPUT-FORMAT-IS-IMAGE *I* PERFORM DUMP-SCREEN-AS-IMAGE *I* ELSE PERFORM DUMP-SCREEN-AS-TEXT. *I*DUMP-SCREEN-AS-IMAGE. *I* PERFORM OPEN-IMAGE-FILE. *I* IF OUTPUT-FILE-OK *I* PERFORM WRITE-IMAGE-FILE. *I* PERFORM CLOSE-IMAGE-FILE. DUMP-SCREEN-AS-TEXT. PERFORM OPEN-TEXT-FILE. PERFORM DUMP-SCREEN-LINES-TO-FILE VARYING LINE-NO FROM 1 BY 1 UNTIL LINE-NO > SD-LPP OR OUTPUT-FILE-NOT-OK. PERFORM CLOSE-TEXT-FILE. DUMP-SCREEN-LINES-TO-FILE. MOVE SD-IMAGE-LINE OF IMAGE-BUFFER (LINE-NO) TO TEXT-LINE. PERFORM WRITE-TEXT-LINE. OPEN-TEXT-FILE. OPEN EXTEND TEXT-FILE. CLOSE-TEXT-FILE. CLOSE TEXT-FILE. WRITE-TEXT-LINE. WRITE TEXT-LINE. *I*OPEN-IMAGE-FILE. *I* OPEN EXTEND IMAGE-FILE. *I* *I*CLOSE-IMAGE-FILE. *I* CLOSE IMAGE-FILE. *I* *I*WRITE-IMAGE-FILE. *I* WRITE IMAGE-BUFFER. ********** Last line of SDICSCREENPRINT.CO ********** .@'Huo'Hu|'Hu|:SHARED_SCREEN_DEMON.LB  sROOT_SCREEN_DEMON_RTD.OBnTROOT_SCREEN_DEMONROOT_SD_INIT_CALLSROOT_SD_PERIODIC_CALLSROOT_SD_SHUTDOWN_CALLSROOT_SD_PRE_HOT_CALLSROOT_SD_POST_HOT_CALLSROOT_SD_PRE_INPUT_CALLSROOT_SD_POST_INPUT_CALLSROOT_SD_HOT_KEY_LISTNSD_LANG_RT_INTFUSR?TRAP1@SCREEN_DEMON_SLI.OBSN.SCREEN_DEMONSCREEN_DEMON_SLI.OBEND_SCREEN_DEMON_SLI.OB" XG?SD_INITSD_INITXG?SD_SHUTDOWN SD_SHUTDOWN(XG?SD_POP_UP_MENUSD_POP_UP_MENU XG?SD_MENUSD_MENU1 XG?SD_MESSAGE SD_MESSAGEXG?SD_ERROR_MESSAGESD_ERROR_MESSAGE?XG?SD_SYS_ERROR_MESSAGESD_SYS_ERROR_MESSAGE XG?SD_FLUSHSD_FLUSHO XG?SD_DISPLAY SD_DISPLAYXG?SD_DISPLAY_INTO_STRINGSD_DISPLAY_INTO_STRING cXG?SD_INPUT_STRINGSD_INPUT_STRING XG?SD_SET_ACCEPT_TIMEOUTSD_SET_ACCEPT_TIMEOUT {XG?SD_READ_CHAR SD_READ_CHAR XG?SD_READ_CHAR_ONLYSD_READ_CHAR_ONLY XG?SD_RETURN_INPUTSD_RETURN_INPUT XG?SD_NEW_WINDOW SD_NEW_WINDOW XG?SD_REMOVE_WINDOWSD_REMOVE_WINDOW &XG?SD_NEW_WINDOW_NO_INITSD_NEW_WINDOW_NO_INIT XG?SD_ACTIVE_WINDOWSD_ACTIVE_WINDOW?XG?SD_SUSPEND_WINDOWSD_SUSPEND_WINDOWXG?SD_TOP_WINDOW SD_TOP_WINDOWQXG?SD_FLOAT_WINDOWSD_FLOAT_WINDOW!XG?SD_GET_WINDOW_DESCRIPTORSD_GET_WINDOW_DESCRIPTOR!lXG?SD_PUT_WINDOW_DESCRIPTORSD_PUT_WINDOW_DESCRIPTORXG?SD_GET_WINDOW_VIEWSD_GET_WINDOW_VIEW XG?SD_GET_NEXT_WINDOW_VIEWSD_GET_NEXT_WINDOW_VIEWXG?SD_PUT_WINDOW_VIEWSD_PUT_WINDOW_VIEWXG?SD_NEW_WINDOW_VIEWSD_NEW_WINDOW_VIEW3XG?SD_DRAW_BOX SD_DRAW_BOXXG?SD_DRAW_VLINE SD_DRAW_VLINE?XG?SD_DRAW_HLINE SD_DRAW_HLINEXG?SD_MAIN_MENU SD_MAIN_MENUL XG?SD_REDRAW SD_REDRAW XG?SD_COMMAND SD_COMMANDS XG?SD_NOTEPAD SD_NOTEPADXG?SD_READ_MAIL SD_READ_MAIL]XG?SD_INPUT_MAIL SD_INPUT_MAILXG?SD_SEND_MAIL SD_SEND_MAILjXG?SD_CLI_INTERFACESD_CLI_INTERFACE XG?SD_CLI_CMD SD_CLI_CMDx XG?SD_PROC_PR SD_PROC_PR XG?SD_USER_ID SD_USER_IDXG?SD_SET_CLI_INIT_CMDSD_SET_CLI_INIT_CMD XG?SD_GET_CONTROLSD_GET_CONTROL XG?SD_CONTROL SD_CONTROLXG?SD_TURBO_ON SD_TURBO_ONXG?SD_TURBO_OFF SD_TURBO_OFF$XG?SD_TURBO_FULL SD_TURBO_FULLXG?SD_TURBO_PARTIALSD_TURBO_PARTIAL5XG?SD_BYPASS_ON SD_BYPASS_ONXG?SD_BYPASS_OFF SD_BYPASS_OFFB XG?SD_DISABLE SD_DISABLE XG?SD_ENABLE SD_ENABLE IXG?SD_PUT_VALUE SD_PUT_VALUE XG?SD_GET_VALUE SD_GET_VALUE!UXG?SD_GET_IMAGE SD_GET_IMAGE! XG?SD_GET_POS SD_GET_POS"_XG?SD_LOAD_TIB SD_LOAD_TIB"XG?SD_CREATE_WINDOWSD_CREATE_WINDOW!#nXG?SD_CREATE_WINDOW_NO_INITSD_CREATE_WINDOW_NO_INIT$XG?SD_MOVE_WINDOW_DOWNSD_MOVE_WINDOW_DOWN$XG?SD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_LEFT%XG?SD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_RIGHT%XG?SD_MOVE_WINDOW_UPSD_MOVE_WINDOW_UP&3XG?SD_SCROLL_WINDOW_DOWNSD_SCROLL_WINDOW_DOWN&XG?SD_SCROLL_WINDOW_LEFTSD_SCROLL_WINDOW_LEFT'QXG?SD_SCROLL_WINDOW_RIGHTSD_SCROLL_WINDOW_RIGHT'XG?SD_SCROLL_WINDOW_UPSD_SCROLL_WINDOW_UP(nXG?SD_SET_WINDOW_SIZESD_SET_WINDOW_SIZE(XG?SD_SET_USER_IDSD_SET_USER_ID )XG?SD_SET_AND_LOCK_USER_IDSD_SET_AND_LOCK_USER_ID*XG?SD_UNLOCK_USER_IDSD_UNLOCK_USER_ID*XG?SD_GET_USER_IDSD_GET_USER_ID$+&XG?SD_GET_HOT_CALLED_FROM_NAMESD_GET_HOT_CALLED_FROM_NAME!+XG?SD_GET_IMAGE_BELOW_FLOATSD_GET_IMAGE_BELOW_FLOAT,MXG?SD_MONITOR_STRINGSD_MONITOR_STRING#,XG?SD_MONITOR_STRING_INTO_TIBSD_MONITOR_STRING_INTO_TIB&-l XG?SD_MONITOR_STRING_INTO_WINDOWSD_MONITOR_STRING_INTO_WINDOW.XG?SD_OUTPUT_STRINGSD_OUTPUT_STRING .XG?SD_SET_ACCEPT_LOWERCASESD_SET_ACCEPT_LOWERCASE /XG?SD_SET_ACCEPT_UPPERCASESD_SET_ACCEPT_UPPERCASE /XG?SD_CREATE_WINDOW_NO_BOXSD_CREATE_WINDOW_NO_BOX0@XG?SD_SET_WINDOW_POSITIONSD_SET_WINDOW_POSITION$0XG?SD_SET_ACCEPT_CURSOR_OFFSETSD_SET_ACCEPT_CURSOR_OFFSET&1e XG?SD_SET_SECONDARY_PROGRAM_NAMESD_SET_SECONDARY_PROGRAM_NAME1XG?SD_MESSAGE_ONLYSD_MESSAGE_ONLY2XG?SD_OBTAIN_INPUTSD_OBTAIN_INPUT3XG?SD_DISCARD_TYPE_AHEADSD_DISCARD_TYPE_AHEAD$3XG?SD_GET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_CURSOR_OFFSET42XG?SD_GET_CONSOLE_STATUSSD_GET_CONSOLE_STATUS4XG?SD_GET_TERMCAPSSD_GET_TERMCAPS5JXG?SD_BITS_TO_DIGITSSD_BITS_TO_DIGITS5XG?SD_DIGITS_TO_BITSSD_DIGITS_TO_BITS6`XG?SD_TEMPLATE_MATCHSD_TEMPLATE_MATCH#6XG?SD_GET_CONSOLE_DEVICE_NAMESD_GET_CONSOLE_DEVICE_NAME7XG?SD_DISABLE_HOT_KEYSSD_DISABLE_HOT_KEYS8 XG?SD_ENABLE_HOT_KEYSSD_ENABLE_HOT_KEYS8XG?SD_GET_ACCEPT_POSSD_GET_ACCEPT_POS9#XG?SD_TURBO_RESETSD_TURBO_RESET9XG?SD_SET_LOGOFF_INTERVALSD_SET_LOGOFF_INTERVAL:;XG?SD_DIRECT_OUTPUTSD_DIRECT_OUTPUT:XG?SD_CLONE_WINDOWSD_CLONE_WINDOW%;NXG?SD_RESTORE_WINDOW_FROM_CLONESD_RESTORE_WINDOW_FROM_CLONE;XG?SD_SET_LINEDRAW_STYLESD_SET_LINEDRAW_STYLE"XG?SD_EXTENDED_READ_CHARSD_EXTENDED_READ_CHAR>XG?SD_ASK_QUESTIONSD_ASK_QUESTION?:E SL.DERR.HOOK SL.DERR.IHOOK SL.DERR.HOOK$?DND.SCREEN_DEMON_DUMMYND.SCREEN_DEMONNDAT.SCREEN_DEMON ROOT_SCREEN_DEMON_RTD.OBROOT?IG_TABLE_STARTROOT?IG_TABLE_PART ROOT_SD_INIT_CALLS ROOT_SD_PERIODIC_CALLS ROOT_SD_SHUTDOWN_CALLS ROOT_SD_PRE_HOT_CALLS  ROOT_SD_POST_HOT_CALLS  ROOT_SD_PRE_INPUT_CALLS  ROOT_SD_POST_INPUT_CALLS  ROOT_SD_HOT_KEY_LIST N.ROOT?IG_TABLES   ROOT_SCREEN_DEMON.SL                        !  #  %     ' ROOT_SCREEN_DEMONCSD_SHARED_DATA_PARTj(:Pf{EXTC_SD_INIT_CALLSEXTC_SD_PERIODIC_CALLSEXTC_SD_SHUTDOWN_CALLSEXTC_SD_PRE_HOT_CALLSEXTC_SD_POST_HOT_CALLSEXTC_SD_PRE_INPUT_CALLSEXTC_SD_POST_INPUT_CALLSEXTC_SD_HOT_KEY_LISThz  ROOT_SD_INIT_CALLSROOT_SD_PERIODIC_CALLSROOT_SD_SHUTDOWN_CALLSROOT_SD_PRE_HOT_CALLSROOT_SD_POST_HOT_CALLSROOT_SD_PRE_INPUT_CALLSROOT_SD_POST_INPUT_CALLSROOT_SD_HOT_KEY_LIST0       SD_LANG_RT_INTF   SD_INITUSR?TRAP )  SCREEN_DEMON_SLI.OB?SL_INTERFACE_START ?SL_INTERFACE_PART?SL_INTERFACE_END ND.SCREEN_DEMON NDAT.SCREEN_DEMONSN.SCREEN_DEMON  SCREEN_DEMON_SLI.OB  END_SCREEN_DEMON_SLI.OB  SCREEN_DEMON.SL #      XG?SD_INIT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_INIT ND.SCREEN_DEMON 9    XG?SD_SHUTDOWN?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_SHUTDOWN ND.SCREEN_DEMON 9   XG?SD_POP_UP_MENU?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_POP_UP_MENU ND.SCREEN_DEMON 9   XG?SD_MENU?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_MENU ND.SCREEN_DEMON 9   XG?SD_MESSAGE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_MESSAGE ND.SCREEN_DEMON 9    XG?SD_ERROR_MESSAGE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_ERROR_MESSAGE ND.SCREEN_DEMON 9    XG?SD_SYS_ERROR_MESSAGE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SYS_ERROR_MESSAGE ND.SCREEN_DEMON 9    XG?SD_FLUSH?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_FLUSH ND.SCREEN_DEMON 9    XG?SD_DISPLAY?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_DISPLAY ND.SCREEN_DEMON 9    XG?SD_DISPLAY_INTO_STRING?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_DISPLAY_INTO_STRING ND.SCREEN_DEMON 9   XG?SD_INPUT_STRING?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_INPUT_STRING ND.SCREEN_DEMON 9   XG?SD_SET_ACCEPT_TIMEOUT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SET_ACCEPT_TIMEOUT ND.SCREEN_DEMON 9   XG?SD_READ_CHAR?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_READ_CHAR ND.SCREEN_DEMON 9   XG?SD_READ_CHAR_ONLY?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_READ_CHAR_ONLY ND.SCREEN_DEMON 9   XG?SD_RETURN_INPUT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_RETURN_INPUT ND.SCREEN_DEMON 9   XG?SD_NEW_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_NEW_WINDOW ND.SCREEN_DEMON 9   XG?SD_REMOVE_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_REMOVE_WINDOW ND.SCREEN_DEMON 9   XG?SD_NEW_WINDOW_NO_INIT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_NEW_WINDOW_NO_INIT ND.SCREEN_DEMON 9   XG?SD_ACTIVE_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_ACTIVE_WINDOW ND.SCREEN_DEMON 9   XG?SD_SUSPEND_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SUSPEND_WINDOW ND.SCREEN_DEMON 9   XG?SD_TOP_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_TOP_WINDOW ND.SCREEN_DEMON 9   XG?SD_FLOAT_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_FLOAT_WINDOW ND.SCREEN_DEMON 9   XG?SD_GET_WINDOW_DESCRIPTOR?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_GET_WINDOW_DESCRIPTOR ND.SCREEN_DEMON 9   XG?SD_PUT_WINDOW_DESCRIPTOR?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_PUT_WINDOW_DESCRIPTOR ND.SCREEN_DEMON 9   XG?SD_GET_WINDOW_VIEW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_GET_WINDOW_VIEW ND.SCREEN_DEMON 9   XG?SD_GET_NEXT_WINDOW_VIEW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_GET_NEXT_WINDOW_VIEW ND.SCREEN_DEMON 9   XG?SD_PUT_WINDOW_VIEW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_PUT_WINDOW_VIEW ND.SCREEN_DEMON 9   XG?SD_NEW_WINDOW_VIEW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_NEW_WINDOW_VIEW ND.SCREEN_DEMON 9     XG?SD_DRAW_BOX?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_DRAW_BOX ND.SCREEN_DEMON 9!   XG?SD_DRAW_VLINE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  @  SL.DERR.IHOOK SD_DRAW_VLINE ND.SCREEN_DEMON 9"   XG?SD_DRAW_HLINE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_DRAW_HLINE ND.SCREEN_DEMON 9#   XG?SD_MAIN_MENU?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_MAIN_MENU ND.SCREEN_DEMON 9$   XG?SD_REDRAW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_REDRAW ND.SCREEN_DEMON 9%   XG?SD_COMMAND?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_COMMAND ND.SCREEN_DEMON 9&   XG?SD_NOTEPAD?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_NOTEPAD ND.SCREEN_DEMON 9'   XG?SD_READ_MAIL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_READ_MAIL ND.SCREEN_DEMON 9(   XG?SD_INPUT_MAIL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_INPUT_MAIL ND.SCREEN_DEMON 9)   XG?SD_SEND_MAIL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_SEND_MAIL ND.SCREEN_DEMON 9*   XG?SD_CLI_INTERFACE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_CLI_INTERFACE ND.SCREEN_DEMON 9+   XG?SD_CLI_CMD?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_CLI_CMD ND.SCREEN_DEMON 9,   XG?SD_PROC_PR?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_PROC_PR ND.SCREEN_DEMON 9-   XG?SD_USER_ID?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_USER_ID ND.SCREEN_DEMON 9.   XG?SD_SET_CLI_INIT_CMD?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SET_CLI_INIT_CMD ND.SCREEN_DEMON 9/   XG?SD_GET_CONTROL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_GET_CONTROL ND.SCREEN_DEMON 90   XG?SD_CONTROL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_CONTROL ND.SCREEN_DEMON 91    XG?SD_TURBO_ON?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_TURBO_ON ND.SCREEN_DEMON 92   XG?SD_TURBO_OFF?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_TURBO_OFF ND.SCREEN_DEMON 93   XG?SD_TURBO_FULL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_TURBO_FULL ND.SCREEN_DEMON 94   XG?SD_TURBO_PARTIAL?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_TURBO_PARTIAL ND.SCREEN_DEMON 95   XG?SD_BYPASS_ON?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_BYPASS_ON ND.SCREEN_DEMON 96   XG?SD_BYPASS_OFF?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_BYPASS_OFF ND.SCREEN_DEMON 97   XG?SD_DISABLE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_DISABLE ND.SCREEN_DEMON 98   XG?SD_ENABLE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_ENABLE ND.SCREEN_DEMON 99   XG?SD_PUT_VALUE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_PUT_VALUE ND.SCREEN_DEMON 9:   XG?SD_GET_VALUE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_GET_VALUE ND.SCREEN_DEMON 9;   XG?SD_GET_IMAGE?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_GET_IMAGE ND.SCREEN_DEMON 9<   XG?SD_GET_POS?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_GET_POS ND.SCREEN_DEMON 9=    XG?SD_LOAD_TIB?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK SD_LOAD_TIB ND.SCREEN_DEMON 9>   XG?SD_CREATE_WINDOW?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_CREATE_WINDOW ND.SCREEN_DEMON 9?   XG?SD_CREATE_WINDOW_NO_INIT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_CREATE_WINDOW_NO_INIT ND.SCREEN_DEMON 9@   `  XG?SD_MOVE_WINDOW_DOWN?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_MOVE_WINDOW_DOWN ND.SCREEN_DEMON 9A   XG?SD_MOVE_WINDOW_LEFT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_MOVE_WINDOW_LEFT ND.SCREEN_DEMON 9B   XG?SD_MOVE_WINDOW_RIGHT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_MOVE_WINDOW_RIGHT ND.SCREEN_DEMON 9C   XG?SD_MOVE_WINDOW_UP?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_MOVE_WINDOW_UP ND.SCREEN_DEMON 9D   XG?SD_SCROLL_WINDOW_DOWN?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SCROLL_WINDOW_DOWN ND.SCREEN_DEMON 9E   XG?SD_SCROLL_WINDOW_LEFT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SCROLL_WINDOW_LEFT ND.SCREEN_DEMON 9F   XG?SD_SCROLL_WINDOW_RIGHT?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOKSD_SCROLL_WINDOW_RIGHT ND.SCREEN_DEMON 9G   XG?SD_SCROLL_WINDOW_UP?SL_INTERFACE_PART END_SCREEN_DEMON_SLI.OB  SL.DERR  SL.DERR.IHOOK