From 98cab31fc3659e33aef260efca55bf9f1753164c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 11 Feb 2019 11:49:19 +0100 Subject: Add source files from Michael --- system/base/unknown/src/editor | 210 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 system/base/unknown/src/editor (limited to 'system/base/unknown/src/editor') diff --git a/system/base/unknown/src/editor b/system/base/unknown/src/editor new file mode 100644 index 0000000..55fbfb1 --- /dev/null +++ b/system/base/unknown/src/editor @@ -0,0 +1,210 @@ + +PACKET editor DEFINES (* Autor: P.Heyderhoff *) + (* Stand: 26.04.82 *) + edit , (* Vers.: 1.6.3 *) + show , + editmode : + +FILE VAR file 1, file 2 ; + +PROC edit (FILE VAR file) : + x edit (file) ; +ENDPROC edit ; + +PROC edit (FILE VAR file 1, file 2) : + x edit (file 1, file 2 ) +ENDPROC edit ; + +PROC edit (TEXT CONST file name) : + last param (file name) ; + IF exists (file name) + THEN edit 1 (file name) + ELIF yes ("neue datei einrichten") + THEN edit 1 (file name) + ELSE errorstop ("") + FI +ENDPROC edit ; + +PROC edit : + edit (last param) +ENDPROC edit ; + +PROC edit 1 (TEXT CONST name) : + file 1 := sequential file (modify, name) ; + IF NOT is error + THEN edit (file 1) + FI +ENDPROC edit 1 ; + +PROC edit (TEXT CONST file name 1, file name 2) : + IF exists (file name 1) + THEN edit 2 (file name 1, file name 2) + ELIF yes ("erste datei neu einrichten") + THEN edit 2 (file name 1, file name 2) + ELSE errorstop ("") + FI +ENDPROC edit ; + +PROC edit 2 (TEXT CONST file name 1, file name 2) : + file 1 := sequential file (modify, file name 1) ; + IF exists (file name 2) + THEN file 2 := sequential file (modify, file name 2) ; + edit (file 1, file 2) + ELIF yes ("zweite datei neu einrichten") + THEN file 2 := sequential file (modify, file name 2) ; + edit (file 1, file 2) + ELSE errorstop ("") + FI +ENDPROC edit 2 ; + +PROC show (FILE VAR file) : + schreiberlaubnis (FALSE) ; + edit (file) ; + schreiberlaubnis (TRUE) +ENDPROC show ; + +PROC show (TEXT CONST file name) : + IF exists (file name) + THEN file 1 := sequential file (modify, file name) ; + show (file 1) ; + ELSE errorstop ("file does not exist") + FI +ENDPROC show ; + +PROC editmode : + feldwortweise (NOT feldwortweise) ; + say (" ") ; + IF feldwortweise + THEN say ("Flieátext"13""10"") + ELSE say ("kein Umbruch"13""10"") + FI . + +ENDPROC editmode ; + + +(****************************** e d i t o r ******************************) + +LET DATEI = ROW 4075 STRUCT (INT nachfolger, vorgaenger, index, + fortsetzung, TEXT inhalt), + freianker = 1, dateianker = 2, satzmax = 4075, + bottom = ""6""23""0"" , escape = ""27"", escape w = ""27"w"; + +BOOL VAR war kein wechsel ; +TEXT VAR tabulator :: 77*" "; + + +PROC editor (DATEI VAR datei) : + enable stop ; + grundzustand; + zustand aus datei holen ; + + REP b i l d e d i t o r (datei); + d a t e i e d i t o r (datei) + UNTIL (feldkommando SUB 1) = escape + PER; + war kein wechsel := (feldkommando SUB 2) <> "w"; + feldkommando (subtext (feldkommando, 3)); + + IF schreiberlaubnis THEN zustand in datei retten FI; + schreiberlaubnis (TRUE); + out (bottom) . + +grundzustand : + bildneu (TRUE); bildeinfuegen (FALSE); bildmarke (0); + feldmarke (0); feldseparator (""); feldstelle(1); + feldeinfuegen (FALSE). + +zustand in datei retten : + inhalt := text (bildstelle, 5); + inhalt CAT text (bildsatz, 5); + inhalt CAT text (bildzeile, 5); + inhalt CAT text (feldlimit, 5); + feldtab (tabulator); + inhalt CAT tabulator . + +zustand aus datei holen : + INT CONST satz nr := int (subtext (inhalt, 1, 5)) ; + IF satz nr > 0 + THEN bildstelle (satz nr) + ELSE bildstelle (datei (dateianker).nachfolger) + FI ; + bildsatz (int (subtext (inhalt, 6, 10))); + bildzeile (int (subtext (inhalt, 11, 15))); + feldlimit (int (subtext (inhalt, 16, 20))); + tabulator := subtext (inhalt, 21) ; + feldtabulator (tabulator) . + +inhalt : + datei (freianker).inhalt . + +END PROC editor; + +PROC y edit (DATEI VAR datei) : + editor (datei); + close +END PROC y edit; + +LET begin mark = ""15"", endmark blank = ""14" "; + +PROC y edit (DATEI VAR erste datei, zweite datei) : + INT CONST alte laenge := bildlaenge - 1; + INT VAR laenge := alte laenge DIV 2, flen := feldende - feldanfang + 2; + bildlaenge (laenge); feldkommando (escape w); + zweimal editieren; + bildlaenge (alte laenge + 1); bildrand (0); + close . + +zweimal editieren: + page; + REP cursor ( 1, laenge + 2); out (begin mark); + cursor(flen, laenge + 2); out (endmark blank); + bildrand (0); editor (erste datei); laenge anpassen; + IF war kein wechsel THEN LEAVE zweimal editieren FI; + bildrand (alte laenge + 1 - laenge); + editor (zweite datei); laenge anpassen + UNTIL war kein wechsel + PER . + +laenge anpassen : + laenge := bildlaenge; + IF laenge = 1 THEN laenge := 2 FI; + IF laenge <= alte laenge - 2 + THEN laenge := alte laenge - laenge + ELSE laenge := 2 + FI ; bildlaenge (laenge) . +END PROC y edit; + +(**************** schrott ***********************) + +PROC x edit (FILE VAR f) : + EXTERNAL 296 +ENDPROC x edit ; + +PROC x edit (FILE VAR f1, f2) : + EXTERNAL 297 +ENDPROC x edit ; + +LET FDATEI= STRUCT ( BOUND DATEI f , + INT index, pointer, line counter, + mode, max line length, max page length, + BOOL edit status unchanged) ; + +PROC x edit (FDATEI VAR f1) : + INTERNAL 296 ; + y edit (CONCR (f1.f)) +ENDPROC x edit ; + +PROC x edit (FDATEI VAR f1, f2) : + INTERNAL 297 ; + y edit (CONCR (f1.f), CONCR (f2.f)) +ENDPROC x edit ; + +PROC dateieditor (DATEI VAR d) : + EXTERNAL 295 +ENDPROC dateieditor ; + +PROC bildeditor (DATEI VAR d) : + EXTERNAL 293 +ENDPROC bildeditor ; + +ENDPACKET editor ; -- cgit v1.2.3