|
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: 9984 (0x2700) Types: TextFile Names: »fjolsprogtx«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »fjolsprogtx«
; file swopper prog * page 1 29 05 80, 12.17; fjolsprog = algol begin zone to_z(128, 1, stderror), _ fm_z(128, 1, fjols_error), _ mpr(1, 1, stderror); long array pr_name, to_name, fm_name, wk_name(1:2); integer array bases, fm_b, to_b(1:2), _ messg(1:12), fm_entry(1:20); long array field name_f; integer field segm_f; integer array field base_f, ia_f; integer t, i, buf_addr, entr_sum, _ segm, to_segm, fm_segm; long fm_segm_sum, to_segm_sum, start_time; boolean stat; procedure fjols_error(z, s, b); zone z; integer s, b; begin integer i; messg(1) := s; messg(8) := 5; messg(9) := 2; monitor(72)cat_bases:(mpr, 0, to_b); monitor(64)remove_process:(to_z, 0, fm_entry); if wk_name(1) <> 0 then _ monitor(46)rename:(to_z, 0, wk_name.ia_f); monitor(72)cat_bases:(mpr, 0, fm_b); close(fm_z, true); monitor(72)cat_bases:(mpr, 0, to_b); close(to_z, true); monitor(72)cat_bases:(mpr, 0, bases); monitor(22)send answer:(mpr, buf_addr, messg); write(out, nl, 2, fm_name, <: error status ::>); write_status(out, s); set_position(out, 0, 0); goto RESTART; end fjols_error; \f comment file swopper prog * page 2 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; _ comment statistics init; ________________________ fm_segm_sum := to_segm_sum := 0; entr_sum := 0; start_time := date_time; _ comment prepare base changes; _____________________________ system(11)catbase:(0, messg); bases(1) := messg(1); bases(2) := messg(2); open(mpr, 0, <::>, 0); _ comment fields of cat entries; ______________________________ ia_f := 0; name_f := 6; base_f := 2; segm_f := 16; wk_name(1) := 0; write(out, nl, 2, <:File Jump Over Limit Service:>, _ nl, 1, <:ready:>, nl, 1); setposition(out, 0, 0); \f comment file swopper prog * page 3 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; _ RESTART: <* after fm_z error from fjols_error *> _______ _ <* wait message loop *> __________________________ while true do begin procedure stop(no, cause); integer no, cause; begin messg(8) := 5 + no; messg(9) := 4; <* malfunction *> goto CONT; end; i := monitor(20)wait mess:(to_z, buf_addr, messg); if true then begin get_zone(to_z, fm_entry); pr_name(1) := fm_entry.name_f(0); pr_name(2) := fm_entry.name_f(1); write(out, nl, 2, <:message to fjolsprog:>, i, _ <: from :>, pr_name, nl, 1, messg(1), _ messg(2), messg(3), sp, 1, messg.name_f, _ messg(8), nl, 2); set_position(out, 0, 0); end; if i > 0 and messg(1) = 0 then begin if messg(8) = -1 then <*xfer messg*> ______________ begin _ comment copy mess and collect out-file descr; _____________________________________________ to_b(1) := messg(2); to_b(2) := messg(3); to_name(1) := messg.name_f(1); to_name(2) := messg.name_f(2); for t := 2 step 1 until 8 do messg(t) := 0; \f comment file swopper prog * page 4 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; _ comment collect in-file descr; ______________________________ i := monitor(72)set cat base:(mpr, 0, to_b); if i = 0 then begin open(to_z, 4, to_name, 0); inrec_6(to_z, 34); to_segm := to_z.segm_f; fm_b(1) := to_z.base_f(1); fm_b(2) := to_z.base_f(2); fm_name(1) := to_z.name_f(1); fm_name(2) := to_z.name_f(2); setposition(to_z, 0, 0); if fm_name(1) = to_name(1) and _ fm_name(2) = to_name(2) then begin wk_name(1) := to_name(1); wk_name(2) := to_name(2); close(to_z, true); <* generate name *> if monitor(68, fm_z, 0, fm_entry) <> 0 then _ stop(1, 2); get_zone(fm_z, fm_entry); to_name(1) := fm_entry.name_f(0); to_name(2) := fm_entry.name_f(1); i := monitor(46)rename:(to_z, 0, to_name.ia_f); if i <> 0 then stop(2, i); open(to_z, 4, to_name, 0); end else wk_name(1) := wk_name(2) := 0; \f comment file swopper prog * page 5 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; _ comment set base for in-file; _____________________________ i := monitor(72)set cat base:(mpr, 0, fm_b); if i = 0 then begin open(fm_z, 4, fm_name, -1 shift 2 _ -(1 shift 5)); inrec_6(fm_z, 0); <* sætter nametable address *> _ comment get actual size of in-file; ___________________________________ i := monitor(76)lookup h and t:(fm_z, 0, fm_entry); if i = 0 then begin fm_segm := fm_entry.segm_f; segm := if to_segm <= fm_segm then to_segm _ else fm_segm; _ comment copy files; ___________________ monitor(72)catbase:(mpr, 0, to_b); for t := 1 step 1 until segm do begin inrec_6(fm_z, 4*128); outrec_6(to_z, 4*128); to_from(to_z, fm_z, 4*128); end; _ comment release out_file; _________________________ i := changearea(to_z, 0 add 1); setposition(to_z, 0, 0); monitor(64)remove process:(to_z, 0, fm_entry); if i = 0 then begin _ comment statistics; ___________________ to_segm_sum := to_segm_sum + to_segm; fm_segm_sum := fm_segm_sum + fm_segm; entr_sum := entr_sum + 1; _ comment send answer; ____________________ messg(1) := 1 shift 1; messg(6) := segm; messg(9) := 1; \f comment file swopper prog * page 6 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; end else <*changearea not ok*> begin messg(1) := i shift 1; messg(8) := 4; <*alarm address*> messg(9) := 4; <*malfunction*> end; end else <*infile not found*> begin messg(1) := i shift 1; messg(8) := 3; <*alarm address*> messg(9) := 3; <*unintelligible*> end infile not found; monitor(72)catbases:(mpr, 0, fm_b); close(fm_z, true); end else begin <*input area base trouble*> messg(1) := i shift 1; messg(8) := 2; <*alarm address*> messg(9) := 4; <*malfunction*> end input area base trouble; monitor(72)cat_bases:(mpr, 0, to_b); close(to_z, true); if wk_name(1) <> 0 then begin i := monitor(46)rename:(to_z, 0, wk_name.ia_f); if i <> 0 then begin messg.name_f(0) := to_name(1); messg.name_f(1) := to_name(2); messg(8) := i; end; wk_name(1) := 0; end; _ CONT: <* from stop *> ____ end else begin <*output area base troubles*> messg(1) := i shift 1; messg(8) := 1; <*alarm address*> messg(9) := 4; <*malfunction*> end output area base troubles; monitor(72)catbases:(mpr, 0, bases); monitor(22)send answ:(mpr, buf_addr, messg); \f comment file swopper prog * page 7 29 05 80, 12.17 0 1 2 3 4 5 6 7 8 9 ; if fp_mode(1) or true then begin write(out, nl, 2, to_name, <<d>, <:.:>, _ to_b(1), <:.:>, to_b(2), <: = fjolsprog :>); if messg(8) <> 1 then write(out, fm_name, <<d>, _ <:.:>, fm_b(1), <:.:>, fm_b(2), sp, 1); write(out, case (messg(8) + 1) of ( _ <:ok:>, _ <:output area base troubles:>, _ <:input area base troubles:>, _ <:infile not found:>, _ <:changearea troubles:>, _ <:workname not generated:>, _ <:rename to<95>file error:>, _ <::>), nl, 1, _ <:; called from :>, pr_name, nl, 2); setposition(out, 0, 0); end; end xfer mess else _ <*xfer statistics*> ___________________ begin stat := true; for t := 2 step 1 until 8 do stat := stat and messg(t) = 0; if stat then begin write(out, nl, 3, <:fjols statistics:>, sp, 3); wr_date_time(out, start_time); write(out, <:__-__:>); start_time := date_time; wr_date_time(out, start_time); write(out, nl, 2, <<-dddddddddd>, <:from-segments:>, fm_segm_sum, nl, 1, <:to_-_segments:>, to_segm_sum, nl, 1, <:files________:>, entr_sum, nl, 1); setposition(out, 0, 0); fm_segm_sum := to_segm_sum := 0; entr_sum := 0; end acc stat mess; end test stat mess; end wait mess loop; end permanent loop; close(mpr, true); end; message ude fjolsprog end finis ▶EOF◀