DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦097b2353e⟧ TextFileVerbose

    Length: 23808 (0x5d00)
    Types: TextFileVerbose
    Names: »ryf«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »ryf« 

TextFileVerbose

    alarmenv10;   (*   PT.TSSYS.50/10   *)
    
      (****************************************************************
      *                                                               *
      * alarmenvironment is included at compiletime to make the       *
      * module know all general constants and types used in the       *
      * alarm system.                                                 *
      *                                                               *
      * call :                                                        *
      * <obj>=pascal80 alarmenv <source>                              *
      *                                                               *
      *****************************************************************)
    
  CONST
    al_env_version = #h10;
      (***********************************************************
      *   max-values                                             *
      ************************************************************)
    
  CONST
    
    max_lam = 15;
      (*               max number-1 of lam-driver_inkarnations *)
    max_at = 256;
      (*               max number of at-connectors in ts *)
    max_vc = 256;
      (*               max number of vc-connectors in ts *)
    \f


      (**********************************************************
      *   simple types                                          *
      ***********************************************************)
    
  TYPE
    
    func_grp = 0..15; (* function group in operationcode *)
    
    what = (generate,check);
      (*                      used by check5-function *)
    ts_time = ARRAY (0..1) OF integer;
      (*                       the type of time in ts *)
    statusbits = (unused, at_tim, hs, au, serif, restart, batt_lim, batt_sup);
      (*                       possible statusbits from at *)
    
    \f


      (**********************************************************
      *   structured types                                      *
      ***********************************************************)
    
    
    update_range = #h0..#h07;
    result_range = #h0..#h1f;
    
      (*                       the structure of a macroaddress *)
    
    macroaddr = PACKED RECORD
                       !  dc_addr : 0..15;
                       !  nc_addr : 0..63;
                       !  ts_addr : 0..63;
                       END;
    
      (*                       the structure af an alarmnetaddress *)
    
    alarmnetaddr = RECORD
                   !  macro : macroaddr;
                   !  micro : integer;
                   END;
    
    
      (*                       the fixed part of all alarmmessages *)
    alarmlabel = PACKED RECORD
                        !  
                        !  no_of_by : integer;
                        !  rec      : alarmnetaddr;
                        !  send     : alarmnetaddr;
                        !  op_code  : byte;
                        !  update   : update_range;
                        !  result   : result_range;
                        !  ts_add   : ts_time;
                        END;
      (*                       the structure of a paxnetaddress *)
    
    paxnetaddr = PACKED RECORD
                        !  net_addr : byte;
                        !  reg_addr : byte;
                        !  node_addr: byte;
                        !  user_addr: integer;
                        END;
    
    
    \f


      (*****************************************************************
      *   miscellaneous constants                                      *
      ******************************************************************)
    
  CONST
    label_size = 14;
      (*                 number of bytes in alarmlabel *)
    at_control = 24+4+3;
      (*                 controlword for LAM-drivers AT-channel *)
      (*                 110 bps, 8 databits, 2 stopelements, no parity *)
    ts_control =96+24+4+3;
      (*                 controlword for LAM-drivers TS-channel *)
      (*                 1200 bps, 8 databits, 2 stopelements, no parity *)
    vcit_control = 96+24+4+3;
      (*                 controlword for LAM-drivers VC(IT)-channel *)
    max_byte = 255;
    max_int = 32767 ;
      (*                 max value for an integer in ts *)
    time = ts_time(0,0);
      (*                        time used in messages in demo *)
    receipt = 1;
      (*                        used by at-connector *)
    \f


      (**************************************************************
      *   installation parameters for connectors                    *
      ***************************************************************)
    
    trans_err_rate = 20;
      (*                      the rate at which the transmissionerrorcounter is *)
      (*                        incremented at transmissionerror *)
    
    trans_err_int = 0;
      (*                      initial value for transmissionerrorcounter *)
    stop_poll_lim = 180;
      (*                      a stop-poll-alarm is send first time transmissionerrorcounter *)
      (*                        is greather than or equal to stop_poll_lim *)
    service_lim = 100;
      (*                      a servicealarm is send first time transmissionerrorcounter *)
      (*                        is greather than or equal to service_lim *)
    max_succ_lin_err = 3;
      (*                      a linealarm is send when max_succ_line_err *)
      (*                        transmissionerrors has come successively *)
    tsc_port = 0;
      (*                     the port-no used by ts-connector in lam-no 1 *)
    dcm_out_port = 1;
    dcm_in_port = 1;
      (*                     the port-no used by dc-module in lam-no 1 *)
    \f


      (***************************************************************
      *   listen_buffers                                             *
      ****************************************************************)
    
      (* numbers of listenbuffers *)
    
    no_listen = 20;
      (*                      the total number of listenbuffers in ts *)
      (*                      i.e. allocated in a pool in ts-supervisor *)
    no_netc_listen = 1;
      (*                      the number of listenbuffers at net-connector *)
    no_vch_listen = 4;
      (*                      the number of listenbuffers at vc-handler *)
      (*                      the number of listenbuffers at at-connector *)
    no_vcc_listen = 2;
      (*                      the number of listenbuffers at vc-connector *)
    no_pax_listen = 2;
      (*                      the number of listenbuffers at net-connector *)
      (*                      i.e. allocated in a pool in net-connector *)
    
    
      (* sizes of listenbuffers *)
      (* all sizes are given in words *)
    
    size_listen = 16;
      (*                    size of listenbuffers allocated in ts-supervisor *)
    size_pax_listen = 32;
      (*                    size of listenbuffers allocated in net-connector *)
    size_supp = 32;
      (*                    size of supplybuffers allocated in ts-supervisor *)
    
    \f


      (**************************************************************
      *   talk_buffers                                              *
      ***************************************************************)
    
      (* numbers of talkbuffers *)
    
    no_pax_talk =1;
      (*                  the number of buffers allocated for sending to paxnet *)
    no_req_supp = 4;
      (*                  the number of buffers used to request for a supplybuffer *)
      (*                  at the allocator of the operating system *)
    no_tss_talk = 0;
      (*                  the number of buffers used to talk from ts-supervisor *)
    no_nc_talk = 5;
    no_lam_talk = 1;
      (*                  the number of buffers used to talk to lam-driver *)
    
      (* sizes of talkbuffers given in words *)
      (* the names are associates to the names given above *)
    
    size_pax_talk = 32;
    size_req_supp = 1;
    size_tss_talk = 0;
    size_lam_talk = 2;
    \f


      (**********************************************************
      *   timeout_buffers                                       *
      ***********************************************************)
    
      (* numbers of timers_buffers at each modul *)
      (* timersbuffers are used to give timeout from timeoutmodule *)
    
    no_netc_tim = 1;
    no_tss_tim = 6;
    no_ath_tim = 30;
    no_vch_tim = 30;
    no_atc_tim = 2;
    no_vcc_tim = 2;
    
      (* types of timersbuffers *)
    
  TYPE
    timers = RECORD
             !  object : integer;
             END;
    
      (* numbers of updatebuffers at each modul *)
      (* updatebuffers are used to update time and book a timeout at timeoutmodule *)
    
  CONST
    no_netc_upd = 1;
    no_tss_upd = 6;
    no_ath_upd = 30;
    no_vch_upd = 30;
    no_atc_upd = 1;
    no_vcc_upd = 2;
    
      (* type of updatebuffers *)
    
  TYPE
    updates = RECORD
              !  index : integer;
              !  count : integer;
              !  object : integer;
              END;
    \f


      (************************************************************
      *   time_out_periods                                        *
      *************************************************************)
    
  CONST
    
      (*                    the timeunit used by timeoutmodule *)
    time_out_unit = 1000; (* i.e. 1 sec. *)
    
      (*                    short timeout for messages from DC *)
    tss_dc_stime = -10;
      (*                    long timeout for messages from NC *)
    tss_nc_ltime = -3*60;
      (*                    short timeout for messages from NC *)
    tss_nc_stime = -5;
    
      (*                    timeout for messages from netc to tss *)
    tss_netc_time = -1*60;
      (*                    and so on .... *)
    
    tss_ath_time = -1*60+10;
    tss_vch_time = -1*60+10;
    
    ath_tss_ltime = 1*60;
    ath_tss_stime = 1;
    
    vch_tss_ltime = 1*60;
    vch_tss_stime = 1;
    
    ath_atc_time = 1*60+10;
    vch_vcc_time = 1*60+10;
    
    atc_ath_stime = 2*60;
    atc_ath_ltime = 7*60;
    
    vcc_vch_stime = 30;
    vcc_vch_ltime = 3*60;
    
    con_lam_time = 5;
    
    poll_delay_time = 5;
    \f


      (**********************************************************
      *   values for u3                                         *
      ***********************************************************)
    
      (* routes between modules in ts *)
    tim_route = 20;
    tim_route1 = 21;
    tim_route2=22;
      (*             buffer must bee returned by any moduls  *)
    dummy_route = 0;
      (*             buffer goes from netc or tss down in ts *)
    netc_route = 2;
    netc_route1 = 3;
    at_route = 4;
    at_route1 = 5;
    vca_route = 6;
    vca_route1 = 7;
    vci_route = 8;
    vci_route1 = 9;
      (*             buffer from lam *)
    lam_route = 10;
      (*             buffer from tss *)
    tss_route = 12;
      (*             buffer from DC-module *)
    dc_route = 14;
    op_route = 16;
      (*             buffer from TTY-module *)
    nc_route = 18;
      (*             buffer from NC supervisor *)
    \f


      (**********************************************************
      *   microaddresses                                        *
      ***********************************************************)
    
      (*                 lower limit for at-microaddresses *)
    at_addr_limit = 256;
      (*                 lower limit for vc-microaddresses *)
    vc_addr_limit = 32;
    
    tss_mic_addr = 0;
    ath_mic_addr = 1;
    vch_mic_addr = 2;
    netc_mic_addr = 3;
    
    dc_log_mic_addr = 3;
    dc_poll_mic_addr = 5;
    dc_test_mic_addr = 6;
    dc_erh_mic_addr = 7;
    
    \f


      (***********************************************************
      *   table_lengthes                                         *
      ************************************************************)
    
    vca_vcm_l = 5;
      (*            no of entries in vca_vcm_table *)
    at_l = 8;
      (*            no of entries in at-table *)
    vc_l = 3;
      (*            no of entries in vc_table *)
    vc_addr_l = 5;
      (*            no of entries in vc_address_table *)
    at_addr_l = 5;
      (*            no of entries in at-address-table *)
    at_ts_l = 5;
      (*            no of entries in at_ts_table *)
    vcmit_l = 5;
      (*            no of entries in vcm(it)_table *)
    vcmat_l = 5;
      (*            no of entries in vcm(at)_table *)
    vce_l = 5;
      (*            no of entries in vce_table *)
    timeout_l = 70;
      (*                number of entryes in timeouttables *)
    lam_l = max_lam+1;
      (*                number of entryes in lam_table *)
    \f


      (**********************************************************
      *   semaphorenumbers                                      *
      ***********************************************************)
    
      (*  index in ts_sem_tab  *)
    
    tssup_sem_no = 1;
    ath_sem_no = 2;
    vch_sem_no = 3;
    netc_sem_no = 4;
    timeout_sem_no = 5;
    nc_sem_no = 6;
    dc_sem_no = 7;
    vas_sem_no = 8;
    vis_sem_no = 9;
    tssup_int1 = 10;
    tssup_int2 = 11;
    tssup_int3 = 12;
    
    ath_int1 = 13;
    
    vch_int1 = 14;
    
    net_int1 = 15;
    net_int2 = 16;
    net_int3 = 17;
    net_int4 = 18;
    
    dc_int1 = 20;
    dc_int2 = 21;
    dc_int3 = 22;
    dc_int4 = 23;
    
    ncsup_int1 = 24;
    ncsup_int2 = 25;
    
    tap_sem_no = 26;
    tap1_sem_no = 27;
    com_pool = 28;
    
    alc_sem_no = 30;
    lam_sem_no = 35;
    
    vagt_int   = lam_sem_no + lam_l;
    vcc_sem_no = vagt_int + 5 * vc_l;
    
    atc_sem_no = vcc_sem_no + ( vc_l * 2 );
    ts_sem_total = atc_sem_no + ( at_l * 2 ) +3;
    
  TYPE
    ts_pointer = RECORD
                 !  s : sempointer;
                 !  w : sempointer;
                 END;
    
    ts_pointer_vector = ARRAY (1..ts_sem_total) OF ts_pointer;
    
    \f


      (**********************************************************
      *   create parameters                                     *
      ***********************************************************)
    
  CONST
    create_unit = 512;
    tss_size = 2*create_unit;
    ath_size = create_unit+13*at_l+4*vca_vcm_l;;
    vch_size = create_unit+11*vc_l;
    atc_size = create_unit;
    vac_size = 2*create_unit;
    vic_size = 2*create_unit;
    tim_size = create_unit+timeout_l*6;
    netc_size = 2*create_unit;
    tsc_size = create_unit;
    dc_sim_size = 4*create_unit;
    vas_size = 2*create_unit;
    vis_size = 2*create_unit;
    lam_size = 4*create_unit;
    tap_size = create_unit;
    nc_sup_size = 600;
    
    pu_no = 0;
    
    tss_pri = -1;
    ath_pri = -1;
    vch_pri = -1;
    vcc_pri = -1;
    atc_pri = -1;
    tim_pri = -1;
    netc_pri = -1;
    dc_sim_pri = -1;
    vc_sim_pri = -1;
    lam_pri = 0;
    tsc_pri = -1;
    tap_pri = -1;
    \f


      (**********************************************************
      *   table_entrys                                          *
      ***********************************************************)
    
  TYPE
    
    at_range = 0..at_l;
    vc_range = 0..vc_l;
    vc_sem_range = vcc_sem_no..vcc_sem_no + 2 * vc_l - 1;
    
      (*                     entry for vca-vcm-table *)
    vca_vcm_e = RECORD
                !  vca_addr : alarmnetaddr;
                !  vcm_addr : alarmnetaddr;
                END;
    
      (*                     entry for at-table *)
    at_e = RECORD
           !  at_mic : integer;
           !  incar_index : at_range;
           !  activity : 0..2;
           !  pvc_index : integer;
           END;
    
      (*                     entry for vc-table *)
    vc_e = RECORD
           !  vc_mic : integer;
           !  incar_index : vc_range;
           END;
    
      (*                     entry for vc-address-table *)
    vc_addr_e = RECORD
                !  addr_code : byte;
                !  vc_index : integer;
                !  block : byte;
                !  steering : boolean
                END;
    
      (*                     entry for at-address-table *)
    at_addr_e = RECORD
                !  at_addr : alarmnetaddr;
                !  addr_code : byte;
                END;
    
      (*                     entry for at-ts-table *)
    at_ts_e = RECORD
              !  ts_addr : macroaddr;
              !  ts_type : bit;
              !  index : integer;
              END;
    
      (*                     entry for vcm(it)-table *)
    vcmit_e = RECORD
              !  vcm_addr : alarmnetaddr;
              END;
    
      (*                     entry for vcm(at)-table *)
    vcmat_e = RECORD
              !  vc_code : byte;
              !  vc_addr : alarmnetaddr;
              !  vc_arrange : 0..3;
              !  vc_relief  : boolean;
              END;
    
      (*                     entry for actual vce-table *)
    vce_e = RECORD
            !  vce_addr : alarmnetaddr;
            END;
    
      (*                     entry for paxnet-table *)
    paxnet_e = RECORD
               !  alarm_addr : alarmnetaddr;
               !  pax_addr   : paxnetaddr;
               END;
    
      (*                     entry for encryption-table *)
    encrypt_e = RECORD
                !  at_vc_mic : integer;
                !  encryp_key : ARRAY (1..4) OF integer;
                !  c_redun : ARRAY (1..3) OF integer;
                !  o_redun : ARRAY (1..3) OF integer;
                END;
    
      (*                     entry for incarnation-table in vch         *)
    vc_incar_e = RECORD
                 !  vc_mic : integer;
                 !  state : byte;
                 !  in_sem : vc_sem_range;
                 !  shix : vc_range;
                 END;
    
    vcc_table = ARRAY (vc_range) OF vc_incar_e;
    
    \f


      (****************************************************
      *   types and values used in dataparts              *
      *******************************************************)
    
  TYPE
    
    alarm = ARRAY (1..2*size_listen - label_size - 2) OF byte;
    steering = ARRAY (1..2*size_listen - label_size - 2) OF byte;
    
    alarm_code = byte;
    status_byte = byte;
    count_code = byte;
    at_address = alarmnetaddr;
    operation_code = byte;
    vcavcm_index = integer;
    lam_no= byte;
    port_no= byte;
    start_stop_code = byte;
    vc_type = byte;
    test_byte = byte;
    
  CONST
    
      (*                 values for countcode and alarmcode *)
    recall = 0;
    call = 1;
    at_tim_excess = 5;
    
      (*                 values for result code *)
    accepted          = #h00;
    not_accepted      = #h01;
    rejected          = #h02;
    not_implemented   = #h03;
    
    unknown_sender    = #h04;
    unknown_receiver  = #h05;
    not_steering      = #h06;
    
    no_room           = #h08;
    not_found         = #h09;
    existing_entry    = #h0a;
    
    state_error       = #h0c;
    transmit_error    = #h0d;
    no_resources      = #h0e;
    
    no_connection     = #h10;
    breaked           = #h11;
    not_ready         = #h12;
    passivated        = #h13;
    
    data_inconsistent = #h14;
    data_incomplete   = #h15;
    out_of_range      = #h16;
    
    forbidden         = #h18;
    illegal_operation = #h19;
    
    unknown_route     = #h1c;
    unknown_opcode    = #h1d;
    unknown_update    = #h1e;
    unknown_result    = #h1f;
    
      (* values of new activity state for a connector ( update field ) *)
    start_code = 0;
    stop_code = 1;
    service_code = 2;
      (*                 values for vc-type *)
    vcat = 0;
    vcit = 1;
      (*                 values for updatecode *)
    read_code = 0;
    insert_code = 1;
    modify_code = 2;
    remove_code = 3;
      (*                 values for timeout functions - u1 *)
    delay_req  = 3;
    update_req = 4;
    read_write = 6;
    book_req   = 7;
      (*                 values for timeout result - u2 *)
    book_up_ok         = 1;
    book_array_full    = 2;
    book_wrong_index   = 3;
    book_wrong_object  = 4;
    book_range_error   = 5;
    book_unknown_func  = 6;
    
      (* guard arrange *)
    no_arrange  = 0;
    recieve_arr = 1;
    giveup_arr  = 2;
    full_arr    = 3;
    
      (* values of tstypes *)
    ts_type_pvc = 0;
    ts_type_avc = 1;
    
      (*                 values for lam-functions *)
    create_at_ch = 8;
    read_at = 9;
    write_at = 10;
    write_read_at =11;
    
    create_it_ch = 12;
    read_it = 13;
    write_it = 14;
    write_read_it = 15;
    
    create_tty_ch= 16;
    read_tty= 17;
    write_tty= 18;
    
      (*                 values for lam-results -u2 *)
    ok_result=0;
    create_done=1;
    transi_err =2;
    persi_err =3;
    ill_func =4;
    timeout_err =5;
    
    \f


      (********************************************************
      *   zones                                               *
      *********************************************************)
    
  TYPE
    
    buffertype = RECORD
                 !  first, last, next: integer;
                 !  name: alfa;
                 !  data: ARRAY (1..80) OF char;
                 !  
                 END;
    zone = RECORD
           !  testoutpool: pool 1 OF buffertype;
           !  testoutsem: semaphore;
           !  opsem: ^semaphore
           END;
    
      (******************************************************
      *   external functions and procedures                 *
      *******************************************************)
    
      (*                  check5 is used to generate or control the five *)
      (*                  checkbits in a telegram sent to or received from *)
      (*                  at or vc(at)                                     *)
    FUNCTION check5(
      VAR msg: reference;
      dowhat : what
      ): boolean;
    EXTERNAL;
    
      (*                  timerbook is used to book a timeout at imeoutmodule *)
    PROCEDURE timerbook(
      VAR book_mess,
      timer_mess : reference;
      ticks,
      object: integer;
      VAR timeout_sem,
      answer: semaphore
      );
    EXTERNAL;
    
      (*                  timerupdate is used to update timeoutperiod at *)
      (*                  timeoutmodule                                  *)
    PROCEDURE timerupdate(
      VAR update_mess:reference;
      ticks: integer;
      VAR timeout_sem,
      answer: semaphore
      );
    EXTERNAL;
    
      (*                  testopen is used to open testmode for a module *)
    PROCEDURE testopen(
      VAR z: zone;
      modulename: alfa;
      ps: ^semaphore
      );
    EXTERNAL;
    
    PROCEDURE testout(
      (*                  testout is used to send a message to the operatormodule *)
      VAR z: zone;
      text: alfa;
      i: integer
      );
    EXTERNAL;
    
    
      (*              count is used for counting, without risk for overflow  *)
    PROCEDURE count (
      VAR c: integer   );
    EXTERNAL;
    
    .
«eof»