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

⟦aed6c2a11⟧ TextFileVerbose

    Length: 9984 (0x2700)
    Types: TextFileVerbose
    Names: »bscenvir«

Derivation

└─⟦041268bb6⟧ Bits:30003098 SW2001/2/3.02 RC3502 Operating System
    └─⟦6fc3bf78b⟧ 
        └─⟦this⟧ »bscenvir« 

TextFileVerbose

bscenvir;
(*---------------------------------------------------------------------
--
--         for BSC 3270
--
--   revisions:
--
--   date      init   changes
--  84.01.07   hej    first version
--  84.01.09   hej    statleng, eventno
--  84.01.11   hej    bsc_tap, pollpri, startlinetype
--  84.01.16   hej    auto_ack in startline
--  84.01.18   hej    some renumbering of firmware commands
--  84.01.19   hej    non_polls in startline and senseline.
--  84.01.25   hej    new states, uwack, eventformat.
--  84.02.16   hej    senselineformat.
--  84.01.30   hej    message values
--  84.03.08   hej    event numbers.
--  84.04.04    jg    TYPE bool08.
--  84.04.24    jg    TYPE bool08.lcp_b
--  84.05.17    jg    statusevent
--  84.06.05   hej    statetype ( in_ttd) used, reset_ims210.
--  84.06.12    jg    bool08.w_ack to r_buf.
--  84.06.19   hej    urvi used.
--  84.06.20    jg    bool08.w_act implemented.
--                    fw_ok and more states end_xx in use.
--  84.06.21   hej    index in cnt corrected.
--  84.07.04    jg    line- and cuevent
--                    max_userevent 8->10
--                    bool08.host_line implemented
--  84.08.09    jg    max_userevent = 20
--  85.06.19   hej    start asyncron included.
--  85.09.25   hej    driverevent for master driver used.
--  85.10.25   hej    max_cu_no and max_port_no used.
--  86.02.24    jg    fw_commands continue, passivate and test_usart.
--  86.02.24    jg    intrtype warning included.
--  86.03.06   hej    function codes for soft reset in use.
--
------------------------------------------------------------------------*)

\f


const

ncp_present  = true;            (*  if true then use lcp     *)

bsc_class   =  6;
reset_ims210=  1;            (*  no test  *)
reset_imssoft= 3;            (*  soft reset   *)
extsize     = 16*1024;
def_buffer  =  256;          (*  master default fw bufferlength  *)
fw_timeout  =    9;          (*  firmware timeout in sec         *)

max_port_no =    7;          (*   must be  n**2 - 1              *)
max_cu_no   =   31;          (*   must be  n**2 - 1              *)

statleng    =   54;          (*  statleng bytes    *)
statlast  = statleng-1;
statsize  = statleng div 2 + 3;
driver_statleng  =  36;
driver_statlast  =  driver_statleng-1;

 bscheader_leng   =  8;
 eventsize        =  7;

 message          =  7;     (*  in u2  *)
 queued_lcp       =  6;
\f


(*-------------------------- driver messages ---------------*)

start_line  =   0; 
stop_line   =   4;
start_cu    =   8;
stop_cu     =  12;
sense_line  =  16;
sense_cu    =  20;
sense_dev   =  24;
return_line =  28;
return_cu   =  32;
return_dev  =  36;
continue    =  40;
set_cu      =  44;
start_stat  =  48;
read_stat   =  52;
read_clear_stat =  56;
start_formfree  =  60;
set_async       =  64;
passivfunc      =  68;      (*  set line passiv    *)
continfunc      =  72;      (*  set line continue  *)
testusartfunc   =  76;      (*  perform test of usart  *)
softresetfunc   =  80;      (*  perform soft reset *)

testfunc    =   4;         (*  for master supervisor  *)
pollfunc    =   8;   

write_type  =   2;
read_type   =   3;

fwreset     =   3;   (*  set in ready by firmware during hard reset  *)
\f


tfinish   =  0;            (*  firmware commands and answers    *)
teot      =  1;
tenq      =  2;
tnak      =  3;
rack0     =  4;
rack1     =  5;
wack      =  6;
wacks     =  7;
rvi       =  8;
ttd       =  9;
disc      = 10;
tpoll     = 11;
tselect   = 12;
sense     = 13;
sohx      = 14;
sohb      = 15;
stxx      = 16;
stxb      = 17;
dstxx     = 18;
dstxb     = 19;
tsoh      = 20;
tstx      = 21;
dstx      = 22;
noframe   = 23;
tetx      = 24;
tetb      = 25;
detx      = 26;
detb      = 27;
stx1_x    = 28;
stx1_b    = 29;
dstx1_x   = 30;
dstx1_b   = 31;
tracedata = 32;
\f


start_master =  33;      (*  firmware commands   *)
start_slave  =  34;
formatfree   =  35;
start_tracing=  36;
stopline  = 37;
startcu   = 38;
stopcu    = 39;
priocu    = 40;
clear_stat= 41;
stat_lcp    = 42;
begin_trace = 43;
end_trace   = 44;
tracespeed  = 45;
asyncspeed  = 46;
cont_line   = 47;
passivate   = 48;
test_usart  = 49;

overload  = 33;      (*  firmware answers              *)
syntax    = 34;
syntax_itb= 35;
leng_err  = 36;
crc_err   = 37;
timerp    = 38;
timeri    = 39;
comm_err  = 40;
timers    = 41;
timer     = 42;
max_answer_no  =  42;     (*  last answer   *)

