|
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: 31488 (0x7b00) Types: TextFile Names: »retmain4 «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »retmain4 «
job fgs 2 274001 time 5 0 stat 2 mode list.yes ; editering af maintenance tekster ; magtapes : ; ; ; mt543054 : - 1.01, version 2 ; mt543332 : - 2.00, version 2 ; mt543286 : - 3.00, version 2 ; mt543023 : - 5.00, version 2 ; ; mt295430 : release 3.00, version 2 ; ; overskrives og bliver kopi af : ; ; mt543023 : - 5.00, version 2 ; head 1 message ret maintenance tekster message rettelse fra mt543286 til mt543023 1989.08.01 n=set nrz mt543023 g=set mto mt543286 opmess ring on mt543023 mount n opmess no ring mt543286 mount g message subpackage ident fil 1 nextfile n g lookup n g n=copy list.yes 7 tape identification contents : source code package number : sw8010/2 package name : system utility release : 5.00, 1989.08.01 subpackage : maintenance release : 5.00, 1989.08.01 message translate job fil 2 nextfile n g lookup n g n=edit m e v n i! mains=edit i/ maintenance, ,autoload, ,base, basemove, ,ccpm, ,changekit, checkio, ,cpm, ,cpmbak, ,cpmsys, clean, ,createlink, deletelink, disccopy, discinfo, discstat, disctell, do, ,fdformat, ,fpastat, ,initamx, kitlabel, kitname, kitoff, kiton, ,lookupdev, ,lookuplink, ,linkcentral, mainstat, makelink, montest, ,movedump, packoff, packon, printzones, ,releaselink, scatop, scatup, slicelist, termspec /,f mainareas=edit i/ basemove, checkio, clean, deletelink, disccopy, discinfo, discstat, disctell, do, mainstat, makelink, montest, printzones, scatop, scatup, slicelist, termspec / f scopemains=edit mains i/ scope user, /,f lookupmains=edit mains i/ head 1 lookup, /,f clearmains=edit mains i/ clear user, /, f mode list.yes sorry=algol begin trapmode := 1 shift 10; write (out, "nl", 2, <:***********************************************:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* S O R R Y *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:* *:>, "nl", 1, <:***********************************************:>); endaction := -1; end; c=message oversæt slang del af maintenance copy list.yes message.no main1 compress=slang main.3 if ok.no sorry (clean=slang main.4 clean) if ok.no sorry (checkio=slang main.5 checkio) if ok.no sorry ;i trdo4tx (do=slang main.6 main.7 do) if ok.no sorry maintenance=set 1 3 maintenance=compress clean checkio do c=message slut over sættelse af slang del af maintenance c=message oversæt algol del af maintenance ;i trdisccopy4 disccopy=algol connect.no main.8 if warning.yes sorry packon = assign disccopy packoff = assign disccopy kiton = assign disccopy kitoff = assign disccopy kitlabel= assign disccopy kitname = assign disccopy ;i trdstat4tx discstat=algol connect.no main.9 if warning.yes sorry ;i trmstat4tx discstat=algol connect.no main.10 if warning.yes sorry ;i trscatop4tx scatop=algol connect.no main.11 if warning.yes sorry ;i trsll4tx slicelist=algol connect.no main.12 if warning.yes sorry ;i trmont4tx montest=algol connect.no main.13 if warning.yes sorry ;i trterms4tx termspec=algol connect.no main.14 if warning.yes sorry ;i trdtell4tx disctell=algol connect.no main.15 if warning.yes sorry ;i trbasem4tx basemove=algol connect.no main.16 if warning.yes sorry ;i trprz4tx printzones=algol connect.no main.17 if warning.yes sorry ;i trscatup4tx scatup=algol connect.no main.18 if warning.yes sorry ;i trmakelink makelink = algol connect.no main.19 if warning.yes sorry ;i trdeletlink deletelink = algol connect.no main.20 if warning.yes sorry ;i trdinfo5tx discinfo = algol connect.no main.21 if warning.yes sorry i scopemains i lookupmains release main char ff end ! f message compress text fil 3 nextfile n g lookup n g n=edit g ; connect output : segm < 2 + key ; l./; connect output zone.../, l./jl. w3 h28./, l-3, r/1<1+1/1<2+0/ l./m. rc/, r/85.03.13/88.09.08/ f message clean text fil 4 nextfile n g lookup n g n=edit g f message checkio text fil 5 nextfile n g g; base gl text fil 5 skippes n=edit g f message do text 1 fil 6 nextfile n g g; changekit gl text fil 7 skippes lookup n g n=edit g ; fp connect output : segm<2 + key ; l./jl.w3 h28./, l-1, r/<1+1/<2+0/ f message do text 2 fil 7 nextfile n g lookup n g n=edit g ; ny dato ; l./m.rc do 1977.09.26/, r/77.09.26/88.09.12/ f message disccopy packon packoff kitton kitoff kitlabel kitname text fil 8 nextfile n g g; autoload gl text fil 10 skippes lookup n g n=edit disccopy5tx f message discstat text fil 9 nextfile n g lookup n g n=edit discstat4tx ; release process in all cases ; l./slutlabel:/, l./if proc_created then/, i/ close (z, true); <*release process*> /, p1 f message mainstat text fil 10 nextfile n g lookup n g n=edit mainstat4tx ; split dump in monitor release 80.0 ; l./page ...3/, r/88.09.23/89.07.05/ l./<*9*>/, r/),/,/, l1, i/ <*10*><:addr outside dump area:>), /, p-1 l./page ...17/, i# \f <* fgs 1988.09.23 mainstat page ...16a...*> procedure position (zdump, first_addr); value first_addr ; zone zdump ; integer first_addr ; begin integer segment, relative; segment := seg (zdump, first_addr, relative); setposition (zdump, 0, segment ); inrec6 (zdump, relative); end procedure position; integer procedure seg (zdump, first_addr, rel); value first_addr ; zone zdump ; integer first_addr, rel ; begin 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; integer segment, relative, monrel, no_of_segs_in_dump, addr_last_w_of_dumptable, first_addr_in_dump, no_of_words_in_dump, segm_offset; integer field ifld; integer array proc (1:10), iadummy (1:1); \f <* fgs 1988.09.23 mainstat page ...16b...*> if testoutput then write (out, "nl", 2, <:procedure seg : first addr = :>, first_addr, "nl", 1, <:seen this dump before = :>, if seen_this_dump_before then <:true:> else <:false:>); if not seen_this_dump_before then begin <*this dumpfile just connected*> seen_this_dump_before := true; ifld := 2; segment := 0; relative := 64; setposition (zdump, 0, segment); inrec6 (zdump, relative ); inrec6 (zdump, 2 ); system (5) move core :( monitor (4) proc descr addr :(zdump, 0, iadummy), proc); no_of_segs_in_dump := proc (10); monrel := zdump.ifld; if testoutput 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 \f <* fgs 1988.09.23 mainstat page ...16c...*> 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 testoutput 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 testoutput 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*>; \f <* fgs 1988.09.23 mainstat page ...16d...*> 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 testoutput 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 testoutput 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 error (10); <*outside dump*> segment := segm_offset + (first_addr - first_addr_in_dump) shift (-9); relative := (first_addr - first_addr_in_dump) extract 9 ; if testoutput then write (out, "nl", 1, <:segment = :>, segment, "nl", 1, <:relative = :>, relative); seg := segment; rel := relative; end procedure seg; # l./page ...17/, r/88.09.23/89.07.05/ l./boolean/, r/testoutput/testoutput, seen_this_dump_before/ l./page ...20/, r/89.01.12/89.07.06/ l./begin <*dump*>/, l3, i/ seen_this_dump_before := false; /, p-1 l./page ...22/, r/88.09.23/89.07.06/ l./setposition (dz, 0, ia(0)/, d1, i/ position (dz , ia (0)); /, p-2 l./setposition (dz1/, d1, i/ position (dz1, pda ); /, p-2 l./page ...23/, r/88.09.23/89.07.06/ l./inrec6 (dz, 2);/, d1, i/ if main_kind = 80 then begin inrec6 (dz, 2); rpd := dz.ifi; inrec6 (dz, 2); tpd := dz.ifi; end; /, p-5 l./setposition (dz, 0, (ia(0)/, d6, i/ position (dz , ia (0) + 2 * devno); inrec6 (dz , 2 ); pda := dz.ifi ; position (dz1, pda ); inrec6 (dz1, 2 ); /, p-6 l./inrec6 (dz, 2); rpd :=/, d1, i/ if main_kind = 80 then begin inrec6 (dz, 2); rpd := dz.ifi; inrec6 (dz, 2); tpd := dz.ifi; end; /, p-5 l./page ...26/, r/88.09.23/89.07.06/ l./if monrelease > 15 shift/, r/>/>=/ l./page ...27/, r/88.09.23/89.07.06/ l./if monrelease > 15 shift/, r/>/>=/ f message scatop text fil 11 nextfile n g g; movedump gl fil 14 skipped lookup n g n=edit scatop4tx f message slicelist text fil 12 nextfile n g g; fpproc gl text fil 16 skippes lookup n g n=edit g ; connect output : segm < 2 + key ; rc82xx/rc83xx rettes til rc92xx/rc82xx/rc83xx ; l.#RC82xx/RC83xx#, r#RC82xx/RC83xx#RC92xx/RC82xx/RC83xx# l./ size := 3; <* size := no. of segm. add device *>/, r/3; /1 shift 2;/, r/device/key / l.#rc82xx/rc83xx#, r#rc82xx/rc83xx#rc92xx/rc82xx/rc83xx# l./BS-area/, r/BS/bs/ l.#rc82xx/rc83xx#, r#rc82xx/rc83xx#rc92xx/rc82xx/rc83xx# l./on rc83xx discs/, r#rc83xx#rc92xx/rc83xx# f message montest text fil 13 nextfile n g g g g; writeall, releaselink, linkcentral gl fil 18, 19, 20 skippes lookup n g montest4tx=edit g ; connect output : segm < 2 + key ; l./procedure dump;/, l./typeerror (s_text/, i/ begin /, p1 l./init_pointers/, i/ dump_area := false; <*initpointers as for core*> end; /, p-2 l./procedure info;/, l./internal all/, l1, i/ used free /, p-2 l./buf all/, l1, i/ used free /, p-2 l./external all/, l1, i/ used free kind.<kind> /, p-3 l./area all/, l1, i/ used free kind.<kind> /, p-3 l./ result := 2; <*1 < 1 : 1 segment, preferably drum*>/, r/2/1 shift 2/, r/1 < 1/1 < 2/, r/preferably drum/temporary/, p1 l./procedure read_params(/, l./<* specif/, d./8 - undefined/, i/ <* specif : 1 - user.<name> 2 - reserver.<name> 3 - name.<name> 4 - all 5 - devno.<integer> 6 - devno.<integer>.all 7 - main.<name> 8 - used 9 - free 10 - kind.<kind> 11 - undefined specification *> / l./specif:=8/, r/8/11/ l./if param(1) = real<:user/, i/ if param(1) = real<:used:> then specif := 8 else if param(1) = real<:free:> then specif := 9 else /, p-1 l1,l./specif:=8/, r/8/11/ l./specif:=8/, r/8/11/ l./else specif:=8/, r/8/11/ l./end read_params;/, l-2, i/ if param (1) = real <:kind:> then begin if nextparam (p_number) then begin devno := round param (1); name (1) := param (1); specif := 10; end else typeerror (anything, <:parameter error ::>, dummy); end else /, l1, p-3 l./procedure external;/, l./specif:= 4/, r/4/8/, r/all/used/ l1,l./specif < 8/, r/8/11/ l./<* main.<name> *>/, l2, i/ <* used *> if contents.eprocname (1) shift (-40) extract 8 <> 0 then type_external; <* free *> if contents.eprocname (1) shift (-40) extract 8 = 0 then type_external; <* kind.<kind> *> if contents.eprocname (0) extract 24 = devno then type_external; /, p-3 l./<:not found : user.:>/, d2, i/ <:not found : user.:> , <:not found : reserver.:>, <:not found : name.:> , <:not found : all:> , <:not found : devno.:>, <:not found : devno.:> , <:not found : main.:> , <:not found : used:> , <:not found : free:> , <:not found : kind.:>) , name); / l./procedure area_process;/, l./addr, moves/, r/addr/addr, kind/ l./specif:= 4/, r/4/8/, r/all/used/ l./read_params(/, r/i);/kind);/ l./specif < 8/, r/8/11/ l./<* main *>/, l2, i/ <* used *> if contents.eprocname (1) shift (-40) extract 8 <> 0 then type_areaprocess; <* free *> if contents.eprocname (1) shift (-40) extract 8 = 0 then type_areaprocess; <* kind.<kind> *> if contents.eprocname (0) extract 24 = kind then type_areaprocess; /, p-6 l./type_error (s_text,/, r/s_text/if specif <> 10 then s_text else s_number/ l./<:not found : user.:>/, d1, i/ <:not found : user.:> , <:not found : reserver.:>, <:not found : name.:> , <:not found : all:> , <::> , <::> , <:not found : main.:> , <:not found : used:> , <:not found : free:> , <:not found : kind.:>) , name); / l./procedure buf;/, l./check := 6;/, r/6/8/ l./if param(1) = real<:sende:>/, i/ if param(1) = real<:used:> then check := 6 else if param(1) = real<:free:> then check := 7 else /, p-2 l./ok := false; <*param error*>/, i/ ok := true; <*used*> ok := true; <*free*> /, p-2 l./ok:= start_addr + addr >= buf_addr ;/, l1, i/ ok := contents.base (4) <> 0 or contents.base (5) <> 0; ok := contents.base (4) = 0 and contents.base (5) = 0 ; /, p-5 l./type_error (s_text , <:not found/, d5, i/ type_error (s_text , <:not found : all:> , dummy ); type_error (s_text , <:not found : sender.:> , sender_name ); type_error (s_text , <:not found : receiver.:>, receiver_name); type_error (s_text , <:not found : receiver.:>, receiver_name); type_error (s_number, <:not found : addr.:> , param ); type_error (s_number, <:not found : addr.:> , param ); type_error (s_number, <:not found : used:> , param ); type_error (s_number, <:not found : free:> , param ); / l./procedure internal;/, l./<:interrupt m/, r/interrupt m/(unused) / l./boolean found,/, r/;/, type_used, type_free;/ l./type_all := true;/, r/true/type_free := false/, r/;/; type_used := true;/ l./if param (1) = real <:name/, i/ if param (1) = real <:used:> then begin type_all := type_free := false; type_used := ok := true; end else if param (1) = real <:free:> then begin type_all := type_used := false; type_free := ok := true; end else /, l1, p-2 l./type_all := false;/, r/false/type_used := type_free := false/ l./<* search internal proc descr *>/, l./if type_all then type_descr/, d2, i/ if type_all then typedescr else if type_used and contents.raf (1) shift (-40) extract 8 <> 0 then typedescr else if type_free and contents.raf (1) shift (-40) extract 8 = 0 then typedescr else if name (1) = contents.raf (1) and name (2) = contents.raf (2) then typedescr; /, l1, p-12 f n=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 message termspec text fil 14 nextfile n g g; initamx gl text fil 22 skippes lookup n g n=edit g ; connect output : segm < 2 + key ; l./procedure stack_current_output (file_name);/, l./result := 2; <*1<1 <=> 1 segment, preferably disc*>/, r/2/1 shift 2/, r/1<1/1<2/, r/preferably disc/temporary/ f message disctell text fil 15 nextfile n g lookup n g n=edit disctell4tx ; ændret layout aht større proc descr addresser ; l./page ... 5/, r/88.09.27/89.07.14/ l./write(out, <:physical disc : device no. :>,/, r/device no/dev no/ l./page ... 6/, r/88.09.27/89.07.14/ l./write (out, <:logical disc : device no. :>,/, r/disc / disc /, r/device no/dev no/ f message basemove text fil 16 nextfile n g lookup n g n=edit g ; connect output : segm < 2 + key ; l./procedure stack_current_output (file_name);/, l./result := 2;/,r/2/1 shift 2/ l1, r/1<1/1<2/, r/preferably disc/temporary/ f message printzones text fil 17 nextfile n g lookup n g n=edit g ; connect output ; l./procedure stack_current_output (file_name);/, l./result := 2; <*1<1 <=> 1 segment, preferably disc*>/, r/2/1 shift 2/, r/1<1/1<2/, r/preferably disc/temporary/ f message scatup text fil 18 nextfile n g g g g g g; ccpm, cpm, -bak, -sys, fdformat gl fil 27-31 skippes lookup n g n=edit scatup4tx f message makelink text fil 19 nextfile n g lookup n g n=edit makelinktx f message deletelink text fil 20 nextfile n g lookup n g n=edit deletlinktx f message discinfo text fil 21 nextfile n g lookup n g n=edit discinfo5tx f lookup n g message slut editering af maintenance texter end finis ▶EOF◀