:,`.W'b|'k|'b|$c\MAKE_SD_ICRUN.CLI [!equal,,RCS] **************************************************************** $Id: make_sd_icrun.cli,v 1.5 1995/08/10 19:42:57 mark Exp mark $ $Log: make_sd_icrun.cli,v $ Revision 1.5 1995/08/10 19:42:57 mark what newer versions of CRT.LB REALLY need is a /F switch!! Revision 1.4 1995/08/10 17:38:07 mark newer versions of CRT.LB need a /multiple switch! 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.207: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/f & [!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 [!a cscii 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 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]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] .D'a'c0'aKWNONICX.PATCH_LIST Kwp_cli_3.60.02.pat,& init_cont_3.60.02.pat,& transp_cmd_flush_3.60.02.pat& .@'{'c0'{=8SD_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 ~    XL&_:dQ 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ع8xYyIYIIy))   xyIIY  y y  )))i ɀi xI py ɇYY yXIyi)Y)@ɂ  x)8Y YpY)iI) p)ɦɃ II #)ӸI)ɀi0iix@yyy x f! &!)-1 4 K"q.| -g f   . %-,;^FK@yyyyy _y8IߍY9)I9c) ♈ @yyły) ⩣ W%, >*h/52>71JhP1VXY%GX)x) zyyyy@y *y ߍY9)I9cY)1 yy~ֱyyyy@y  ەy))) x蹈)8)nyyx)) Y)  ǎ kyy ~śyyyy@y C vy)♣  Fyy ~.U%!+$)>3h85;>A4D2Whh2s,x4}1?8_,1V%2V%!KWy NyϤ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 I yy8yyyy@y Ǝ )♻ yy) xy)9)9)9 Y999i))xy Yyщy)IЉ)) Yyщy)I Ǝ jyy |ěyyyy@y)⹂xyy |y .⩁YYY)X xixx i ؉yy |syy |jyyyy@y)xY)8)yI y 8 I)8)YYI8 Iȉy ׭yx)Y)8y)nyy)ɀ)Љ)) 6x)9)y  y))  y)))IY99Yxy5y)qy  y)) y9))xy)Sy x999yy)9)9)9Љ yy)IY8)>8Љ)@YxI  Y) 8 I 8 ⩻,⹁.㉁Byy zЉyy YyY) 8 I 8 ⩻,⹁.㉁Byy zY9){y)) yYIIy9Y99))8 yy)y) )y)Cy ,-#hCOGPS~DEOJOhP O%-,,5&? E QhX dSg%j3m5p3u@{1?8!98;"   9Y>@AFHUTX%[Z^Yaed_m t.{    hT%ZY.    h..  y)) yyYق))8 yy)))Y8Y)y  yY9Y Y) 8 I 8 ⩻,⹁.㉁Byy yYyYyY) 8 I 8 ⩻,⹁.㉁Byy yy9Y)Iyy8։)>Ii)I9III)Iy)0Iy iy)))8))))0y  y))xy)II)I yx)y) yy艇yyyy@y8)⹀ )nyx)Y)8y)nyy)ɀ)Љ)) x))x)yIY))`Y)8)Wy  yy)))@yy)) yYI YyIY))i)`8)xY) 8 Y)xyy xyy wi9)) y))yɀY)Ȃ9ЉY Îgyy wyy wyyyy@y8x8㉉yy w9=yy wyyyy@yIxyyyy@yYy8x8㉓@)8yyyIyyy w59MTP%SZVY].d k o t yhT%ZY.    h  Y@F C LP[ g,lO~353@1?8!98;" 2,  E 2&,0d5 =2CH L9 ,OF,OB@} 㸎݂yy w )a wyyyy@yIxyyyy@yYy8㉓@x)฻yyIyyy v̼9t8yy vyyyy@y8x8㉋@)yIyy v9븎4yy vxyyyy@yxx㉙88Yyщy8@)Iyy v89xyy v$yy@y)IYyU)©Yyyy uyyyy@y))YyU)©Yyy uȉbyy uyyyy@y:my$8,0 yyN8y,ک کЉ&yy uy,ک کЉkyy ujy)YY8yyyy@yՎy YN8yy u5BN u,4,AORBX@,OC,OC-RQ#h(-/QC-KRNQShX-_Q   h    '(hhn 3)x))xyyyy@yǮyytb8s t tY)x)]8yyyy@y\Îgyy t t- b@#2h@-Gb[^ j3)x-)8yyyy@y)\4yysbx< t ty))8)xy)♀)x)xY8ɇy))♣)) ))))) ♠y)8I4Y t)M s s))x) sȉێyy sڛyyyy@yWyA8. yyK8y.ک کЉGyy sy.ک کЉ0yy s#yy s}yyyy@y.y偸.^yy s[) sUyyyy@yԎyI) IyIЉ5YY9YY@Y#yy s! xYyy s)Y024) Y9999Iۂ)4)QYx Y9999Iۂ)4x02YYU))I002IISy)i) 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-IMhhYY2IYYxIxyYYYyy8IIyI)@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, 1 ; l ,e'H  p q  P m % 0 4Pjlnprtz~jr~ .W'r(T 'u9  SD_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 @. [] SD_ICRUN_GETENV_KERN+1 0 @(getenv_kern+1) SD_ICRUN_GETENV_KERN_CONTD [NOP] @(getenv_kern+2) ^+1 [NOP] @(getenv_kern+3) ^+1 [NOP] @(getenv_kern+4) getenv_kern 123451 [LJMP SD_ICRUN_GETENV_KERN,1] ^+1 @. [] ^+1 @. [] ;End of patch .D'po\(T'po_WP_CLI_3.60.02.PAT ;--------------------------------------------------------------------- ; WP_CLI_3.60.02.PAT 22-AUG-95 ; ;This patch corrects a problem with the CLI interface hot key routine that ; causes a fatal error when the WordPerfect Office interface is present. ; Applies to programs linked with Screen Demon rev 3.60 SD_WP_SHELL_CLI+33 121771 [LWLDA 0,SD_WP_SHELL_CLI_LETTER,1] SD_WP_SHELL_CLI<>0 ^+1 @. [] SD_WP_SHELL_CLI<>0 ^+1 @. [] SD_WP_SHELL_CLI<>0 ;end of patch .D'wH(T'wIB/IC_LOGOFF_TERM_3.60.02.PAT ;--------------------------------------------------------------------- ; IC_LOGOFF_TERM_3.60.02.PAT 20-SEP-95 ; ;This patch corrects a problem with Automatic Logoff when running under ; ICOBOL 1.70 and above, either ICX or ICRUN. Screen Demon requested ; that the interpreter terminate itself by simulating a shutdown message ; from the server (MLS or ICEXEC). However, Screen Demon did not give ; the interpreter a chance to respond to the request before terminating ; the process itself. This could result in corrupted files. ; Applies to ICX 1.70/1.71 or ICRUN interpreters linked with ; Screen Demon revision 3.60; not required otherwise. SD_TERMINATE+46 [WBR SD_TERMINATE+27] [WRTN] ;end of patch .W'cQ'kP'cRzq,7SD_CONFIG_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; $Log: sd_config_defines.sr,v $ ; Revision 1.12 1995/08/09 16:32:03 mark ; Hot key ACL and DIRECTORY commands got "might not be relocatable" errors ; when running MAKE_SD_CONFIG ; ; 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 v @ alue 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 number, 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 ?HOT_KEY_HAS_DIR = 0 ;Flag, set once a DIRECTORY cmd has been ; encountered in current hot key def ;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_HAS_ACL .DWORD ?HOT_KEY_ACL-?HOT_KEY_LOC .ELSE .DWORD 0 .ENDC .LOC ?HOT_KEY_LOC+SD_HOT_DIR .IFN ?HOT_KEY_HAS_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_KEY_HAS_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 = . ?HOT_KEY_HAS_DIR = 1 .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 input ; 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_REMOTE_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 dynam ic 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_CLOCK_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_K EYBD_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 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_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 in  put 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 (?B  UILD?<>?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 need 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 a @ lt 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, allowing ^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 referen `qce .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_BASE+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 .D'a'c1'ahSICX.PATCH_LIST hwp_cli_3.60.02.pat,& init_cont_3.60.02.pat,& ic_logoff_term_3.60.02.pat,& transp_cmd_flush_3.60.02.pat& .W'i*(T'i+ZINIT_CONT_3.60.02.PAT ;--------------------------------------------------------------------- ; INIT_CONT_3.60.02.PAT 12-SEP-95 ; ;This patch corrects a problem with Screen Demon's initialization routine ; where a fatal error could sometimes occur if the father process was a ; Screen Demon program, but this program is not the target of the father's ; ?PROC. ; Applies to programs linked with Screen Demon 3.60 SD_INIT+1757 [WSEQ 1,1] [LDAFP 3] ^+1 [WBR SD_INIT+2006] [WSEQ 1,1] ^+1 [LLEF 2,ICTRL2,1] [WBR SD_INIT+2006] ^+1 [] [LLEF 2,ICTRL2,1] ^+1 [] [] ^+1 [NLDAI 16,1] [] ^+1 [] [NLDAI 16,1] ^+1 [WBTO 2,1] [] ^+1 [NLDAI 15,1] [WBTO 2,1] ^+1 [] [WSBI 1,1] ;End of patch .@'_(S'_#D SD_ICRUN_INTF.OB D SD_ICRUN_INTF"C8!/ SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART3    *5 HSj   )DRhy   -ASX]bglq cob_callcob_cancelaccept_envreset_scrngetfld_scrngetkey_scrnget_info_scrnset_info_scrnupdate_scrninit_user_bltn_fcnsgetenv_kernsystem_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_INPUTICTRLICTRL2CTRLPID_FLAGS?KWAIT_MAILBOXNONFN_TBLNONFNB_TBLCON_PROGCON_PROG_END_PTRACTUAL_CON_DELIMITER_TABLEVIRTUAL_CON_CHARACTERISTICSRETURN_INPUT_SIZEACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETINPUT_ERROR_WINDOWAWDSCAWBUFAWPOSAWOFSAWATRAWCPLUPPERCASE_XLAT_TBLNAMTBEXTC_SD_INIT_CALLSEXTC_SD_POST_REMWIN_CALLSSD.SYSCALLp    67Lav&&u/I=]nw SD_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_ICRUN_GETENV_KERNSD_ICRUN_GETENV_KERN_CONTDSD_ICX_UPDATE_..KTO..RIPSD.SD_ICRUN_INTFUD.SD_ICRUN_INTFSC.SD_ICRUN_INTF H4So?:;     ))™:)  )Ii )9  Y )yiI y)y    Y I))щx)Y)ѩщ8  )!   !)Ii !)9) I)0)8Y9:)9Y9;))6 y):Y9<) )7 y);Y9=))4 ):X))5 );X=YȃY=9?) y9y) X Y9Yxyyy)9Y9i)?)>) iYii y) yމIމIy) ii9))@88㉁i)*9@))x)9@))) )ܮ)L)M8xi))9@))) )j)i)5)4ȫYـY)x   )\)y yiY99Y :)yyy  )X f ))y yy&)9 8:)Nـ 8:)Pـ:)yـ:)x&  /0-2 7 ; ` c f ko/r0} . !     , 4 8 U q/x   ,"""" "  "" ""7534%&,1;(G L Q W Z ] ` cf n t y ~   -       $ڮـy ـ ))F9y)IY9)y) yYxY YyY),YyyIii)Iy艁8),9YiyIiiY9YyYx))ɀYȫYY99ɀY))iY))i)@)i) )i)))y) xy  ix y)  ) y) Y)i8 8)ˋ 􍉩)i yx 􍉭y   Yy y yIyЉY))) )YS)) 9^) yIii9L 9B) yIii90ICSCROPToffICSDMODEdisabled)   -(7)>+G8V+^8hl+rv+~57699&*28?1J O$UZ'^<q88 6 6   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~j   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfh .@'R6'c1'RB *SD_WP_SHELL.OB * SD_WP_SHELL4C& !9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTO!  0Of~    *AWn} SD_GETCHAR_ONLYSD_FLUSHSD_NEW_WINDOWSD_REMOVE_WINDOWSD_MONITOR_STRINGSD_OUTPUT_STRINGSD_REDRAWSD_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 ~vv""  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ـYIiibiy)bـ)))9ʪIYR8y ~)`9$)I)Y)Y)x),9YIY9Y9i)$):UTIL:SD_CLI_ACCESS.ACL    )) y)IiY9y0iy) Iyyy)yyȉyI)8ЉɂiЉy0iy) II)8 II)  )byЉɂy)9)9 )9) 9 x  IȉiЉ8   4+D+L+S [` gm x+   $ *   *  %$T t }+&   (# "%'/ 4"= L ] gv         .W'Zs2(S'ZsJf.nMAKE_SD_POSSESS_ICRUN_PAT.CLI f[!equal,,comment] # $Id: make_sd_possess_icrun_pat.cli,v 1.4 1995/07/31 21:18:33 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.4 1995/07/31 21:18:33 mark Modified to work with CLI16; previously functioned properly only under CLI32. Now displays FED/SED output if patch file is not successfully built. 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 (delete/2=ignore,create) ?[!pid]mkpo.out process/string/default/block/input/console/output=?[!pid]mkpo.out & cli %0%/$go %1-% [!equal,(),([!string])] write write Errors occurred while creating patch file! write type ?[!pid]mkpo.out [!else] delete/2=ignore ?[!pid]mkpo.out write SD_POSSESS_ICRUN_[!string].PAT is now ready for use [!end] 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<,2>.cmd write/l=?[!pid]fed.cmd [!string]+1\ create/m ?[!pid]fed2.cmd #.+. 4 ) copy/a ?[!pid]fed.cmd ?[!pid]fed2.cmd comment Execute this new FED script delete/2=ignore ?[!pid]fed2.cmd ?[!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 & 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 [!string] [!end] .D'a(T'ah[ICRUN.PATCH_LIST hwp_cli_3.60.02.pat,& init_cont_3.60.02.pat,& ic_logoff_term_3.60.02.pat,& transp_cmd_flush_3.60.02.pat& .W'x(T$'x<TRANSP_CMD_FLUSH_3.60.02.PAT ;--------------------------------------------------------------------- ; TRANSP_CMD_FLUSH_3.60.02.PAT 11-OCT-95 ; ;This patch corrects a problem with Screen Demon's handling of terminal ; commands which are recognized, but not actually supported internally. ; These commands, such as color or define character commands, are simply ; sent to the terminal without interpretation. In some cases, the program ; would hang if such a command was encountered. ; Applies to programs linked with Screen Demon 3.60 SD_MONITOR_STRING+5534 [WPSH 3,3] {LJMP #SD_PATCH,1} ^+1 [LDASP 3] [] ^+1 [WLSI 1,3] [] #SD_PATCH 0 [LNLDA 3,CTRL,1] ^+1 0 [] ^+1 0 [] ^+1 0 [WPSH 3,3] ^+1 0 [ANDI 177717,3] ^+1 0 [] ^+1 0 [LNSTA 3,CTRL,1] ^+1 0 [] ^+1 0 [] ^+1 0 [LCALL SD_FLUSH_FOR_MONITOR,1,0] ^+1 0 [] ^+1 0 [] ^+1 0 [] ^+1 0 [WPOP 3,3] ^+1 0 [ANDI 60,3] ^+1 0 [] ^+1 0 [LNLDA 2,CTRL,1] ^+1 0 [] ^+1 0 [] ^+1 0 [ANDI 177717,2] ^+1 0 [] ^+1 0 [WIOR 2,3] ^+1 0 [LNSTA 3,CTRL,1] ^+1 0 [] ^+1 0 [] ^+1 0 [LJMP SD_MONITOR_STRING+5556,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+34\ ^+1 [] [] ;End of patch $