ok     =    0;           (*  results   *)
notproc=    1;
size_error= 3;
usart_error =  5;
persistent= 8+3;      (*  error in reserve channel or reserve ext mem   *)
ignored=    9;
error  =    2;
ille   =    4;
utimer =    8;
ueot   =   32;
urvi   =   64;
unak   =   96;
uwack  =  128;
rwack  =    8;
rdata  =   16;
rsens  =   24;
eventok=   32;
senseok=   40;
shortok=   48;       (*  formatfree short block  *)
\f


imsevent    =  1;       (*  events  *)
modemevent  =  2;
timerevent  =  3;
blockevent  =  4;
nobufevent  =  5;
ttdevent    =  6;
sleepevent  =  7;
statusevent =  8;
lineevent   =  9;
lineup    =       0;
linedown  =       1;
cuevent     = 10;
driverevent = 12;
max_userevent = 20;
recevent    =  max_userevent + 1;     (*  only for lcp events  *)
xmtevent    =  max_userevent + 2;

firstcu  =   0;        (*  index in cnt  *)
lastcu   =  -1;
speed_h  =  -2;
speed_l  =  -3;
retrans  = -25;
retimer  = -27;
rerec    = -29;
renobuf  = -31;
rettd    = -33;
losts    = -35;



\f



type

linerange = 0..max_port_no ;       (*  line numbers  *)

curange   = 0..max_cu_no;       (*  cu numbers    *)

intrtype  = ( lineread, linewrite, fwread, fwwrite, startims, warning );

statetype = ( stopped, traces, idle,         (*  no protocol   *)
             after_poll, after_ack,          (*  users poll    *)
             after_eot, in_ttd, after_ttd,   (*  during data out      *)
             in_data,
             after_data1, after_data0,       (*  ack1 or ack0 wanted  *)
             after_enq1, after_enq0 ,        (*  repeated ack wanted  *)
             end_session, end_t, end_i,      (*  states after finish and eot  *)
             end_p, end_a, end_e, end_tt,
             end_d, end_d1, end_d0,
             end_e1, end_e0, 
             laststate       );

answerarray = array ( 0..max_answer_no ) of byte;

modiftype = array ( sense..tracedata ) of byte;

word = record  low, high : byte  end;     (*  intel integer  *)

sempointer   = ^semaphore;

tap_pointer  = record  s, w : sempointer  end;

bsc_vector   = array ( linerange ) of ^semaphore;

bsc_tap      = array ( linerange ) of tap_pointer;


bool8 = packed record
 skip,       (*  true after wack   *)
 chain,      (*  true after write modif 4  *)
 freeform,   (*  true after set format free  *)
 evenblock,  (*  true after even block sent  *)
 readtype,   (*  true after readtype command *)
 odd,        (*  true after ack1 sent        *)
 etb_block,  (*  true after etb received     *)
 ready       (*  false after receive buffer missing  *)
 :     boolean
end;
 
bool08 = packed record
auto   ,   (* true if auto ack *)
ge_poll,   (* true if generel poll *)
ss_wait,   (* true if status sense is waiting *)
host_line, (* true if host is polling *)
f_buf  ,   (* true after first datablock *)
r_buf  ,   (* true when readbuffer       *)
lcp_b  ,   (* true if lcp_buf from queue *)
w_act      (* true if writearea is active *)
       : boolean
end;
\f


commandarea = record
 comm     ,
 answer   ,
 bufadr_l ,
 bufadr_h ,
 size_l   ,
 size_h   ,
 bytes_l  ,
 bytes_h,
 imscu  ,
 imsdev : byte
end;

line_des_area = record
 param    : array ( lineread..linewrite ) of commandarea;
 modembits  : byte;
 cu_info    : byte;
 cnt       : array ( -statlast..0 ) of byte;
end;

bscformat = record
 intr   ,
 reset  ,
 class  ,
 size_l ,
 size_h ,
 fvers  ,
 flevel : byte;
 spare  : array ( 7..31 ) of byte;
 free_in   ,
 first_out : byte;
 service   : array ( 0..15 ) of byte;
 imsline   ,
 ready     : byte;
 sr_adr_l  ,             (*  addr in static ram for fwwrite and fwread  *)
 sr_adr_h  ,
 sr_data   : byte;
 debug_area: array ( 0..15) of byte;
 area : array ( linerange ) of line_des_area;
end;

\f



driverhead = record
 first, last, next : integer
end;

header = record
 first,
 last ,
 next : integer;
 cu   ,
 dev  : byte
end;

startlinetype = record
 head : header;
 linesp_h , linesp_l : byte;
 i_size : integer;
 o_size_h,
 o_size_l: byte;
 retry_trans,
 retry_timer,
 retry_recev,
 retry_nobuf,
 retry_ttd  : byte;
 non_polls  : integer;
 auto_ack   : boolean;
end;
  
device_ident = record
cu : 0..31;
dev: 0..63
end;
  
device_type = (term, printer);
\f



senselinetype = record
  linesp_h , linesp_l ,
  i_size_h , i_size_l ,
  o_size_h , o_size_l : byte;
  retry_trans,
  retry_timer,
  retry_recev,
  retry_nobuf,
  retry_ttd  : byte;
  non_polls  : integer;
  auto_ack   : boolean;
 status     : byte;
 activ      : set of 0..31;
 modemstate : byte;
 losts      ,
 not_readys ,
 ufos       : integer;
end;


senselineformat = record
 head : header;
 data : senselinetype;
end;

sensecutype = record
 head : header;
 pollprio : byte;
end;

speedbuftype = record
 head  : header;
 mode_1,
 mode_2: byte
end;

eventformat = record
 head  : driverhead;
 cu    ,
 dev   ,
 eventno ,
 cause ,
 extra : byte;
 lostevents : integer
end;


(*------------------- end of bscenvir ---------------------------*)
.
«eof»