|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 9984 (0x2700)
Types: TextFileVerbose
Names: »bscenvir«
└─⟦041268bb6⟧ Bits:30003098 SW2001/2/3.02 RC3502 Operating System
└─⟦6fc3bf78b⟧
└─⟦this⟧ »bscenvir«
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»