%';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' ; %' INTEL CORPORATION PROPRIETARY INFORMATION ; %' ; %' This software is supplied under the terms of a license agreement ; %' or non disclosure agreement with Intel Corporation and may not be ; %' copied nor disclosed except in accordance with the terms of that ; %' agreement. ; %' ; %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' %' Title: UA configuration macros %' %' Date: Oct 13, 1984 %' %' Author: Rajiv Dhingra %' %' Abstract: %' %' Revisions: 19 Sep 86 - BB - consumer info put in code segment and ua %' it to the absolute address indicated. %' 15 Jul 87 - JB - added console error reporting macro support %' 17 May 88 - Dhesikan - moved console error reporting to %' hstcfg.mac in Name Server %' %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' %' Define the groups according to the PLM86 compact model %' %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %IF (%asm286) THEN( ua_data segment rw public ua_data ends assume ds:ua_data )ELSE( ua_cgroup group ua_code ua_dgroup group ua_data assume cs:ua_cgroup, ds:ua_dgroup ua_data segment byte public 'data' ua_data ends )FI %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' Utility macro cleanup to cleanup parameters %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' %' Define strings for strip. %' %define(cr) ( ) %define(lf) ( ) %define(tab) ( ) %define(space) ( ) %' %' Strip: %' strip all occurances of "char" string from "arg" string. %' %*define(strip(char,arg)) local str head tail (%' %' '%define(str) (%0)%' %' '%define(tail) (%arg)%' %' '%while(%nes(%tail,%0)) (%' %' '%match(head%(%char)tail) (%tail)%' %' '%define(str) (%str%head)%' %' ')%' %' '%str%' )%' %' %' Cleanup: %' strip spaces, tabs and CRLFs from string. %' %*define(cleanup(str)) (%strip(%space,%strip(%tab,%strip(%cr,%strip(%lf,%str))))) %' %' Define a macro for finding whether the load name option has been set %set ( load_name_set, 0 ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies the master udf file %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(master_udf( master_loc_p, logical_name_p, file_name_p, dev_name_p))(%' %' %define(master_loc)(%cleanup(%master_loc_p))%' %define(logical_name)(%cleanup(%logical_name_p))%' %define(file_name)(%cleanup(%file_name_p))%' %define(dev_name)(%cleanup(%dev_name_p))%' %' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' public master_udf_file_driver %if ( (%eqs(%master_loc,NAMED)) or (%eqs(%master_loc,named)) ) then(%' master_udf_file_driver db 4 %set(master_udf_file_driver, 4) )%' else( %if ( (%eqs(%master_loc,REMOTE)) or (%eqs(%master_loc,remote)) ) then(%' master_udf_file_driver db 5 %set(master_udf_file_driver, 5) )%' else ( ERROR - MASTER UDF MUST BE EITHER NAMED OR REMOTE. )fi )fi %' public master_udf_logical_name master_udf_logical_name db %len(%logical_name), '%logical_name' public master_udf_file_name %if ( (%eqs(%master_loc,NAMED)) or (%eqs(%master_loc,named)) ) then(%' %if ( (%eqs(%substr(%file_name,1,4),:SD:)) or (%eqs(%substr(%file_name,1,4),:sd:)) ) then(%' master_udf_file_name db %len(%file_name)-3,'/', '%substr(%file_name,5,255)' )%' else( master_udf_file_name db %len(%file_name), '%file_name' )fi )%' else( %if ( (%eqs(%master_loc,REMOTE)) or (%eqs(%master_loc,remote)) ) then(%' %if ( (%eqs(%substr(%file_name,1,4),:SD:)) or (%eqs(%substr(%file_name,1,4),:sd:)) ) then(%' master_udf_file_name db %len(%file_name)-3,'/', '%substr(%file_name,5,255)' )%' else( master_udf_file_name db %len(%file_name), '%file_name' )fi )fi )fi public master_udf_dev_name master_udf_dev_name db %len(%dev_name), '%dev_name' %' ua_code ends %' ) %' %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies the local udf file %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(local_udf( local_loc_p, logical_name_p, file_name_p, dev_name_p, delta_t_p, interval_p ))(%' %' %define(local_loc)(%cleanup(%local_loc_p))%' %define(logical_name)(%cleanup(%logical_name_p))%' %define(file_name)(%cleanup(%file_name_p))%' %define(dev_name)(%cleanup(%dev_name_p))%' %define(delta_t)(%cleanup(%delta_t_p))%' %define(interval)(%cleanup(%interval_p))%' %' %if (%interval eq 0) then(%' ERROR - system clock interval cannot be 0 )fi%' %' %if ( (%eqs(%local_loc,NAMED)) or (%eqs(%local_loc,named)) ) then(%' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' public num_ticks_in_sec num_ticks_in_sec dw 1000/%interval %' public local_udf_present local_udf_present db 0ffh %' public local_udf_file_driver local_udf_file_driver db 4 %' public local_udf_logical_name_p local_udf_logical_name db %len(%logical_name), '%logical_name' %IF (%asm286) THEN( local_udf_logical_name_p dd local_udf_logical_name )ELSE( local_udf_logical_name_p dw offset ua_cgroup:local_udf_logical_name,ua_cgroup )FI %' public local_udf_file_name_p %if ( (%eqs(%substr(%file_name,1,4),:SD:)) or (%eqs(%substr(%file_name,1,4),:sd:)) ) then(%' local_udf_file_name db %len(%file_name)-3,'/', '%substr(%file_name,5,255)' )%' else( local_udf_file_name db %len(%file_name), '%file_name' )fi %IF (%asm286) THEN( local_udf_file_name_p dd local_udf_file_name )ELSE( local_udf_file_name_p dw offset ua_cgroup:local_udf_file_name,ua_cgroup )FI %' public local_udf_dev_name_p local_udf_dev_name db %len(%dev_name), '%dev_name' %IF (%asm286) THEN( local_udf_dev_name_p dd local_udf_dev_name )ELSE( local_udf_dev_name_p dw offset ua_cgroup:local_udf_dev_name, ua_cgroup )FI %' public refresh_secs refresh_secs dw %delta_t %' ua_code ends %' )else( %if ( (%eqs(%local_loc,NULL)) or (%eqs(%local_loc,null)) ) then(%' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' declare the number of ticks even if its not used right now. public num_ticks_in_sec num_ticks_in_sec dw 1000/%interval %' public local_udf_present local_udf_present db 0 %' public local_udf_file_driver local_udf_file_driver db %master_udf_file_driver %' public local_udf_logical_name_p %IF (%asm286) THEN( local_udf_logical_name_p dd master_udf_logical_name )ELSE( local_udf_logical_name_p dw offset ua_cgroup:master_udf_logical_name,ua_cgroup )FI %' public local_udf_file_name_p %IF (%asm286) THEN( local_udf_file_name_p dd master_udf_file_name )ELSE( local_udf_file_name_p dw offset ua_cgroup:master_udf_file_name,ua_cgroup )FI %' public local_udf_dev_name_p %IF (%asm286) THEN( local_udf_dev_name_p dd master_udf_dev_name )ELSE( local_udf_dev_name_p dw offset ua_cgroup:master_udf_dev_name, ua_cgroup )FI %' public refresh_secs refresh_secs dw 0ffffh %' public copy_udf copy_udf: ret %' ua_code ends )else( ERROR - LOCAL UDF MUST BE EITHER NAMED OR NULL )fi )fi %' %' confirm that if master udf resides on local system, then no local udf exists %if ( (%eqs(%master_loc,NAMED)) or (%eqs(%master_loc,named)) ) then ( %if ( (%eqs(%local_loc,NAMED)) or (%eqs(%local_loc,named)) ) then ( ERROR - IF MASTER LOCAL UDF RESIDES ON THE LOCAL SYSTEM, THEN THERE MUST NOT EXIST A LOCAL UDF. )fi )fi ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies the cdf file %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(cdf( loc_p, logical_name_p, file_name_p, dev_name_p))(%' %' %define(loc)(%cleanup(%loc_p))%' %define(logical_name)(%cleanup(%logical_name_p))%' %define(file_name)(%cleanup(%file_name_p))%' %define(dev_name)(%cleanup(%dev_name_p))%' %' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' public cdf_file_driver %if ( (%eqs(%loc,NAMED)) or (%eqs(%loc,named)) ) then(%' cdf_file_driver db 4 )%' else( %if ( (%eqs(%loc,REMOTE)) or (%eqs(%loc,remote)) ) then(%' cdf_file_driver db 5 )%' else ( ERROR - CDF MUST BE EITHER NAMED OR REMOTE. )fi )fi %' public cdf_logical_name cdf_logical_name db %len(%logical_name), '%logical_name' public cdf_file_name %if ( (%eqs(%loc,NAMED)) or (%eqs(%loc,named)) ) then(%' %if ( (%eqs(%substr(%file_name,1,4),:SD:)) or (%eqs(%substr(%file_name,1,4),:sd:)) ) then(%' cdf_file_name db %len(%file_name)-3,'/', '%substr(%file_name,5,255)' )%' else( cdf_file_name db %len(%file_name), '%file_name' )fi )%' else( %if ( (%eqs(%loc,REMOTE)) or (%eqs(%loc,remote)) ) then(%' cdf_file_name db %len(%file_name), '%file_name' )fi )fi public cdf_dev_name cdf_dev_name db %len(%dev_name), '%dev_name' ua_code ends %' ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies the consumer password, name and location. %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(consumer_info( name_p, pswd_p, addr_o_p, addr_b_p ))(%' %' %define(name)(%cleanup(%name_p))%' %define(pswd)(%cleanup(%pswd_p))%' %define(addr_o)(%cleanup(%addr_o_p))%' %define(addr_b)(%cleanup(%addr_b_p))%' %' %if (%len(%pswd) gt 8) then( ERROR - PASSWORD MUST BE LESS THAN OR EQUAL TO 8 CHARACTERS LONG. )fi %if (%len(%name) gt 8) then( ERROR - NAME MUST BE LESS THAN OR EQUAL TO 8 CHARACTERS LONG. )fi %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI public consumer_info_addr consumer_info_addr dw %addr_o, %addr_b public code_con_pswd code_con_name dw %len(%name) ; length is a word db '%name' public code_con_name code_con_pswd db %len(%pswd) db '%pswd' ua_code ends ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies whether eios is configured into the system or not %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(who_verifies( who_p ))(%' %' %define(who)(%cleanup(%who_p))%' %' %if ( (%eqs(%who,eios)) or (%eqs(%who,EIOS)) ) then(%' extrn rqverifyuser:far %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI public jump_to_verify_user_proc jump_to_verify_user_proc: pop di push cs push di jmp rqverifyuser ua_code ends )else( %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI public jump_to_verify_user_proc extrn verify_user_proc:near jump_to_verify_user_proc: jmp verify_user_proc ua_code ends )fi %' ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies whether eios is configured into the system or not %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(who_attaches( who_a ))(%' %' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' %define(who)(%cleanup(%who_a))%' public do_attach %if ( (%eqs(%who,eios)) or (%eqs(%who,EIOS)) ) then(%' do_attach db 0h )else( do_attach db 0ffh )fi ua_code ends %' ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies the load name file %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(load_name_file( loc_p, logical_name_p, file_name_p, dev_name_p))(%' %' %define(loc)(%cleanup(%loc_p))%' %define(logical_name)(%cleanup(%logical_name_p))%' %define(file_name)(%cleanup(%file_name_p))%' %define(dev_name)(%cleanup(%dev_name_p))%' %' %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' public lnf_file_driver %if ( (%eqs(%loc,NAMED)) or (%eqs(%loc,named)) ) then(%' lnf_file_driver db 4 )%' else( %if ( (%eqs(%loc,REMOTE)) or (%eqs(%loc,remote)) ) then(%' lnf_file_driver db 5 )%' else ( ERROR - LOAD_NAME FILE MUST BE EITHER NAMED OR REMOTE. )fi )fi %' public lnf_logical_name lnf_logical_name db %len(%logical_name), '%logical_name' public lnf_file_name %if ( (%eqs(%loc,NAMED)) or (%eqs(%loc,named)) ) then(%' %if ( (%eqs(%substr(%file_name,1,4),:SD:)) or (%eqs(%substr(%file_name,1,4),:sd:)) ) then(%' lnf_file_name db %len(%file_name)-3,'/', '%substr(%file_name,5,255)' )%' else( lnf_file_name db %len(%file_name), '%file_name' )fi )%' else( %if ( (%eqs(%loc,REMOTE)) or (%eqs(%loc,remote)) ) then(%' lnf_file_name db %len(%file_name), '%file_name' )fi )fi public lnf_dev_name lnf_dev_name db %len(%dev_name), '%dev_name' %' %' set a macro to indicate that load name file is present %' %set ( load_name_set, 1 ) public lnf_present lnf_present db 0ffh ua_code ends ) %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %' This macro specifies end_ua_cfg %';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(end_ua_cfg)(%' %' %' Check whether load name option is defined. If not, %' define a null path for load name path %' %IF ( not %load_name_set ) then ( %IF (%asm286) THEN( ua_code segment er public )ELSE( ua_code segment byte public 'code' )FI %' public lnf_present lnf_present db 0 public lnf_file_driver lnf_file_driver db 0 public lnf_logical_name lnf_logical_name db 0 public lnf_file_name lnf_file_name db 0 public lnf_dev_name lnf_dev_name db 0 ua_code ends %' )FI )