|
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: 43008 (0xa800) Types: TextFile Names: »uti14«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦f8e4b63af⟧ »trcfput« └─⟦this⟧
\f ; rc 17.6.69 editor i, tape 2, page 1. ; outstring: ; comment: a string terminated by the current <del> is trans- ; ferred from the correction document to the correction string ; the value of numic specified characters are taken from ; the byte table; if they are special marked the mark ; is removed. ; ; outstring 1 requiers the total string to be in the corr string ; buffer. ; outstring 2 puts no restrictions on the string. ; outstring 3 requiers the total copied string to be in the ; corr string buffer, and being not empty; b. h10,i4 ; h. ; booleans for: i0: sn.w2 ( , se w1 x1; outstring 3, sn w1 x1, rs.w2 ; outstring 2, sn w1 x1, se w1 x1; outstring 1; w. ; ; outstring 1: a17: am 2 ; long:=false; not empty:= false; goto a; ; outstring 2: a18: am 2 ; long:=true; not empty:= false; goto a; ; outstring 3: a27: rl. w0 i0. ; long:=false; not empty:= true; ; a: rs. w2 i3. ; first:= cur corr; rs. w3 f67. ; save(cur pr); hs. w0 i1. ; ls w0 -12 ; hs. w0 i2. ; h1: ; next normal: boolean long; i1: rs. w2 f63. ; if long then save point:= cur corr; bl w0 x1 ; byte:= byte(cur in); sn w0 g9 ; if byte = <no line> jl. w1 c15. ; then input corr line; al w1 x1+1 ; cur in:= cur in + 1; sz w0 g20+g21 ; if byte = <special> ! <comp> jl. h3. ; then goto test byte; sn. w0 (f6.) ; if byte = delim(1) jl. h9. ; then goto to next pr; ; store byte: h2: hs w0 x2 ; byte(cur corr):= byte; al w2 x2+1 ; cur corr:= cur corr + 1; sn. w2 (f50.) ; if cur corr = corr bottom jl. w2 c7. ; then save correction; jl. h1. ; goto next normal; ; test byte: h3: se. w0 (f37.) ; if byte = num char then jl. h4. ; begin ds. w3 f43. ; save(w2, w3); jl. w2 c14. ; read integer; ; test num char: h10: al w1 x1+1 ; cur in:= cur in +1; bl w0 x1-1 ; byte:= byte(cur in); sn w0 g4 ; if byte = <sp> jl. h10. ; then goto test num char; se. w0 (f37.) ; if byte <> num char jl. c25. ; then alarm(syntax); \f ; rc 1.11.70 editor i, tape 2, page 2. rl. w0 f66. ; sl w0 0 ; in integer < 0 sl w0 128 ; integer >= 128 jl. c25. ; then alarm (syntax); am (0) ; bl. w0 f1. ; byte:= byte table(integer) and la. w0 i4. ; -, special and -,skipped; jl. h2. ; goto store byte; ; end; h4: sz w0 g20 ; if byte = <special> jl. c25. ; then alarm (syntax); ; test comp delim: al. w3 f6. ; delim pointer:= first delim ; next comp: h5: rs. w0 f60. ; subbyte:= byte bl w0 x3 ; byte:= delim (delim pointer); rs. w3 f43. ; save (delim pointer); rx. w0 f60. ; cross (byte, subbyte); jl. w3 c12. ; search comp( jl. h8. ; goto match); ; no match: al. w3 f6. ; delim pointer:= first delim; ; step delim pointer: h6: sn. w3 (f43.) ; if delim pointer = saved delim pointer jl. h7. ; then goto transfer comp; bl w0 x3 ; byte:= delim (delim pointer); hs w0 x2 ; byte (cur corr):= byte; al w2 x2+1 ; cur corr := curcorr + 1; sn. w2 (f50.) ; if cur corr = corr bottom jl. w2 c7. ; then save correction; al w3 x3+1 ; delim pointer:= delim pointer + 1; jl. h6. ; goto step delim pointer; ; transfer comp: h7: bl w0 x1-1 ; byte:= byte(cur in); so w0 g21 ; if byte <> <comp> jl. h2. ; then goto store byte; hs w0 x2 ; byte (cur corr):= byte; al w2 x2+1 ; cur corr:= cur corr + 1 sn. w2 (f50.) ; if cur corr = corr bottom jl. w2 c7. ; then save correction; al w1 x1+1 ; cur in := cur in + 1 jl. h7. ; goto transfer comp; ; match: h8: so w0 g21 ; if byte <> <comp> jl. h9. ; then goto new pr; al w3 x3+1 ; delim pointer:= delim pointer + 1; bl w0 x1 ; byte:= byte (cur in); al w1 x1+1 ; cur in:=cur in +1; jl. h5. ; goto next comp; ; to next pr: h9: rl. w3 f67. ; restore(cur pr); ; boolean not empty: i2: sn. w2 (i3.) ; if not empty and first=cur corr jl. c25. ; then alarm(syntax); jl. a4. ; goto next pr 2; i3: 0 ; first: i4: -1-g20-g24 ; not special and not skipped e. ; \f ; rc 17.6.69 editor i, tape 2, page 3. a19: ; prep last: rs. w2 f63. ; save point:= cur corr; jl. a4. ; goto next pr 2; a20: ; set last: al w0 x2 ; byte:= cur corr - save point; ws. w0 f63. ; am. (f63.) ; byte(save point + 1):= byte hs w0 1 ; jl. a4. ; goto next pr 2; ; mark kind ; comment: a name is read indicating one of the five ; kinds: 1 empty, 2. standard, 3. numeric, 4. char, ; and 5. line. cur pr is shifted to a corresponding ; process string; b. h2, i1 ; begin h. ; byte array kind(1:6):= h1: 83,69,78, 67,76 ; s, e, n, c, l, -1; -1 ; w. ; a21: rs. w2 f67. ; save (cur corr) jl. w2 c13. ; read name (letter); hs. w0 i1. ; al w2 0 ; for i:= 0 step 1 until 6 do h2: bl. w0 x2+h1. ; begin al w2 x2+1 ; sn w0 -1 ; if kind(i) = -1 jl. c25. ; then alarm(syntax); h. se w0 ; if kind(i) = letter then i1: 0 ; begin cur corr:= saved cur corr; w. jl. h2. ; wa w3 4 ; cur pr:= cur pr + i + byte (cur pr + i); rl. w2 f67. ; goto next pr 3; ba w3 x3 ; end jl. a5. ; end e. ; end; \f ; rc 17.6.69 editor i, tape 2, page 4. a22: ; read char: ; comment: a graphic not composed character is input ; and transferred to the correction string; bl w0 x1 ; byte:= byte(cur in); al w1 x1+1 ; cur in:= cur in + 1; se w0 g8 ; if byte = <nl 1> sz w0 g21+g22 ; byte = (<non gr> <comp>) jl. c25. ; then alarm (syntax); al w3 x3+1 ; cur pr:= cur pr + 1; jl. a2. ; goto out corr and next pr 3; a23: ; read yes or no: ; comment: a name is read. if it is yes the next cur pr ; is output, if it is no the second cur pr is output; b. h1 ; begin w. ; rs. w2 f67. ; jl. w2 c13. ; letter:= read name; rl. w2 f67. ; al w3 x3+3 ; cur pr:= cur pr + 3; sn w0 78 ; if letter = <n> jl. h1. ; then goto no se w0 89 ; if letter <> <y> jl. c25. ; then alarm (syntax); ; yes: am -1 ; byte:= byte(cur pr - 1); goto a; ; no: h1: bl w0 x3-1 ; byte:= byte (cur pr - 2); jl. a2. ; a: goto out corr and next pr 3; e. ; end read yes or no; \f ; rc 9.1.70 editor i, tape 2, page 5. a24: ; to nl: ; comment: before transfer to the executor for copying ; the line to be corrected it is tested that the mode ; is on line and that the correct command is ; terminated by a <nl>; bl w0 x1 ; byte:= byte (cur in); bl. w2 f70. ; se w2 1 ; if mode <> on line se w0 g8 ; byte <> <nl> jl. c25. ; then alarm (syntax); jl. c21. ; goto start executor; c19: ; after correction: ; comment: after the corrected line has been composed ; in the corr line string, curr corr and cur pr ; are initialized and control is transferred to next pr 3; al w0 g8 ; hs. w0 f6. ; delim(first delim):= <nl 1> rl. w2 f49. ; cur corr:= corr top al. w3 j18. ; cur pr:= j18 jl. a5. ; goto next pr 3; a26: ; test nl: ; comment: if the next byte is not <nl> an alarm ; is given; bl w0 x1 ; byte:= byte(cur in); al w1 x1+1 ; cur in:= cur in +1; sn w0 g8 ; if byte = <nl1> then jl. a4. ; goto next pr 2; sz w0 g22+g23 ; if byte = (<nongr> or <blind>) jl. a26. ; then goto testnl jl. c25. ; else alarm(syntax); a28: ; out integer byte: ; comment: an integer is read and output as a byte; ds. w3 f43. ; save(w2,w3); jl. w2 c14. ; read integer; restore(w2,w3); rl. w0 f66. ; byte:= integer; al w3 x3+1 ; cur pr:= cur pr +1; jl. a2. ; goto out corr and next pr 3; \f ; rc 29.06.71 editor i, tape 2, page 6. c7: ; procedure save correction; ; w0: destroyed ; w1: saved ; w2: return/updated cur corr ; w3: saved ; comment: the procedure is used for saving the correction string ; when it is full. ; 1. if <save point> is equal <corr top> a correction part is to ; long. alarm <:syntax:> is given. ; 2. the byte at save point is replaced with <restore corr>. ; 3. if the byte at corr top is <first corr> no correction has yet ; been saved. the correction area descriptor is connected for ; output. ; 4. the output is performed. ; 5. the byte replaced is restored and the correction string from ; <save point> to <corr bottom> is moved to <corr top>. when ; exit w2, <cur corr>, points on the byte after the last moved ; byte; b. d2 ; begin w. ; ds. w2 f42. ; save(w1,w2,w3); rs. w3 f43. ; rl. w1 f63. ; sn. w1 (f49.) ; if save point = corr top jl. c25. ; then goto alarm(<:syntax:>); bl w0 x1 ; rs. w0 f40. ; save(byte(save point)); al w0 b5 ; hs w0 x1 ; byte(save point):= <restore corr>; rl. w1 f88. ; w1:= correction area descriptor; bl. w0 (f49.) ; se w0 g11 ; if byte(corr top) <> <first corr> jl. d1. ; then goto output; ; connect: al w0 1<1+0 ; comment: one segment , pref. on disk al w2 x1+h1+2 ; w2:= corr descr.name; am. (f77.) ; jl w3 h28 ; connect output(w1,w2); ; output: d1 = k c. h57<2 ; if system 2 then begin rl w2 x1+h1+16 ; get segment count sl. w2 (f25.) ; if area length <= segmentcount jl. c38. ; then alarm (corr. area); z. ; end system 2; am. (f77.) ; jl w3 h23 ; outblock(w1); ; move: rl. w1 f63. ; w1:= save point; rl. w0 f40. ; byte:= saved(byte(savepoint)); rl. w2 f49. ; cur corr:= corr top; rs. w2 f63. ; save point:= corr top; ; step: d2: hs w0 x2 ; byte(cur corr):= byte; al w2 x2+1 ; cur corr:= cur corr +1; al w1 x1+1 ; w1:= w1 +1; bl w0 x1 ; byte:= byte(w1); se. w1 (f50.) ; if w1 <> corr bottom jl. d2. ; then goto step; rl. w1 f41. ; rl. w3 f43. ; restore(w1,w3); jl. (f42.) ; exit(saved w2); ; e. ; end save correction; \f ; rc 29.06.71 editor i, tape 2, page 7. c13: ; procedure read name; ; w0: irrelevant / first letter of name in kapitel ; w1: cur in / cur in pointing at byte after name ; w2: return / destroyed ; w3: saved ; ; comment: a name consisting of letters including comments, leading ; spaces and new lines, and including following spaces ; is by passed. the first letter of the name is delivered ; in w0; b. h6, i2 ; begin w. ; rs. w2 i1. ; save (w2); ; skip prelude: h1: bl w0 x1 ; first letter:= byte (cur in); sn w0 g9 ; if first letter = <no line> jl. w1 c15. ; then input corr line; al w1 x1+1 ; cur in:= cur in + 1; la. w0 f18. ; se w0 g8 ; if first letter = <nl> sn w0 g4 ; first letter = <sp> jl. h1. ; then goto skip prelude; sl w0 97 ; if first letter is a small letter ba. w0 i2. ; then first letter:= corresponding kapital letter; sl w0 65 ; if first letter sl w0 94 ; is not a letter jl. h5. ; then goto test comment; ; skip letter: h2: bl w2 x1 ; byte 1:= byte (cur in); la. w2 f18. ; sl w2 97 ; if byte 1 is a small letter h. al w2 x2 ; then byte 1:= corresponding kapital letter; i2: -32 ; w. sl w2 65 ; if byte 1 is equal sl w2 94 ; a letter jl. h4. ; then al w1 x1+1 ; begin cur in:= cur in +1; jl. h2. ; goto skip letter end; ; skip post lude: h3: se w2 g4 ; if byte 1 <> <sp> jl. (i1.) ; then exit (saved w2); al w1 x1+1 ; cur in:= cur in + 1; h4: bl w2 x1 ; byte 1:= byte (cur in); la. w2 f18. ; jl. h3. ; goto skip post lude; ; ; test comment: h5: sn w0 59 ; if byte <> ; or h6: sn w0 g7 ; next char: if byte = <em> then jl. c25. ; alarm(syntax); se w0 g8 ; if byte = <nl1> sn w0 g9 ; or byte = <no line> then jl. h1. ; goto skip prelude; al w1 x1+1 ; cur in := cur in + 1; bl w0 x1 ; byte := byte(cur in); jl. h6. ; goto next char; i1: 0 ; saved w2: e. ; end read name; \f ; rc 17.6.69 editor i, tape 2, page 8. c14: ; procedure read integer; ; w0: destroyed ; w1: cur in / cur in pointing at terminating char ; w2: return / saved w2 ; w3: irrelevant / saved w3 ; integer: the value of the integer ; ; a integer consisting of a possible leading sign and termi- ; nated by a non digit character is read and stored in ; integer. spaces are regarded as blind. b. h5 ; begin w. ; rs. w2 f40. ; save (return); al w3 0 ; value:= 0; ; skip leading spaces: h1: bl w0 x1 ; byte:= byte(cur in); se w0 g4 ; if byte = <sp> then jl. h2. ; begin al w1 x1+1 ; cur in:= cur in + 1; jl. h1. ; goto skip leading spaces; ; end; h2: sn w0 45 ; if byte = <minus> am -2 ; then sign:= -1 al w2 1 ; else sign:= +1; rs. w2 f66. ; se w0 43 ; if byte = <plus> sn w0 45 ; byte = <minus> then ; test digit: h3: al w1 x1+1 ; cur in := cur in +1; bl w0 x1 ; byte:= byte(cur in); sl w0 48 ; if byte < digit (0) sl w0 58 ; byte > digit (9) jl. h5. ; then goto term; wm. w3 f21. ; value:= value * 10 + byte - 48; am (0) ; al w3 x3-48 ; jl. h3. ; goto test digit; ; term: h5: wm. w3 f66. ; integer:= value * sign; rs. w3 f66. ; dl. w3 f43. ; restore(w2, w3); bl w0 x1-1 ; se w0 43 ; if byte(cur in-1) = sn w0 45 ; (<plus> or <minus>) al w1 x1-1 ; then cur in:= cur in -1; jl. (f40.) ; exit (saved return); ; e. ; end read integer; \f ; rc 17.6.69 editor i, tape 2, page 9. c15: ; procedure input corr line; ; w0: irrelevant / first byte ; w1: return / cur in pointing at first byte ; w2: saved ; w3: saved ; ; comment: input line is called for reading of the next line; b. i3 ; begin w. ; rs. w1 i1. ; save (w1, w2, w3); ds. w3 i3. ; jl. w3 c1. ; cur in:= input line; bl w0 x1 ; first byte:= byte(cur in); dl. w3 i3. ; restore (w2, w3); jl. (i1.) ; exit(saved w1); ; i1: 0, i2: 0, i3: 0 ; e. ; end input corr line; \f ; rc 17.6.69 editor i, tape 2, page 10. ; definition of byte values for command table and process table: ; value in command table referring to process table: e0 = j0 - b0 ; syntax e1 = j21 - b0 ; line e2 = j22 - b0 ; print e3 = j23 - b0 ; delete e4 = j24 - b0 ; insert e5 = j25 - b0 ; replace e6 = j26 - b0 ; global e7 = j27 - b0 ; correct e8 = j28 - b0 ; mark e9 = j29 - b0 ; verify e10 = j30 - b0 ; where e11 = j31 - b0 ; finis e12 = j32 - b0 ; source ; value in process table referring to preprocesses: e20 = a25 - b1 ; alarm (syntax) e21 = a6 - b1 ; pos e22 = a7 - b1 ; term print e23 = a8 - b1 ; term e24 = a10 - b1 ; out 6 e25 = a11 - b1 ; out 3 e26 = a12 - b1 ; out 2 e27 = a13 - b1 ; out 1 e28 = a14 - b1 ; out rel e29 = a15 - b1 ; return e30 = a16 - b1 ; delim e31 = a17 - b1 ; out string 1 e32 = a18 - b1 ; out string 2 e33 = a19 - b1 ; prep last e34 = a20 - b1 ; set last e35 = a21 - b1 ; mark kind e36 = a22 - b1 ; read char e37 = a23 - b1 ; read yes or no e38 = a24 - b1 ; to nl e39 = a9 - b1 ; to executor e40 = a26 - b1 ; test nl e41 = a27 - b1 ; out string 3 e42 = a28 - b1 ; out integer byte i. e. ; end preprocessor block 2; m.end preprocessor t. i. e. ; end preprocessor block 1; \f ; rc 76.05.17 editor i, tape 2, page ...11... ;global text string: g30: <: line.<10><0>:> g31: <: line, end document.<10><0>:> g32: <:edit end.<10><0>:> g33: <: position not found. <10><0>:> g34: <: back space error. <10><0>:> g35: <: object too big. <10><0>:> g36: <: editor error. <10><0>:> g37: <: syntax. <10><0>:> g38: <: line too long. <10><0>:> g39: <: connect source.<10><0>:> g40: <:***edit<0>:> g41: <: character.<10><0>:> g42: <: work area.<10><0>:> g43: <:<10><0>:> g44: <: correction area.<10><0>:> g45: <: parity error on <0>:> g46: <: source unknown.<10><0>:> \f ; rc 17.6.69 editor i, tape 2, page 12. c12: ; procedure search comp; ; w0: byte ; w1: saved ; w2: saved ; w3: return / cur sub ; sub byte: byte value / destroyed ; save w3; f43: cur sub ; match return: return ; no match return: return + 2 ; comment: it is tested whether the byte can be found among ; a composed set of characters in the substring. if a match is ; found the current subbyte and the found subbyte change ; position in the substring. b. h4 ; begin w. rs. w3 f42. ; save w2:= return; rl. w3 f43. ; i:= cur sub; sn. w0 (f60.) ; if byte = subbyte jl. (f42.) ; then exit (save w2); rx. w0 f60. ; so w0 g21 ; if byte (cur sub) <> <comp> jl. h4. ; then goto no match ; search: h1: al w3 x3+1 ; i:= i + 1; bl w0 x3 ; sub byte:= byte (i); so w0 g21 ; if sub byte <> <comp> jl. h3. ; then goto test last; se. w0 (f60.) ; if byte <> subbyte jl. h1. ; then goto search; bl. w0 (f43.) ; ; match: h2: hs w0 x3 ; byte (i):= byte (cur sub); rl. w3 f43. ; rl. w0 f60. ; hs w0 x3 ; byte(cur sub):= byte; jl. (f42.) ; exit (save w2); ; test last: h3: lo. w0 f16. ; sub byte:= sub byte ! comp; se. w0 (f60.) ; if byte <> subbyte jl. h4. ; then goto no match; bl. w0 (f43.) ; la. w0 f17. ; byte:= byte & not comp; jl. h2. ; goto match; ; no match: h4: dl. w0 f60. ; restore(byte,cur sub); am. (f42.) ; jl 2 ; exit (save w2 + 2); e. ; end search comp; \f ; rc 9.1.70 editor i, tape 2, page 13. c1: ; procedure input line; ; w0: destroyed ; w1: irrelevant / line address ; w2: destroyed ; w3: return / destroyed ; line address: actual line address ; descriptor: actual descriptor address ; call: jl. w3 c1. ; comment: a line is input and stored on the internal line format. ; the bytes are input by the fp inchar function, and the ; corresponding byte is fetched from the byte table. ; special bytes are treated as follows: ; <nl>: is replaced by <nl 1>, a not special byte, and the line ; is terminated ; <em>: is stored and the line is terminated ; <bs> and <cr>: the line is updated in accordance with ; the characters graphical behaviour. ; the mark characters are transformed to not special ; bytes in case the input file is the source file. for the ; correction file following actions are taken: ; line char: input is started a freach. ; char char: in stead of the char char the graphical position ; is replaced by a space. ; number char: the char is just treated as a normal ; character. ; the procedure is used for composing a line after a <cr> has ; been simulated: ; w0: destroyed ; w1: irrelevant / line address ; w2: destroyed ; w3: destroyed ; line address: actual line address ; descriptor: actual descriptor address ; line top: actual line address - 1 ; line bottom: actual line bottom ; bottom: last character of line + 1; ; input line return: return ; call: jl. c2. b. h30, i1 ; begin w. ; rs. w3 f36. ; input line return:= return; ; first: h1: rl. w1 f33. ; w1:= al w1 x1-1 ; cur:= al w2 x1+d4-2 ; line top:= line address -1; ds. w2 f53. ; line bottom:= line top +max line length -2; \f ; rc 9.1.70 editor i, tape 2, page 14. ; next: h2: al w0 x1 ; w0:= cur; rl. w1 f32. ; w1:= descriptor; jl. w3 (f84.) ; w2:= inchar; ; inchar return 1: i1: sl w2 128 ; if char error jl. c36. ; then alarm(character); bl. w2 x2+f1. ; byte:= byte table(w2); sz w2 g20+g24 ; if byte = <special> or <skipped> jl. h20. ; then special 1(inchar return 1); ; store 1: h27: ba. w0 1 ; cur:= cur +1; hs w2 (0) ; byte(cur):= byte; sl. w0 (f53.) ; if cur >= line bottom jl. h6. ; then goto terminate; jl. (f84.) ; w2:= inchar; goto inchar return 1; ; store: h3: rl w2 0 ; w2:= byte; al w0 x1 ; w0:= cur; rl. w1 f32. ; w1:= descriptor; al. w3 i1. ; w3:= inchar return 1; jl. h27. ; goto store 1; ; nl: h4: al w2 g8 ; byte:= <nl 1>; ; em: h5: rl. w0 f35. ; cur:= bottom; ba. w0 1 ; cur:= cur +1; hs w2 (0) ; byte(cur):= byte; ; terminate: h6: al w2 g9 ; byte:= <no line>; ba. w0 1 ; cur:= cur +1; hs w2 (0) ; byte(cur):= byte; rl. w1 f33. ; w1:= line address; jl. (f36.) ; exit(input line return); c2: ; comment: entry for processing after simulation of <cr>; ; cr: h7: rl. w1 f34. ; cur:= line top; am 1 ; delete next instruction ; bs: h8: al w1 x1-1 ; cur := cur-1; sn. w1 (f34.) ; if cur = line top jl. h9. ; then goto next comp; bl w0 x1 ; byte:= byte(cur); sz w0 g21+g22 ; if byte = <comp> or <non gr> jl. h8. ; then goto bs; ; next comp: h9: al w0 x1 ; w0:= cur; rl. w1 f32. ; w1:= descriptor; jl. w3 (f84.) ; w2:= inchar; sl w2 128 ; if char error jl. c36. ; then alarm(character); ; inchar return 2: bl. w2 x2+f1. ; byte:= byte table(w2); sz w2 g20+g24 ; if byte = <special> or <skipped> jl. h21. ; then special 2(in char return 2); rx w2 0 ; w0:= byte; al w1 x2 ; w1:= cur; \f ; rc 17.6.69 editor i, tape 2, page 15. ; skip non graphic: h10: sn. w1 (f35.) ; if cur = bottom jl. h3. ; then goto store; al w1 x1+1 ; cur:= cur + 1; bl w3 x1 ; byte 1:= byte (cur); sz w3 g22 ; if byte 1 = <non gr> jl. h10. ; then goto skip non graphic; sz w0 g22 ; if byte = <non gr> jl. h16. ; then goto make room; ; test sp: h11: la. w3 f17. ; byte 1:= byte 1 & not comp se w0 g4 ; if byte = <sp> ! sn w0 x3 ; byte = byte 1 jl. h19. ; then goto skip forward; sn w3 g4 ; if byte 1 = <sp> jl. h18. ; then goto store comp; se w0 g5 ; if byte <> <underline> jl. h13. ; then goto test bar; ; underline: h12: lo. w0 f16. ; byte:= byte ! comp; jl. h16. ; goto make room; ; test bar: h13: se w0 g6 ; if byte <> <bar> jl. h14. ; then goto test comp; se w3 g5 ; if byte 1 <> <underline> jl. h12. ; then goto underline; bl w3 x1 ; byte 1:= byte (cur); so w3 g21 ; if byte 1 <> <comp> jl. h15. ; then goto comp and make room; al w1 x1+1 ; cur:= cur + 1; bl w3 x1 ; byte 1:= byte (cur); la. w3 f17. ; byte 1:= byte 1 & not comp sn w0 x3 ; if byte 1 = byte jl. h19. ; then goto skip forward jl. h12. ; goto underline; ; test comp: h14: bl w3 x1 ; byte 1:= byte (cur); so w3 g21 ; if byte 1 <> <comp> jl. h15. ; then goto comp and make room; al w1 x1+1 ; cur:= cur + 1; bl w3 x1 ; byte 1:= byte (cur); la. w3 f17. ; byte 1:= byte 1 & not comp; se w0 x3 ; if byte 1 <> byte jl. h14. ; then goto test comp; jl. h19. ; else goto skip forward; \f ; rc 17.6.69 editor i, tape 2, page 16. ; comp and make room: h15: lo. w3 f16. ; byte 1:= byte 1 ! comp; hs w3 x1 ; byte (cur):= byte 1; al w1 x1+1 ; cur:= cur + 1; ; make room: h16: rl. w2 f35. ; cur 1:= al w2 x2+1 ; bottom:= bottom + 1; rs. w2 f35. ; sl. w2 (f53.) ; if bottom >= line bottom jl. h25. ; then goto line over flow ; step room: h17: sn w2 x1 ; if cur 1 = cur jl. h18. ; then goto store comp; al w2 x2-1 ; cur 1:= cur 1 - 1; bl w3 x2 ; hs w3 x2+1 ; byte (cur 1 + 1):= byte (cur 1); jl. h17. ; then goto step room; ; store comp: h18: hs w0 x1 ; byte (cur):= byte; ; skip forward: h19: bl w3 x1 ; byte 1:= byte (cur) sz w3 g22 ; if byte 1 = <non gr> jl. h8. ; then goto bs; so w3 g21 ; if byte 1 <> <comp> jl. h9. ; then goto next comp; al w1 x1+1 ; cur:= cur + 1; jl. h19. ; goto skip forward; ; line overflow: h25: al w0 g9 ; hs w0 x2-1 ; byte (bottom - 1):= <no line> jl. c26. ; alarm (line to long); ; procedure special 1, special 2; ; w0: cur ; w1: descriptor ; w2: byte ; w3: return -6 ; call special 1: jl. h20. ; call special 2: jl. h21. ; ; comment: the difference between special 1 and special 2 is ; that special 1 sets the value of bottom to cur, special 2 does ; not. ; on the special bytes <nl>, <bs>, <cr>, and <em> jump is ; made to relevant actions. ; if the descriptor is the source descriptor the special mark ; on the mark characters are removed and return is made. ; otherwise: ; line char: will cause jump to first. ; char char: cause replacement with <sp> and compressing ; if necessary and then return either to store or to store comp. ; numeric char: cause imediate return. \f ; rc 1.11.70 editor i, tape 2, page 17. b. i1 ; begin w. ; special 1: h20: rs. w0 f35. ; bottom:= cur; ; special 2: h21: sz w2 g24 ; if byte = <skipped> then inchar(w3); jl. (f84.) ; sn w2 g1 ; if byte = <nl> then goto nl; jl. h4. ; sn w2 g3 ; if byte = <bs> then goto bs 1; jl. h26. ; sn w2 g2 ; if byte = <cr> then goto cr; jl. h7. ; sn w2 g7 ; if byte = <em> then goto em; jl. h5. ; sn w2 g15 ; if byte = <sub> then jl. c39. ; alarm (parity error); se. w1 (f28.) ; if descriptor <> source descriptor jl. h22. ; then goto del char; la. w2 f18. ; byte:= byte and not special; jl x3+10 ; exit(return); ; bs 1: h26: rl w1 0 ; w1:= cur; jl. h8. ; goto bs; ; del char: h22: se. w2 (f38.) ; if byte = line char then jl. h28. ; begin a: char:= inchar jl. w3 (f84.) ; if char <> <nl> se w2 10 ; then goto a; jl. -4 ; goto first; jl. h1. ; end; h28: sn. w2 (f37.) ; if byte = num char then exit(return); jl x3+10 ; ; erasing: rl w1 0 ; w1 := cur; al w0 g4 ; byte := <sp>; al w2 x1 ; cur1 := cur; ; step distance: h23: bl w3 x2+1 ; byte1 := byte(cur1 + 1); sz w3 g21+g22 ; if byte1 <> (<nongr> or <comp>) sn. w2 (f35.) ; or cur1 = bottom jl. h24. ; then goto move; al w2 x2+1 ; cur1 := cur1 + 1; jl. h23. ; goto step distance; ; move: h24: al w3 x1 ; ws w3 4 ; distance := cur - cur1; hs. w3 i1. ; ; test move: h29: sn. w2 (f35.) ; if cur1 = bottom jl. h30. ; then goto set new bottom; al w2 x2+1 ; cur1 := cur1 + 1; bl w3 x2 ; i1 = k+1 ; integer distance: hs w3 x2+0 ; byte(cur1 + distance) := byte(cur1); jl. h29. ; goto test move; ; set new bottom: h30: ba. w2 i1. ; bottom := bottom + distance; rs. w2 f35. ; sn w1 x2 ; if cur = bottom jl. h3. ; then goto store; al w1 x1+1 ; cur := cur + 1; jl. h18. ; goto store comp; e. ; end special; e. ; end input line; \f ; rc 76.05.17 editor i, tape 2, page ...18... ; procedure alarm (message text); ; comment: for normal alarms the current value of the correction ; number and the message text are printed on the message docu- ; ment. for the editor error, the call address (the value of w1) ; is printed in stead of the correction number. in on-line ; mode control is transfered to start preprocessing. in off- ; line mode the editing is terminated. b. h1, i1 ; begin w. ; ; connect source: c34: rl. w2 f56. ; w2:= cur obj; sn w0 3 am g46-g39 ; mess:=<:source unknown:> am g39-g33 ; mess:= mess 7; goto save pointer; ; am -1 ; position not found: c23: am g33-g34+1 ; mess:= mess1; goto save pointer; ; ; back space error: c24: am g34-g35 ; mess:= mess 2; goto save pointer; ; ; obj to big: c27: al. w0 g35. ; mess:= mess 3; ds. w2 f56. ; save pointer: save (cur source, cur obj); jl. h1. ; goto print; ; ; editor error: c29: rs. w1 f69. ; corr no:= call address; am g36-g42 ; mess:= editor error; else ; work area: c37: al w0 g42-g37 ; mess:= work area; al w1 2 ; if work alarm sn w0 g42-g37 ; then bypass close object; hs. w1 f92. ; al w1 1 ; hs. w1 f70. ; opr mode:= off line; am (0) ; goto print; ; ; syntax: c25: am g37-g41 ; mess:= mess5; goto print; ; character: c36: am g41-g44 ; mess:= character; goto print; ; ; correction area c38: am g44-g38 ; mess := corr. area; goto print; ; ; line to long: c26: al. w0 g38. ; mess:= mess 6; ; print: h1: rs. w0 i1. ; al. w2 g40. ; jl. w3 c17. ; printtext(<:***edit:>); rl. w0 f69. ; jl. w3 c16. ; print value (corr no); 32<12+5 ; rl. w2 i1. ; jl. w3 c17. ; print text (mess); rl. w2 i1. ; if <position not found> during sn. w2 g33. ; string search then jl. w3 c41. ; print searched string; bl. w0 f70. ; rl. w2 f56. ; w2:=cur. obj. se w0 0 ; if opr mode = off line jl. c18. ; then goto error terminate editor; jl. c20. ; goto start preprocessor; i1: 0 ; e. ; end alarm; \f ; rc 1.11.70 editor i, tape 2, page 19. c16: ; procedure print value; ; w0: value ; w1: - ; w2: - ; w3: return ; return: <layout> ; comment: the procedure just transferes the call to ; out integer on current output; b. i2 ; begin w. ; am. (f77.) ; jl h32-2 ; out integer current(w0); ; end print value; c17: ; procedure print text; ; w0: destroyed ; w1: destroyed ; w2: addr / destroyed ; w3: return / destroyed ; ; comment: a string terminated by <0> is printed ; on the message document; ; begin rs. w3 i2. ; save( return); al w0 x2 ; w0:= addr; am. (f77.) ; jl w3 h31-2 ; outtext current(w0); al w2 0 ; am. (f77.) ; jl w3 h33-2 ; outend current(0); jl. (i2.) ; exit(saved return); i2: 0 ; e. ; end print text; c39: ;print parity alarm ; called from special1 or special2 in ; input line (c1) ; w0 - / unchanged ; w1 descriptor / unchanged ; w2 par.char. / unchanged ; w3 return-10 / unchanged b. i1 w. ds. w1 i0. ; begin la. w2 f18. ; byte := <sub>; ds. w3 i1. ; save registers; rl. w2 f77. ; get fp-base; al. w0 g45. ; get text addr jl w3 x2+h31-2 ; outtext(parity error on); rl. w3 i0. ; al w0 x3+h1+2 ; get document name address jl w3 x2+h31-2 ; outtext(document name); al w2 10 ; am. (f77.) ; jl w3 +h33-2 ; outend(nl); dl. w1 i0. ; restore registers; dl. w3 i1. ; jl x3+10 ; return; end; 0, i0:0, 0, i1: 0 ; saved registers e. \f ; rc 1.11.70 editor i, tape 2, page 20. f1: ; byte table: h. g24+0 , g22+1 , g22+2 , g22+3 ; skipped, non gr , non gr , non gr g22+4 , g22+5 , g22+6 , g22+7 ; non gr , non gr , non gr , non gr g3=8+g20 , g1=10+g20 ; <bs> , <ht> , <nl> , <vt> g3 , g22+9 , g1 , g22+11 ; spec , non gr , spec , non gr g2=13+g20 ; <ff> , <cr> , g22+12 , g2 , g22+14 , g22+15 ; non gr , spec , non gr , non gr ; , red rb , black rb g22+16 , g22+17 , g22+18 , g22+19 ; non gr , non gr , non gr , non gr g22+20 , g22+21 , g22+22 , g22+23 ; non gr , non gr , non gr , non gr g7=25+g20, g15=26+g20 ; <em> , <sub> g22+24 , g7 , g15 , g22+27 ; non gr , spec , spec , non gr ; , <us> g22+28 , g22+29 , g22+30 , g22+31 ; non gr , non gr , non gr , non gr g4=32+g23, g6=33 ; <sp> , <bar> , g4 , g6 , 34 , 35 ; blind , , , 36 , 37 , 38 , 39 ; , , , 40 , 41 , 42 , 43 ; ( , ) , , + 44 , 45 , 46 , 47 ; , , - , . , / 48 , 49 , 50 , 51 ; 0 , 1 , 2 , 3 52 , 53 , 54 , 55 ; 4 , 5 , 6 , 7 56 , 57 , 58 , 59 ; 8 , 9 , : , ; 60 , 61 , 62 , 63 ; < , = , > , \f ; rc 17.6.69 editor i, tape 2, page 21. 64 , 65 , 66 , 67 ; , a , b , c 68 , 69 , 70 , 71 ; d , e , f , g 72 , 73 , 74 , 75 ; h , i , j , k 76 , 77 , 78 , 79 ; l , m , n , o 80 , 81 , 82 , 83 ; p , q , r , s 84 , 85 , 86 , 87 ; t , u , v , w 88 , 89 , 90 , 91 ; x , y , z , æ g5=95 ; 92 , 93 , 94 , 95 ; ø , å , & , 96 , 97 , 98 , 99 ; , a , b , c 100 , 101 , 102 , 103 ; d , e , f , g 104 , 105 , 106 , 107 ; h , i , j , k 108 , 109 , 110 , 111 ; l , m , n , o 112 , 113 , 114 , 115 ; p , q , r , s 116 , 117 , 118 , 119 ; t , u , v , w 120 , 121 , 122 , g20+123 ; x , y , z , æ g20+124 , g20+125 , 126 ; ø , å , g23+g24+127 ; <del> blind skipped m.rc 76.05.17, editor i, tape 2. \f ▶EOF◀