|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 10752 (0x2a00) Types: TextFile Names: »retmont4tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »retmont4tx «
mode list.yes montest5tx=edit montest4tx ; split dump i monitor release 80.0 og frem ; max internals og max chains i monitor release 81.0 og frem ; forbedrede feltnavne i internals ; l./integer sep,/, l./bit, all/, r/bit/bit, bit12/ l./main;/, r/main;/main, no_of_segs_in_dump, internals, max_internals, chains, max_chains;/ l1, r/quit;/quit, first_time_this_dump, testout;/ l./procedure dump;/, l./integer array iadummy/, r/;/, proc (1:14);/ l./if i > 0 then/, d1, i/ if i = 0 then begin <*area process created*> first_time_this_dump := true; system (5) move core :( monitor (4) proc descr addr :(zdump, 0, iadummy), proc); no_of_segs_in_dump := proc (10); end else begin /, p-8 l./dump_area := false/, r/d/ d/, l1, r/e/ e/, p-1 l./procedure commands;/, l./write (out/, l1, r/<:/<:<10>/ l./<:core/, r/core /mem / l./procedure info;/, l./write(out/, r/(out,<:/ (out, <:<10>/, p-1 l./dump <dumparea>/, l./core/, r/core/mem / l1, d3, i/ <: core ' further commands will refer to the resident core system, cf. the command dump ':>, / l./lines <first line> (.<last line>)/, l./string infor/, d, i/ <: mem ' further commands will refer to the resident memory system, cf. the command dump ':>, / l./procedure init_pointers;/, l./if contents(11) <*start of interrupt stack/, d9,i/ monitor_release := contents(13); oldmon := false ; move (90, contents); /, p-5 l./if old_mon/, d2 l./28;/, d, i/ if monitor_release < 80 shift 12 + 0 then 28 else contents (1); /, p-4 l./userid:=/, i$ internals := (name_table_end - first_internal) // 2; chains := (last_bs - first_drum ) // 2; if monitor_release <= 80 shift 12 + 0 then begin max_internals := internals; max_chains := chains ; end else begin move (1232, contents); max_internals := contents (1); max_chains := contents (2); end; $, p-12 l./id_array_size:=/, r$(name_table_end-first_internal)//2$max_internals$ l./end init_pointers;/, i/ if dump_area then write (out, "nl", 1, true, 12, area) else write (out, "nl", 1, <:memory :>); write (out, <:monitor release : :> , <<dd>, monitor_release shift (-12), <:.:>, <<zd>, monitor_release extract 12 , <:<10>:>); outend (out); /, l1, p-8 l./procedure veri;/, l./else <:core:>/, r/core/memory/ l./procedure type_usernames (/, l./internals,/, r/internals,// l./internals:=/, d l./procedure type_names (/, l./internals,/, r/internals,// l./internals:=/, d l./integer procedure identification_mask(/, l./internals,/, r/internals,// l./internals:=/, d l./procedure external;/, l./<:core:>/, r/core/memory/ l./procedure area_process;/, l./<:core:>/, r/core/memory/ l./procedure chain;/, l./<:core:>/, r/core/memory/ l./<:first slice of chaintable area/, r/first slice of chaintable area/number of keys /, p-2 l./chains, /, r/chains, // l./chains:=/, d l./procedure buf;/, l./<:core:>/, r/core/memory/ l./procedure internal;/, l./<:core:>/, r/core/memory/ l./<:ident/, r/ident /relative, id /, p-1 l./<* stop count/, l./write_formatted/, r/ + bit// l./for j:= 1 step 1 until 10 do/, r/10/12/ l1, r/72/72,11,200/ l./<:running/, l1, i/ <:running:>, <:waiting for cpu:>, /, p-2 l./<* identification/, l1, d, i$ begin write_formatted ((contents (9) shift (-12) shift 12)//4096, int); write_formatted ( contents (9) extract 12 , bit12); end; $, p-4 l./<* parent description/, l1, d, i$ begin writeformatted (contents (28), int); if contents (28) > 0 then begin real array pname (1:2); getdescr_or_name (pname, contents (28), false); write (out, <: (:>, pname, <:):>); end; end; $, p-8 l./<* quantum /, l1, d, i$ write (out, <<-ddddddd.dddd>, contents (29)/10000, <: secs:>); $, p-3 l./<* run time/, l1, d1, i$ write (out, <<-ddddddd.dddd>, ((extend 0 + contents (30)) shift 24 add contents (31))/10000, <: secs:>); $, p-3 l./<* start run/, l1, d1, i/ write_clock (contents (32), contents (33)); /, p-1 l./<* start wait/, l1, d1, i/ write_clock (contents (34), contents (35)); /, p-1 l./integer i, j, type/, r/internals, // l./internals:=/, d l./procedure write_formatted (/, l./for i:= 0 step 1 until 7 do/, r/7/8/ l./end case;/, i$ begin <*12 bits*> for j := 12 step 1 until 23 do write (out, if word shift j < 0 then <:1:> else <:.:>); write (out, sp, 2); end; $, p-5 l./procedure type_text(/, l6, i$ procedure write_clock (int1, int2); value int1, int2 ; integer int1, int2 ; begin long l; real r; l := (extend 0 + int1) shift 24 add int2; r := l / 10000; write (out, << zd dd dd>, systime (4, r, r), r, sp, 2); end; $, p-9 l./procedure move (first_addr/, l./integer present_segment/, l1, r/;/, monrel, addr_last_w_of_dumptable, first_addr_in_dump, no_of_words_in_dump, segm_offset;/,p-4 l./first_index :=/, i/ own integer first_addr__low_part, top_addr__low_part, no_of_segs_low__part, first_addr_high_part, top_addr_high_part, no_of_segs_high_part; real array ra (1:1); /, p-4 l./segment := first_addr shift (-9);/, d1, i# if testout then write (out, "nl", 1, <:first time this dump = :>, if first_time_this_dump then <:true:> else <:false:>); if first_time_this_dump then begin <*this dumpfile just connected*> first_time_this_dump := false; ifld := 2; segment := 0; relative := 64; setposition (zdump, 0, segment); inrec6 (zdump, relative ); inrec6 (zdump, 2 ); monrel := zdump.ifld; if testout then write (out, "nl", 1, <:monrel = :>, monrel shift (-12), <:.:>, monrel extract 12); if monrel < 80 shift 12 then begin <*contigous dump area*> first_addr_low_part := 0; no_of_segs_low_part := no_of_segs_in_dump; top___addr_low_part := no_of_segs_in_dump * 512; end else begin <*split dump*> relative := 12; setposition (zdump, 0, segment); inrec6 (zdump, relative ); inrec6 (zdump, 2 ); addr_last_w_of_dumptable := zdump.ifld; relative := addr_last_w_of_dumptable - 8; if testout then write (out, "nl", 1, <:addr l w of dumptable = :>, relative); setposition (zdump, 0, segment); inrec6 (zdump, relative ); inrec6 (zdump, 2 ); first_addr_low_part := zdump.ifld; inrec6 (zdump, 2 ); no_of_segs_low_part := zdump.ifld; top_addr_low_part := first_addr_low_part + 512 * no_of_segs_low_part; inrec6 (zdump, 2 ); first_addr_high_part := zdump.ifld; inrec6 (zdump, 2 ); no_of_segs_high_part := zdump.ifld; top_addr_high_part := first_addr_high_part + 512 * no_of_segs_high_part; if testout then write (out, "nl", 1, <:f. addr low part = :>, first_addr_low_part, "nl", 1, <:t. addr low part = :>, top___addr_low_part, "nl", 1, <:n. segs low part = :>, no_of_segs_low_part, "nl", 1, <:addr. l. w d.tabl = :>, addr_last_w_of_dumptable, "nl", 1, <:f. addr high part = :>, first_addr_high_part, "nl", 1, <:t. addr high part = :>, top___addr_high_part, "nl", 1, <:n. segs high part = :>, no_of_segs_high_part); end <*split dump*>; end <*dump file just connected*>; if first_addr >= first_addr_low_part and first_addr < top___addr_low_part then begin <*low part*> first_addr__in_dump := first_addr_low_part; no_of_words_in_dump := (top_addr_low_part - first_addr) / 2; segm_offset := 0; if testout then write (out, "nl", 1, <:low part ::>, "nl", 1, <:first addr in dump = :>, first_addr_in_dump, "nl", 1, <:no of wrds in dump = :>, no_of_words_in_dump, "nl", 1, <:segment offset = :>, segm_offset); end else if first_addr >= first_addr_high_part and first_addr < top___addr_high_part then begin <*high part*> first_addr__in_dump := first_addr_high_part; no_of_words_in_dump := (top_addr_high_part - first_addr) / 2; segm_offset := no_of_segs_low_part; if testout then write (out, "nl", 1, <:high part ::>, "nl", 1, <:first addr in dump = :>, first_addr_in_dump, "nl", 1, <:no of wrds in dump = :>, no_of_words_in_dump, "nl", 1, <:segment offset = :>, segm_offset); end else begin <*outside dump*> ra (1) := first_addr; type_error (s_number, <:addr outside dump area, addr = :>, ra); first_addr := first_addr__in_dump := first_addr_low_part; no_of_words_in_dump := (top_addr_low_part - first_addr) / 2; segm_offset := 0; end; segment := segm_offset + (first_addr - first_addr_in_dump) shift (-9); relative := (first_addr - first_addr_in_dump) extract 9 ; if testout then write (out, "nl", 1, <:segment = :>, segment, "nl", 1, <:relative = :>, relative); #, p1 l./for word := 1, /, r/ while/ while/, r/ do/ and word <= no_of_words_in_dump do/, p-1 l./procedure convert_to_number(/, l./real <::>/, r/real <::> /real <:mem:>/ l1, r/<::> /<:test:>/ l1, r/<::> /<:notes:> add 't'/ l./<* m a i n p r o g r a m *>/, l./code:= 1 shift 7/, l1, i/ bit12:= 1 shift 8; /, p-7 l./quit := false;/, l1, i/ first_time_this_dump := false; testout := false; /, p-1 l./init_pointers;/, l./;;;/, d, i/ core; testout := true; testout := false; /, p-3 f end ▶EOF◀