DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 1 DSK:MIDED3.SIM 7-APR-1979 8:36 00030 OPTIONS(/l/e); COMMENT VIDED - DISPLAY EDITOR. See SIM013 W LINE 30 EXTERNAL SWITCH ALREADY SPECIFIED, IGNORED 00060 VISTA.MAN for explanations on the routines used in this program; 00090 COMMENT Copyright (c) Swedish National Defense Research Institute; 00120 COMMENT The Author and the Swedish National Defense Research 00150 Institute take no responsibility for errors in this program or other 00180 files connected with it; 00210 00240 COMMENT COMMENT%IF VIDTIM marks additions to output everything 00270 input from the user terminal onto a log file; 00300 COMMENT COMMENT%IF STAT marks output of statistics on command 00330 usage; 00360 COMMENT COMMENT%IF FQC marks additions to enable the use of 00390 FQC for frequency counting on VIDED; 00420 COMMENT COMMENT%IF DEBUGTERMINAL marks additions to allow separate 00450 debug and editing terminals; 00480 COMMENT COMMENT%IF DEBUGSLOW marks additions to create artificial 00510 slowness to debug behaviour on a heavily loaded machine; 00540 00570 COMMENT all the external procedures below are described in the 00600 DECsystem-10 SIMULA Language Handbook part 3; 00630 COMMENT%IF callmac; 00660 EXTERNAL PROCEDURE vtmcur, vtsynk, vtisng; 00690 COMMENT%IFEND CALLMAC; 00720 EXTERNAL PROCEDURE outche, tshift, pgcopy, vdccin, vdccout; 00750 EXTERNAL INTEGER PROCEDURE iondx, vdlno; 00780 EXTERNAL TEXT PROCEDURE tmpin, conc, front, storbokstav, 00810 litenbokstav, rest, filspc, inline, frontstrip, scanto, from, upto, 00840 today, tmpnam, compress, skip, maketext; 00870 00900 EXTERNAL CHARACTER PROCEDURE findtrigger, fetchar; 00930 EXTERNAL INTEGER PROCEDURE search, scanint, rename; 00960 EXTERNAL INTEGER PROCEDURE sscan; 00990 EXTERNAL REF (infile) PROCEDURE findinfile; 01020 EXTERNAL REF (outfile) PROCEDURE findoutfile; 01050 EXTERNAL CHARACTER PROCEDURE getch; 01080 EXTERNAL INTEGER PROCEDURE trmop, gettab, checkint; 01110 EXTERNAL BOOLEAN PROCEDURE puttext, numbered, tmpout, rescan, 01140 dotypeout, bokstav; 01170 EXTERNAL PROCEDURE depchar, outstring, forceout, echo, abort, exit, 01200 outchr, run; 01230 COMMENT%IF debugslow 01260 EXTERNAL PROCEDURE sleep; 01290 COMMENT%IFEND debugslow; 01320 EXTERNAL BOOLEAN PROCEDURE meny; 01350 EXTERNAL CLASS termty; 01380 COMMENT%IF CALLMAC; 01410 EXTERNAL CLASS mmista, mided1, mided2; 01440 mided2 CLASS mided3; SIM052 W LINE 1440 ILLEGAL SWITCH SETTING DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 1-1 DSK:MIDED3.SIM 7-APR-1979 8:36 01470 COMMENT%IFNOT CALLMAC 01500 EXTERNAL CLASS mvista, vided1, vided2; 01530 COMMENT%IFNOT CALLMAC 01560 vided2 CLASS vided3; 01590 COMMENT%IFEND CALLMAC; 1591 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 2 DSK:MIDED3.SIM 7-APR-1979 8:36 B1 01620 BEGIN 01650 COMMENT%IF debugterminal - when debugging with a separate debug 01680 REF (infile) newsysin; ! terminal for SIMDDT i/o and another; 01710 COMMENT%IF debugterminal terminal for the VIDED editing 01740 REF(outfile) newsysout; 01770 COMMENT%IFEND debugterminal; 01800 COMMENT%IF VIDTIM 01830 REF (outfile) vidtim; ! File for log of input from terminal; 01860 COMMENT%IFEND VIDTIM; 01890 COMMENT%IF STAT 01920 REF (outfile) stat; ! File for statistics; 01950 COMMENT%IFEND STAT; 01980 02010 REF (vided3x) the_editor; 02040 INTEGER giventrmspeed; ! terminal speed given by user; 02070 INTEGER terminaltype; ! Number of user terminal type; 02100 INTEGER height; ! Number of lines on the screen; 02130 INTEGER width; ! Number of characters in a line on the screen; 02160 INTEGER bad_line_count; ! Count of bad lines; 02190 INTEGER oldnarg; ! Number of lines to be shown after &N search; 02220 INTEGER backupzscroll; ! Line to scroll to after file backup; 02250 INTEGER backupsubpage; ! backup to this sub_page_number; 02280 INTEGER backuphor; ! Horzontal pos to return to after backup; 02310 INTEGER backupvert; ! Vertical pos to return to after backup; 02340 INTEGER backupchecksum; ! to check that backup came back right; 02370 INTEGER autobackcount; ! count for automatic &FB generation; 02400 INTEGER autobackup; ! limit for above count; 02430 COMMENT%IF debugterminal 02460 BOOLEAN debug; ! Debugging with separate terminal for SIMDDT; 02490 COMMENT%IFEND debugterminal; 02520 CHARACTER volkeomchar; ! Volker 414h EOM character; 02550 BOOLEAN merryentry; ! entered through merrygoround; 02580 BOOLEAN pagebottom; ! E argument to &P command; 02610 BOOLEAN synka; ! Synchronization needed of cursor; 02640 BOOLEAN tempfilecommand; ! VIDED got its command string from 02670 the tmpfile "VID"; 02700 TEXT infilename; 02730 TEXT outfilename; 02760 TEXT inprotect; ! Protection code on input file; 02790 TEXT indevice; ! Device of input file; 02820 TEXT inspec; ! Input file specification; 02850 TEXT tempfilename; ! Temporary file name; 02880 TEXT please; ! Temporary text; 02910 BOOLEAN otherppn; ! Input file from other PPN than your own; 02940 CHARACTER c; ! for local use; 2941 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 3 DSK:MIDED3.SIM 7-APR-1979 8:36 02970 PROCEDURE zeroini(i); 03000 COMMENT zero /N from SWITCH.INI if /-N in command string etcetera; 03030 INTEGER i; 03060 IF arg[i] =/= NOTEXT OR arg[i+1] =/= NOTEXT 03090 THEN ini[i]:- ini[i+1]:- NOTEXT; 03120 03150 PROCEDURE overwritewarning(t); TEXT t; 03180 IF NOT tempfilecommand THEN B2 03210 BEGIN 03240 outtext("%VIDED - You are overwriting a file: "); 03270 outtext(tempfilename); 03300 outtext(". To continue push RETURN."); outimage; inimage; 03330 INSPECT the_editor DO IF backuping THEN badscreen:= TRUE; E2 03360 END; 3361 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 4 DSK:MIDED3.SIM 7-APR-1979 8:36 03390 BOOLEAN PROCEDURE helptype(heightm1,helpprint); 03420 INTEGER heightm1; BOOLEAN helpprint; 03450 COMMENT Action of &H VIDED command requesting the printing of a help 03480 text; B3 03510 BEGIN REF (infile) helpfile; 03540 INTEGER count; BOOLEAN limitfound; TEXT helpborder, sysoutimage; 03570 helpborder:- copy("VIDED EDITING COMMANDS"); arg[5]:- NOTEXT; 03600 sysoutimage:- sysout.image; sysout.image:- blanks(80); 03630 helpfile:- findinfile("HLP:VIDED.HLP"); 03660 INSPECT helpfile DO B4 03690 BEGIN 03720 open(sysout.image); inimage; 03750 WHILE NOT helpfile.endfile DO B5 03780 BEGIN 03810 COMMENT Different part of help file printed depending 03840 on when this procedure is called; 03870 IF NOT limitfound THEN B6 03900 BEGIN 03930 limitfound:= search(image,helpborder) <= 60; 03960 IF limitfound THEN helpprint:= NOT helpprint; E6 03990 END; 04020 IF helpprint THEN B7 04050 BEGIN 04080 sysout.outimage; 04110 count:= count+1; 04140 IF count = heightm1 THEN B8 04170 BEGIN sysout.outtext("To continue push RETURN."); 04200 sysout.breakoutimage; 04230 sysin.inimage; count:= 0; 04260 outchr(sysout,char(13),1); !carriage return; 04290 outchr(sysout,' ',25); outchr(sysout,char(13),1); E8 04320 END; E7 04350 END; 04380 inimage; E5 04410 END; 04440 helptype:= TRUE; 04470 close; E4 04500 END; 04530 sysout.image:- sysoutimage; E3 04560 END of procedure helptype; 4561 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 5 DSK:MIDED3.SIM 7-APR-1979 8:36 04590 PROCEDURE before_editing; B9 04620 BEGIN 04650 topstart: !z_t(18); COMMENT Start of execution here; 04680 COMMENT%IF VIDTIM 04710 vidtim:- new outfile("VIDTIM *"); 04740 COMMENT%IF VIDTIM 04770 vidtim.open(notext); 04800 COMMENT%IFEND VIDTIM; 04830 COMMENT%IF STAT 04860 IF stat == NONE THEN BEGIN 04890 stat:- new outfile("STAT.VID/ACCESS:APPEND"); 04920 COMMENT%IF STAT 04950 stat.open(blanks(80)) END; 04980 COMMENT%IFEND STAT; 05010 05040 merryentry:= merrygoround; 05070 IF NOT merrygoround THEN B10 05100 BEGIN 05130 outtext("%VIDED DISPLAY TERMINAL EDITOR VERSION 4A IS HERE"); 05280 outimage; E10 05310 END; 05340 05370 IF the_editor == NONE THEN B11 05400 BEGIN 05430 key[1]:-copy("/DEFAULT:"); ! output file name; 05460 key[2]:-copy("/T:"); ! terminal type; 05490 key[3]:-copy("="); ! input file name; 05520 key[4]:- copy("/DEBUG"); 05550 key[5]:- copy("/H"); 05580 key[6]:- copy("/N"); 05610 key[7]:- copy("/-N"); 05640 key[8]:- copy("/MP:"); 05670 key[9]:- copy("/ML:"); 05700 key[10]:- copy("/MR:"); 05730 key[11]:- copy("/P"); 05760 key[12]:- copy("/-P"); 05790 key[13]:- copy("/L:"); 05820 key[14]:- copy("/C:"); 05850 key[15]:- copy("/JE"); 05880 key[16]:- copy("/-JE"); 05910 key[17]:- copy("/S:"); 05940 key[18]:- copy("/DCA"); 05970 key[19]:- copy("/-DCA"); 06000 key[20]:- copy("/ALF"); 06030 key[21]:- copy("/-ALF"); 06060 key[22]:- copy("/OPTION:"); 06090 key[23]:- copy("/SWEDISH"); 06120 key[24]:- copy("/RUN:"); 06150 key[25]:- copy("/COUNT:"); 06180 key[26]:- copy("/AUTOBACKUP"); 06210 key[27]:- copy("/SPEED:"); 06240 keys:= 27; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 5-1 DSK:MIDED3.SIM 7-APR-1979 8:36 06270 E11 06300 END of the_editor == NONE; 6301 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 6 DSK:MIDED3.SIM 7-APR-1979 8:36 06330 start: 06360 IF the_editor == NONE THEN please:- tmpin("VID",TRUE) 06390 ELSE please:- NOTEXT; 06420 IF please =/= NOTEXT THEN B12 06450 BEGIN tempfilecommand:= TRUE; 06480 GOTO implicit_command; E12 06510 END ELSE IF NOT merrygoround THEN B13 06540 BEGIN 06570 IF rescan THEN B14 06600 BEGIN COMMENT Reread line invoking VIDED; 06630 sysin.inimage; please:- sysin.image; 06660 IF scanto(please,'-').length < please.length THEN B15 06690 BEGIN 06720 please:- rest(please); 06750 implicit_command: 06780 IF sscan(please,keys,arg,key,1) NE 0 THEN 06810 GOTO multiple ELSE GOTO gotparameters; E15 06840 END; E13 06870 END; END; 06900 06930 IF NOT merrygoround THEN B16 06960 BEGIN COMMENT Scan and interpret switches in input command; 06990 echo(sysin,0); 07020 WHILE sscan(inline("*",sysin),keys,arg,key,1) NE 0 DO B17 07050 BEGIN 07080 multiple: outtext("? Multiple keywords:"); 07110 outtext(sysin.image.strip); 07140 outtext("please try again."); 07170 outimage; E16 07200 END; END; 7201 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 7 DSK:MIDED3.SIM 7-APR-1979 8:36 07230 gotparameters: 07260 07290 COMMENT If the user gave no input file name, look for previously 07320 used file name in TMP:EDS; 07350 IF arg[1] = " " THEN B18 07380 BEGIN 07410 please:- tmpin("EDS",FALSE); 07440 please:- scanto(please,char(13)).strip; 07470 please:- scanto(please,char(10)).strip; 07500 scanto(please,' '); arg[1]:- rest(please); E18 07530 END; 07560 please:- NOTEXT; 07590 07620 IF NOT merrygoround THEN B19 07650 BEGIN 07680 INSPECT findinfile("SWITCH.INI") DO B20 07710 BEGIN COMMENT The SWITCH.INI file may contain personal default 07740 settings, e.g. telling VIDED what kind of terminal you are 07770 using; 07800 TEXT lineoption, switchoption, imagp; 07830 open(blanks(130)); 07860 switchoption:- arg[22]; IF switchoption == NOTEXT THEN 07890 switchoption:- arg[1]; storbokstav(switchoption); 07920 inimage; 07950 imagp:- IF numbered THEN image.sub(7,124) ELSE image; 07980 WHILE NOT endfile DO B21 08010 BEGIN 08040 storbokstav(imagp); 08070 IF imagp.sub(1,5) = "VIDED" THEN B22 08100 BEGIN 08130 imagp.setpos(6); IF imagp.getchar = ':' THEN B23 08160 BEGIN lineoption:- scanto(imagp,' '); 08190 switchoption.setpos(1); 08220 IF search(switchoption,lineoption) > switchoption.length 08250 THEN GOTO afterread; E23 08280 END; 08310 IF sscan(rest(imagp),keys,ini,key,1) NE 0 THEN B24 08340 BEGIN outtext("? Multiple keywords" 08370 " in SWITCH.INI:"); 08400 outtext(imagp.strip); 08430 outimage; E24 08460 END; E22 08490 END; 08520 afterread: 08550 inimage; E21 08580 END; 08610 close; E20 08640 END; 08670 COMMENT read Terminal information from TMP:TRM TMPCOR file; 08700 please:- tmpin("TRM",FALSE); 08730 IF please =/= NOTEXT THEN 08760 sscan(conc("/t:",please),keys,ini,key,1); DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 7-1 DSK:MIDED3.SIM 7-APR-1979 8:36 E19 08790 END; 8791 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 8 DSK:MIDED3.SIM 7-APR-1979 8:36 08820 IF NOT merrygoround AND (arg[1] = "?" OR arg[5] =/= NOTEXT) THEN B25 08850 BEGIN COMMENT type help text to the user; 08880 echo(sysin,2); ! no echo; 08910 IF NOT helptype(15,TRUE) THEN B26 08940 BEGIN outtext("Cannot find VIDED.HLP"); outimage; E26 08970 END; 09000 echo(sysin,4); ! echo again; 09030 GOTO start; E25 09060 END; 09090 09120 IF NOT merrygoround THEN B27 09150 BEGIN INTEGER i; 09180 COMMENT Use default settings from the SWITCH.INI file; 09210 IF arg[2] =/= NOTEXT THEN ini[18]:- ini[19]:- NOTEXT; 09240 zeroini(6); zeroini(11); zeroini(15); 09270 zeroini(18); zeroini(20); 09300 FOR i:= 1 STEP 1 UNTIL keys DO B28 09330 BEGIN IF arg[i] == NOTEXT THEN arg[i]:- ini[i]; E28 09360 END; E27 09390 END; 09420 09450 editin:- findinfile(arg[1]); 09480 IF editin =/= NONE THEN B29 09510 BEGIN 09540 IF arg[3] =/= NOTEXT THEN 09570 overwritewarning(arg[1]) ELSE B30 09600 BEGIN 09630 arg[3]:- arg[1]; 09660 tmpoutfile:= TRUE; E30 09690 END; E29 09720 END ELSE IF arg[3] == NOTEXT THEN arg[3]:- copy("NUL:NUL"); 09750 IF arg[1] NE arg[3] THEN editin:- findinfile(arg[3]); 09780 IF editin == NONE THEN B31 09810 BEGIN outtext("?CANNOT FIND INPUT FILE: "); outtext(arg[3]); 09840 outimage; GOTO start; E31 09870 END; 09900 09930 editin.open(blanks(IF width < 140 THEN 140 ELSE width)); 9931 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 9 DSK:MIDED3.SIM 7-APR-1979 8:36 09960 COMMENT find and interpret input file specification; 09990 inspec:- filspc(editin,8R121101 000001); 10020 scanto(inspec,':'); 10050 indevice:- inspec.sub(1,inspec.pos-1); 10080 scanto(inspec,'['); 10110 otherppn:= inspec.more; 10140 inspec.setpos(1); scanto(inspec,'<'); 10170 inprotect:- from(inspec,inspec.pos-1); 10200 10230 IF tmpoutfile THEN B32 10260 BEGIN COMMENT Use temporary name on the output file; 10290 IF otherppn THEN B33 10320 BEGIN COMMENT Input file not on the user PPN, put output file 10350 there; 10380 tempfilename:- arg[1]; 10410 tempfilename.setpos(1); scanto(tempfilename,'['); 10440 IF tempfilename.more THEN B34 10470 BEGIN tempfilename.setpos(tempfilename.pos-1); 10500 scanto(tempfilename,']'):= NOTEXT; 10530 tempfilename.sub(tempfilename.pos-3,2):= "[,"; E34 10560 END ELSE tempfilename:- conc(tempfilename,"[,]"); 10590 arg[1]:- tempfilename; 10620 tmpoutfile:= FALSE; 10650 IF findinfile(tempfilename) =/= NONE THEN 10680 overwritewarning(tempfilename); E33 10710 END ELSE B35 10740 BEGIN 10770 arg[1]:- tmpnam("VIT"); E35 10800 END; E32 10830 END; 10831 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 10 DSK:MIDED3.SIM 7-APR-1979 8:36 10860 COMMENT Read first line to check for line numbers; 10890 editin.inimage; 10920 numbered_infile:= numbered AND arg[3] NE "NUL:NUL"; 10950 largest_line_number:= last_line_number:= 0; 10980 IF arg[6] =/= NOTEXT THEN B36 11010 BEGIN 11040 arg[6].setpos(1); 11070 IF NOT digit(arg[6].getchar) THEN arg[6]:- rest(arg[6]); 11100 increment:= scanint(arg[6]); 11130 IF increment < 0 OR increment > 9999 THEN increment:= 10; E36 11160 END; 11190 IF numbered_infile AND increment = 0 THEN increment:= 2; 11220 IF arg[7] =/= NOTEXT THEN increment:= 0; 11250 11280 tempfilename:- arg[1]; 11310 IF tmpoutfile THEN B37 11340 BEGIN COMMENT Create name of backup file; 11370 inspec.setpos(1); scanto(inspec,'.'); 11400 IF inspec.more THEN B38 11430 BEGIN IF fetchar(inspec,inspec.pos) = 'Q' OR inspec.getchar = 'q' 11460 THEN B39 11490 BEGIN outtext("?VIDED - Cannot handle input file with '.Q': "); 11520 outtext(inspec); outimage; 11550 GOTO start; E39 11580 END; E38 11610 END; 11640 11670 c:= fetchar(inprotect,2); 11700 IF c > '2' AND c NE '4' THEN B40 11730 BEGIN outtext("?VIDED - Cannot overwrite file: "); 11760 outtext(inspec); outimage; 11790 outtext("%VIDED - Type ""CONTINUE"" if you think it will work."); 11820 outimage; exit(0); E40 11850 END; 11880 11910 COMMENT Set protection of temporary output file; 11940 tempfilename.setpos(1); 11970 IF scanto(tempfilename, '<').length >= tempfilename.length THEN B41 12000 BEGIN COMMENT no protection given by the user; 12030 tempfilename:- conc(tempfilename,"<077>"); E41 12060 END; 12090 12120 COMMENT Set device for temporary output file; 12150 tempfilename.setpos(1); IF scanto(tempfilename, 12180 ':').length >= tempfilename.length THEN B42 12210 BEGIN COMMENT no device given by the user; 12240 tempfilename:- conc(indevice,tempfilename); E42 12270 END; E37 12300 END; 12330 12360 COMMENT Numbered outfile?; 12390 IF increment > 0 THEN tempfilename:- conc(tempfilename,"/NUMBERED"); DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 10-1 DSK:MIDED3.SIM 7-APR-1979 8:36 12420 12450 editout:- findoutfile(tempfilename); 12480 arg[1]:- tempfilename; 12510 IF editout == NONE THEN B43 12540 BEGIN outtext("?VIDED - CANNOT OPEN OUTPUT FILE: "); outtext(arg[1]); 12570 outimage; exit(0); 12600 GOTO start; E43 12630 END; 12660 12690 COMMENT%IF debugterminal 12720 debug:= arg[4] =/= NOTEXT; 12750 COMMENT%IFEND debugterminal; 12751 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 11 DSK:MIDED3.SIM 7-APR-1979 8:36 12780 IF the_editor == NONE THEN B44 12810 BEGIN 12840 IF arg[8] =/= NOTEXT THEN warningheight:= scanint(arg[8]) ELSE 12870 warningheight:= 56; 12900 IF arg[9] =/= NOTEXT THEN leftmargin:= scanint(arg[9]) ELSE 12930 leftmargin:= IF increment = 0 THEN 5 ELSE 13; 12960 IF arg[10] =/= NOTEXT THEN rightmargin:= scanint(arg[10]) ELSE 12990 rightmargin:= IF increment = 0 THEN 72 ELSE 78; E44 13020 END; 13050 13080 IF increment > 0 AND leftmargin < 8 THEN leftmargin:= 8; 13110 COMMENT ask user about terminal type if not known; 13140 gettype: 13170 IF the_editor == NONE THEN B45 13200 BEGIN 13230 INSPECT NEW termty DO B46 13260 BEGIN 13290 IF arg[2] == NOTEXT THEN asktype: B47 13320 BEGIN TEXT answer; 13350 type_menu(sysout); 13380 outtext("(Other) display."); outimage; 13410 inloop: outchr(sysout,'>',1); forceout(sysout); 13440 inimage; 13470 answer:- copy(storbokstav(sysin.image.strip)); 13500 arg[2]:- scanto(answer,'/'); answer:- rest(answer); 13530 IF answer = "DCA" THEN B48 13560 BEGIN arg[18]:- blanks(1); arg[19]:- NOTEXT; E48 13590 END ELSE IF answer = "-DCA" THEN B49 13620 BEGIN arg[18]:- NOTEXT; arg[19]:- blanks(1); E49 13650 END; 13680 IF arg[2] == NOTEXT THEN GOTO inloop; E47 13710 END; 13740 IF NOT meny(arg[2],terminaltype,tr,termtype) THEN B50 13770 BEGIN 13800 outtext(IF terminaltype = -1 THEN 13830 "Ambiguous terminal type: " ELSE 13860 "Unknown terminal type: "); outtext(arg[2]); outimage; 13890 GOTO asktype; E50 13920 END; 13950 IF terminaltype = termtype THEN terminaltype:= 0; 13980 sysin.setpos(0); 14010 14040 IF arg[14] =/= NOTEXT THEN width:= scanint(arg[14]) ELSE B51 14070 BEGIN width:= cdefault(terminaltype); 14100 IF width = 0 THEN B52 14130 BEGIN again: outimage; 14160 outtext("Input terminal screen width: "); breakoutimage; 14190 inimage; width:= scanint(sysin.image); 14220 IF sysin.image.pos = 1 THEN B53 14250 BEGIN outtext("?VIDED - Unrecognizable integer"); 14280 GOTO again; E53 14310 END; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 11-1 DSK:MIDED3.SIM 7-APR-1979 8:36 14340 width:= width-1; E52 14370 END; E51 14400 END; 14430 14460 IF arg[13] =/= NOTEXT THEN height:= scanint(arg[13]) ELSE B54 14490 BEGIN height:= ldefault(terminaltype); 14520 IF height = 0 THEN B55 14550 BEGIN 14580 again2: outtext("Input terminal screen height: "); 14610 breakoutimage; 14640 inimage; height:= scanint(sysin.image); 14670 IF sysin.image.pos = 1 THEN B56 14700 BEGIN outtext("?VIDED - unrecognizable integer."); outimage; 14730 GOTO again2; E56 14760 END; E55 14790 END; E54 14820 END; E45 14850 END of asktype, inspect new temty; END; 14880 14910 IF arg[27] =/= NOTEXT THEN giventrmspeed:= scanint(arg[27]); 14911 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 12 DSK:MIDED3.SIM 7-APR-1979 8:36 14940 COMMENT Open output text file for edited results; 14970 editout.open(blanks(IF increment = 0 THEN width ELSE width+8)); 15000 15030 COMMENT%IF debugterminal 15060 IF debug THEN 15090 BEGIN 15120 newsysin:- NEW infile("sysin *"); 15150 COMMENT%IF debugterminal 15180 newsysout:- NEW outfile("sysout *"); 15210 COMMENT%IF debugterminal 15240 newsysin.open(blanks(80)); 15270 COMMENT%IF debugterminal 15300 newsysout.open(blanks(80)) 15330 END ELSE 15360 BEGIN 15390 newsysin:- sysin; 15420 COMMENT%IF debugterminal 15450 newsysout:- sysout 15480 END; 15510 COMMENT%IFEND debugterminal; 15540 15570 IF width < 11 THEN B57 15600 BEGIN outtext("?VIDED - Screen width must be > 10"); 15630 outimage; exit(0); E57 15660 END; 15690 15720 COMMENT Write VIDED command and file name onto TMP:EDS; 15750 IF NOT merrygoround THEN B58 15780 BEGIN 15810 IF command == NOTEXT THEN B59 15840 BEGIN command:- blanks(width); 15870 belowcommand:- blanks(width); E59 15900 END; 15930 IF tmpoutfile THEN outfilename:- arg[3] ELSE B60 15960 BEGIN 15990 outfilename:- arg[1]; outfilename.setpos(1); 16020 outfilename:- scanto(outfilename,'/'); E60 16050 END; 16080 puttext(belowcommand,"VIDED "); 16110 puttext(belowcommand,outfilename); 16140 belowcommand.putchar(char(10)); ! line feed; 16170 tmpout("EDS",copy(belowcommand.strip)); 16200 belowcommand.setpos(belowcommand.pos-1); 16230 belowcommand.putchar(char(32)); E58 16260 END; 16261 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 13 DSK:MIDED3.SIM 7-APR-1979 8:36 16290 IF arg[15] =/= NOTEXT THEN B61 16320 BEGIN 16350 IF arg[15].length = 1 THEN 16380 dot:= char(1) ELSE B62 16410 BEGIN 16440 arg[15].setpos(2); dot:= arg[15].getchar; E62 16470 END; E61 16500 END; 16530 16560 IF arg[26] =/= NOTEXT THEN ! /AUTOBACKUP; B63 16590 BEGIN arg[26].setpos(2); 16620 autobackup:= scanint(arg[26]); 16650 IF autobackup < 0 THEN autobackup:= 10; E63 16680 END ELSE autobackup:= 20; 16710 autobackcount:= IF autobackup = 0 THEN -3000000000 ELSE 0; 16740 16770 IF arg[17] == NOTEXT THEN showdefault:= height ELSE B64 16800 BEGIN arg[17].setpos(1); 16830 showdefault:= scanint(arg[17]); 16860 IF arg[17].pos = 1 THEN showdefault:= height; E64 16890 END; 16920 IF arg[16] =/= NOTEXT THEN dot:= char(127); 16950 B65 16955 BEGIN TEXT extension; 16960 outfilename.setpos(1); scanto(outfilename,'.'); 16965 extension:- rest(outfilename); extension:- upto(extension,4); 16970 storbokstav(extension); 16975 17220 IF dot = char(0) THEN B66 17250 BEGIN 17280 IF extension = "GNO" THEN dot:= '%' 17310 ELSE IF extension = "OVH" THEN dot:= '1' 17340 ELSE IF upto(extension,3) = "RN" THEN dot:= '.'; E66 17370 END; 17400 17430 IF arg[23] == NOTEXT AND extension = "SWE" OR extension = "VIS" 17460 THEN arg[23]:- key[3]; 17462 17464 IF upto(extension,3) = "VI" THEN B67 17466 BEGIN videdp:= TRUE; pageheight:= warningheight*1.5; E67 17468 END ELSE pageheight:= warningheight; 17469 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 14 DSK:MIDED3.SIM 7-APR-1979 8:36 17475 COMMENT Shall VIDED produce headers and page numbers?; 17480 IF arg[11] =/= NOTEXT THEN pageheader:= TRUE ELSE 17490 IF arg[12] =/= NOTEXT THEN pageheader:= FALSE ELSE B68 17520 BEGIN COMMENT these extensions give no page numbers; 17550 pageheader:= 17580 extension NE "INI" AND 17610 extension NE "SIM" AND 17640 extension NE "ALG" AND 17670 extension NE "B10" AND 17700 extension NE "B11" AND 17730 extension NE "BAS" AND 17760 extension NE "BLI" AND 17790 extension NE "CCL" AND 17820 extension NE "MIC" AND 17850 extension NE "FOR" AND 17880 extension NE "OVH" AND 17910 extension NE "F4" AND 17940 extension NE "GNO" AND 17970 extension NE "LAP" AND 18000 extension NE "LOG" AND 18030 extension NE "LST" AND 18060 extension NE "LSP" AND 18090 extension NE "MAC" AND 18120 extension NE "P11" AND 18150 extension NE "PL1" AND 18180 extension NE "RNO" AND 18210 extension NE "RNM" AND 18240 extension NE "RNH" AND 18270 extension NE "RNP" AND 18300 extension NE "SNO" AND 18330 extension NE "SRC" AND 18360 extension NE "ADR" AND 18390 extension NE "TEC"; 18420 IF NOT pageheader THEN B69 18450 BEGIN COMMENT programming language extension and no /mp; 18480 IF dot = char(0) THEN dot:= char(127); 18510 IF arg[8] == NOTEXT THEN pageheight:= 150; E69 18540 END; E65 18570 END; END; 18600 18630 IF dot = char(0) THEN dot:= '.'; 18660 18690 IF height < 2 THEN B70 18720 BEGIN outtext("?VIDED- Screen height must be > 1"); outimage; 18750 exit(0); E70 18780 END; 18810 COMMENT Get access to the editing facilities in vided1 and ; 18840 !z_t(-18); E9 18870 END of procedure before_editing; 18871 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 15 DSK:MIDED3.SIM 7-APR-1979 8:36 18900 vided2x CLASS vided3x; B71 18930 BEGIN 18960 18990 TEXT old_search_string; ! &S& and &N& makes the same search 19020 as previous search command; 19050 TEXT dashblank; ! Used by &- command; 19080 19110 PROCEDURE help; B72 19140 BEGIN COMMENT &H VIDED command; 19170 blankterminal; 19200 IF NOT helptype(heightm1,FALSE) THEN 19230 warning("Cannot find VIDED.HLP",NOTEXT); 19260 to_continue; command_done:= TRUE; E72 19290 END; 19291 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 16 DSK:MIDED3.SIM 7-APR-1979 8:36 19320 PROCEDURE avstava(nlines,evenmargin); 19350 COMMENT &J- and &F- VIDED commands; 19380 INTEGER nlines; BOOLEAN evenmargin; 19410 IF q_verticalpos > 0 THEN B73 19440 BEGIN 19470 IF q_horizontalpos > 0 THEN B74 19500 BEGIN IF 19530 get_char_from_screen(q_horizontalpos-1,q_verticalpos) 19560 = '-' 19590 THEN GOTO dash_is_there; E74 19620 END; 19650 IF get_char_from_screen(q_horizontalpos,q_verticalpos) = '-' 19680 THEN B75 19710 BEGIN move_the_cursor_to(q_horizontalpos+1,q_verticalpos); 19740 GOTO dash_is_there; E75 19770 END; 19800 insert(dashblank,FALSE); 19830 IF FALSE THEN dash_is_there: insert(dashblank.sub(2,1),FALSE); 19860 move_the_cursor_to(leftmargin,q_verticalpos-1); 19890 justify(nlines,evenmargin,TRUE); E73 19920 END ELSE warning("&J- or & F- not possible on top line.",NOTEXT); 19950 19980 PROCEDURE dobackup; ! &FB command action; B76 20010 BEGIN 20040 IF nooutput THEN badscreen:= TRUE; 20070 WHILE screen[0].sub(1,page_end_marker.length) = 20100 page_end_marker DO z_scroll(1); 20130 backupchecksum:= checksum; 20160 backuphor:= q_horizontalpos; backupvert:= q_verticalpos; 20190 backupzscroll:= top_fill; startpage:= out_pagenumber-1; 20220 IF NOT addff AND startpage > 0 THEN startpage:= startpage-1; 20250 backupsubpage:= sub_page_number; pagebottom:= FALSE; 20280 IF backupsubpage > 1 AND backupzscroll = -1 THEN B77 20310 BEGIN backupsubpage:= backupsubpage-1; 20340 backupzscroll:= top_size; E77 20370 END; 20400 backuping:= TRUE; GOTO roundabout; E76 20430 END of procedure dobackup; 20431 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 17 DSK:MIDED3.SIM 7-APR-1979 8:36 20460 PROCEDURE print_status; 20490 COMMENT &O VIDED command; 20520 INSPECT sysin DO INSPECT sysout DO B78 20550 BEGIN 20580 REF (qregister) current_q; 20610 TEXT qname; INTEGER i; 20640 blankterminal; 20670 outtext("VIDED STATUS INFORMATION:"); outimage; 20700 outtext("You are editing page no"); outint(pagenumber,4); 20730 outtext("(input),"); outint(out_pagenumber,4); 20760 outtext("(output)."); 20790 IF sub_page_number > 1 THEN B79 20820 BEGIN outtext(" Subpage:"); outint(sub_page_number,3); E79 20850 END; 20880 outimage; 20910 outtext("Screen is showing line no."); 20940 outint(top_fill+2,3); outtext(" -"); 20970 outint(top_fill+2+heightm1,3); outtext(" of current page."); 21000 outimage; 21030 outtext("Page height ="); outint(pageheight,3); 21060 outchar('.'); 21090 IF pageheader THEN B80 21120 BEGIN 21150 outtext(" Title and subtitle of previous page:"); 21180 outimage; outtext(header); outimage; 21210 outtext(sub_header); E80 21240 END; 21270 outimage; 21300 outtext("Current cursor position, horizontal ="); 21330 outint(q_horizontalpos,3); 21360 outtext(", vertical ="); outint(q_verticalpos,3); 21390 outchar('.'); outimage; 21420 outtext("Input file """); outtext(arg[3]); 21450 outtext(""", "); IF tmpoutfile THEN outtext("temporary "); 21480 outtext("output file """); outtext(arg[1]); 21510 outtext("""."); 21540 outimage; 21570 IF tmpoutfile THEN B81 21600 BEGIN 21630 outtext("Output file will be renamed to """); 21660 outtext(arg[3]); outtext("""."); outimage; E81 21690 END; 21720 outtext("You are "); 21750 IF NOT endpage OR NOT lower_lines == NONE THEN 21780 outtext("not "); 21810 outtext("at the end of a page."); 21840 outimage; outtext("You are "); 21870 IF NOT editin.endfile OR NOT lower_lines == NONE 21900 THEN outtext("not "); 21930 outtext("at the end of the file."); 21960 outimage; 21990 outtext("Left margin ="); outint(leftmargin,3); DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 17-1 DSK:MIDED3.SIM 7-APR-1979 8:36 22020 outtext(" Right margin ="); outint(rightmargin,3); 22050 outimage; 22080 IF qregisters == NONE THEN B82 22110 BEGIN outtext("You have no Q-registers."); outimage; 22140 to_continue; E82 22170 END ELSE B83 22200 BEGIN 22230 IF NOT q_echoenabled THEN echon; 22260 qlist: 22290 outtext("Width Height Q-register name"); outimage; 22320 current_q:- qregisters; 22350 WHILE current_q =/= NONE DO B84 22380 BEGIN 22410 outint(current_q.qwidth,4); 22440 outint(current_q.qheight,7); image.setpos(16); 22470 outtext(current_q.qname); outimage; 22500 current_q:- current_q.next_qregister; E84 22530 END; 22560 again: 22590 outtext( 22620 "If you want to see the contents of a Q-register,"); 22650 outtext(" then type its name:"); outimage; 22680 inimage; qname:- storbokstav(sysin.image.strip); 22710 IF qname =/= NOTEXT THEN 22740 INSPECT find_qregister(qname) DO B85 22770 BEGIN 22800 FOR i:= 1 STEP 1 UNTIL qheight DO B86 22830 BEGIN outtext(lines(i-1)); outimage; E86 22860 END; 22890 GOTO again; E85 22920 END OTHERWISE B87 22950 BEGIN outtext("?VIDED - There is no such Q-register." 22980 " Push RETURN to exit."); 23010 outimage; GOTO qlist; E87 23040 END; 23070 restore_screen(q_verticalpos, showdefault); E83 23100 END; command_done:= TRUE; E78 23130 END; 23131 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 18 DSK:MIDED3.SIM 7-APR-1979 8:36 23160 PROCEDURE getcommand(simulated_command); 23190 VALUE simulated_command; TEXT simulated_command; 23220 COMMENT Interpret VIDED command, this procedure is called when the 23250 user has typed or to start a VIDED command; B88 23280 BEGIN BOOLEAN stoptime; ! Time to exit from "getcommand"; 23310 BOOLEAN anytextparameter; ! Interpreting the part of a VIDED 23340 command such as &Q or &S which has a text parameter; 23370 BOOLEAN type_ahead; ! The user has done type_ahead; 23400 BOOLEAN got_digit; ! Explicit user digit was input; 23430 BOOLEAN signed; ! There was a + or - sign on the digit; 23460 CHARACTER commandchar; ! First nonnumeric character after &; 23490 CHARACTER oldchar; ! Screen character overwritten by command 23520 character; 23550 CHARACTER secondchar; ! Second character in VIDED command; 23580 INTEGER hstart; ! Horizontal pos of &; 23610 INTEGER vstart; ! Vertical pos of &; 23640 INTEGER arg1; ! First numerical parameter to the command; 23670 INTEGER arg2; ! Second numerical parameter to the command; 23700 INTEGER leading_number; ! Number given by the user before the 23730 command character, e.g. in &13V; 23760 INTEGER multi; ! Number of times this command is to be repeated; 23790 INTEGER multic; ! Counter of iterations from 1 to multi; 23820 INTEGER multistep; ! step between lines with multi application; 23850 INTEGER vtop; ! One less than the top line to be modified; 23880 INTEGER stringstart; ! Startpos of text param to I, Q etc; 23910 INTEGER intpos; ! startpos of integer being read; 23940 TEXT qname; ! Value of text parameter to VIDED command; 23941 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 19 DSK:MIDED3.SIM 7-APR-1979 8:36 23970 PROCEDURE checkvalue(arg,min); 24000 INTEGER arg, min; 24030 IF arg < min THEN B89 24060 BEGIN warning("Too small numerical parameter.",NOTEXT); 24090 commandchar:= char(0); GOTO endcommand; E89 24120 END; 24150 24180 INTEGER PROCEDURE intin; 24210 COMMENT read integer parameter to VIDED command; 24240 IF leading_number NE -100000 THEN B90 24270 BEGIN intin:= leading_number; leading_number:= -100000; E90 24300 END ELSE B91 24330 BEGIN TEXT digpart; 24360 intpos:= command.pos; 24390 signed:= nextchar = '-' OR q_gotchar = '+'; 24420 IF signed OR digit(q_gotchar) THEN B92 24450 BEGIN 24480 WHILE digit(nextchar) DO; E92 24510 END; 24540 IF q_gotchar = carriagereturn THEN 24570 command.putchar(q_gotchar); 24600 IF intpos+1 >= command.pos THEN B93 24630 BEGIN got_digit:= FALSE; 24660 intin:= (IF commandchar = char(0) THEN -100000 ELSE IF 24690 commandchar = 'M' THEN hstart ELSE IF commandchar = 'F' THEN 0 24720 ELSE IF commandchar = 'T' THEN -1000 ELSE 1) E93 24750 END ELSE B94 24780 BEGIN got_digit:= TRUE; 24810 digpart:- command.sub(intpos,command.pos-intpos-1); 24840 IF digpart.length > 6 THEN B95 24870 BEGIN warning("Too large integer parameter.",NOTEXT); 24900 commandchar:= char(0); GOTO endcommand; E95 24930 END; 24960 intin:= IF NOT signed OR digpart.length > 1 THEN 24990 digpart.getint ELSE IF digpart = "-" THEN -1 ELSE 1; E94 25020 END; E91 25050 END; 25051 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 20 DSK:MIDED3.SIM 7-APR-1979 8:36 25080 PROCEDURE take_line_feed; B96 25110 BEGIN IF vstart >= heightm1 THEN B97 25140 BEGIN call(p_scroll); 25170 vstart:= vstart-1; 25200 verybadscreen:= type_ahead; E97 25230 END; E96 25260 END; 25290 25320 PROCEDURE restore_command; 25350 COMMENT When the user has ended a VIDED command, the screen is 25380 restored to what it was below the command before it was typed; B98 25410 BEGIN 25440 IF q_gotchar = carriagereturn THEN 25470 COMMENT%IFNOT CALLMAC 25500 call(p_insingle) ELSE 25530 COMMENT%IF CALLMAC; 25560 vtisng(cpunumber) ELSE 25590 COMMENT%IFEND CALLMAC; B99 25595 IF controlchar AND q_gotchar >= ' ' THEN BEGIN B100 25600 IF trmop(8R001,sysout,1) = 1 THEN BEGIN 25603 loop: getch; IF trmop(8R001,sysout,1) = 1 THEN GOTO loop; 25605 warning("Use RETURN key to finish VIDED COMMAND.", 25610 NOTEXT); E100 25613 END; E99 25615 END; 25620 COMMENT%IF VIDTIM 25650 outchr(vidtim,q_gotchar,1); 25680 COMMENT%ENDIF VIDTIM; 25710 COMMENT%IF debugslow 25740 IF debugslow > 0 THEN sleep(debugslow); 25770 COMMENT%IFEND debugslow; 25800 normaltext; 25830 IF q_gotchar = linefeed THEN take_line_feed; 25860 synchronize(hstart,vstart); 25890 outtext(front(belowcommand)); 25920 move_the_cursor_to(hstart,vstart); 25950 COMMENT%IF STAT 25980 stat.outtext(front(command)); 26010 COMMENT%IF STAT 26040 stat.outimage; 26070 COMMENT%IFEND stat; E98 26100 END; 26101 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 21 DSK:MIDED3.SIM 7-APR-1979 8:36 26130 CHARACTER PROCEDURE nextchar; B101 26160 BEGIN COMMENT Input of one character in a VIDED command; 26190 IF stoptime THEN B102 26220 BEGIN 26250 IF badscreen THEN verybadscreen:= TRUE; 26280 warning("End of line, command stopped.",NOTEXT); 26310 GOTO endcommand; E102 26340 END; 26370 stoptime:= q_horizontalpos = widthm1; 26400 start: oldchar:= 26430 get_char_from_screen(q_horizontalpos,q_verticalpos); 26460 IF simulated_command.more B103 26490 THEN BEGIN 26520 q_gotchar:= simulated_command.getchar; 26550 outchar(q_gotchar); controlchar:= FALSE; E103 26580 END ELSE 26610 COMMENT%IFNOT CALLMAC 26640 call(p_insingle); 26670 COMMENT%IF CALLMAC; 26700 vtisng(cpunumber); 26730 COMMENT%IFEND CALLMAC; 26760 nextchar:= q_gotchar; 26790 COMMENT%IF VIDTIM 26820 outchr(vidtim,q_gotchar,1); 26850 COMMENT%IFEND VIDTIM; 26880 COMMENT%IF debugslow 26910 IF debugslow > 0 THEN sleep(debugslow); 26940 COMMENT%IFEND debugslow; 26970 IF q_gotchar = fill OR controlchar AND q_gotchar = left THEN B104 27000 BEGIN 27030 IF command.pos > 3 AND command.pos >= intpos THEN B105 27060 BEGIN B106 27090 IF q_echoenabled THEN BEGIN B107 27120 IF q_gotchar = left THEN BEGIN 27150 IF addaltmode AND NOT leftsingle THEN 27180 outchr(terminalout,altmode,1); 27210 outchr(terminalout,left,1); E107 27240 END; 27270 q_display_output:= FALSE; 27300 outstring(terminalout,deletechar); E106 27330 END; 27360 outchar(fetchar(belowcommand,belowcommand.pos-1)); 27390 move_the_cursor_to(q_horizontalpos-1,q_verticalpos); 27420 q_display_output:= TRUE; 27450 command.setpos(command.pos-1); 27480 belowcommand.setpos(belowcommand.pos-1); 27510 GOTO start; E105 27540 END ELSE B108 27570 BEGIN commandchar:= char(0); GOTO endcommand; E108 27600 END; E104 27630 END ELSE 27660 IF q_gotchar = control_u THEN ! erase command; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 21-1 DSK:MIDED3.SIM 7-APR-1979 8:36 B109 27674 BEGIN IF NOT q_echoenabled B110 27678 THEN commandchar:= char(0) ELSE BEGIN 27680 normaltext; 27682 screen(vstart).sub(hstart+1,belowcommand.pos-3):= 27684 belowcommand.sub(3,belowcommand.pos-3); 27686 restore_lines(vstart,vstart); 27688 command.setpos(1); E110 27691 END; GOTO endcommand; E109 27720 END ELSE B111 27750 BEGIN 27780 IF controlchar THEN B112 27810 BEGIN 27840 IF q_gotchar = altmode THEN 27870 outchr(terminalout,delayer,1); 27900 IF q_gotchar NE carriagereturn AND 27930 anytextparameter THEN GOTO endcommand; 27960 IF q_gotchar NE carriagereturn AND 27990 q_gotchar NE control_f AND q_gotchar NE comstartchar AND 28020 q_gotchar NE altmode THEN B113 28050 BEGIN ! illegal char; commandchar:= char(0); 28080 GOTO endcommand; E113 28110 END; E112 28140 END ELSE B114 28170 BEGIN B115 28200 IF q_echoenabled THEN BEGIN 28230 outstring(terminalout,insertchar); 28260 outchr(terminalout,q_gotchar,1); E115 28290 END; 28320 belowcommand.putchar(oldchar); 28350 command.putchar(q_gotchar); E114 28380 END; E111 28410 END; E101 28440 END; 28441 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 22 DSK:MIDED3.SIM 7-APR-1979 8:36 28470 PROCEDURE adjustmulti; B116 28500 BEGIN 28530 vtop:= vstart-1; 28560 IF multi < 0 THEN B117 28590 BEGIN 28620 IF screen[vstart].sub(1,1) NE "." THEN 28650 multi:= height-vstart ELSE B118 28680 BEGIN 28710 FOR vtop:= vstart STEP -1 UNTIL 0 DO 28740 IF screen[vtop].sub(1,1) NE "." THEN GOTO exit1; 28770 vtop:= -1; 28800 exit1: 28830 FOR multi:= vstart STEP 1 UNTIL heightm1 DO 28860 IF screen[multi].sub(1,1) NE "." THEN GOTO exit2; 28890 multi:= multi+1; 28920 exit2: multi:= multi-vtop-1; E118 28950 END; E117 28980 END; 29010 IF multi > heightm1-vtop THEN multi:= heightm1-vtop; E116 29040 END; 29055 29070 PROCEDURE get_line_feed; B119 29100 IF getch = linefeed THEN BEGIN 29130 type_ahead:= FALSE; normaltext; take_line_feed; specialtext; E119 29160 END; 29161 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 23 DSK:MIDED3.SIM 7-APR-1979 8:36 29220 COMMENT body of PROCEDURE getcommand; !z_t(19); 29250 hstart:= q_horizontalpos; vstart:= q_verticalpos; 29280 vtop:= vstart-1; command_done:= FALSE; 29310 command:= "&"; command.setpos(2); 29340 IF q_horizontalpos > widthm1 THEN GOTO getout; 29370 belowcommand:= 29400 screen(q_verticalpos).sub(q_horizontalpos+1,1); 29430 belowcommand.setpos(2); 29460 type_ahead:= trmop(8R0001,sysout,1) = 1 !=type ahead;; B120 29490 IF terminaltype = volker414h THEN BEGIN 29520 IF volkeomchar NE char(0) AND 29550 (q_gotchar = 'A' OR simulated_command =/= NOTEXT) THEN B121 29580 BEGIN IF getch = carriagereturn THEN get_line_feed; E121 29610 END; E120 29640 END ELSE IF terminaltype = elite3025 AND 29670 (q_gotchar = 'p' OR simulated_command =/= NOTEXT) B122 E122 29700 THEN BEGIN getch; get_line_feed; END; 29707 COMMENT%IF debugslow 29716 sleep(1); 29723 COMMENT%IFEND debugslow; 29730 echoff; synchronize(hstart,vstart); 29760 specialtext; 29790 outchr(sysout,delayer,1); outchar('&'); 29820 IF hstart >= widthm1 THEN GOTO endcommand; 29850 multi:= 1; stringstart:= 3; 29880 readcommand: leading_number:= -100000; 29910 leading_number:= intin; 29940 commandchar:= q_gotchar; 29970 COMMENT storbokstav commandchar; 30000 IF commandchar >= 'a' THEN 30030 commandchar:= char(rank(commandchar)-32) ELSE 30060 IF controlchar THEN commandchar:= char(0); 30090 30120 COMMENT test for each possible first command character; 30150 IF commandchar = '*' THEN B123 30180 BEGIN multi:= leading_number; stringstart:= command.pos+1; 30210 commandchar:= char(0); GOTO readcommand; E123 30240 END; 30270 IF commandchar = '_' THEN B124 30300 BEGIN nooutput:= TRUE; commandchar:= char(0); 30330 GOTO readcommand; E124 30360 END; 30390 IF commandchar = 'R' THEN B125 30420 BEGIN restore_command; 30450 restore_screen(vstart, IF leading_number <= 0 THEN 998 ELSE 30480 -leading_number); 30510 command_done:= TRUE; E125 30540 END ELSE IF commandchar = 'W' THEN B126 30570 BEGIN restore_command; arg1:= IF leading_number < 0 THEN 1 ELSE 30600 leading_number; 30630 FOR multic:= 1 STEP 1 UNTIL arg1 DO removeword; E126 30660 END ELSE IF commandchar = '-' THEN DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 23-1 DSK:MIDED3.SIM 7-APR-1979 8:36 B127 30690 BEGIN restore_command; warning("Use &J- or &F- commands.",NOTEXT); E127 30720 END ELSE IF commandchar = 'X' THEN B128 30750 BEGIN restore_command; 30780 IF leading_number = -100000 THEN 30810 arg1:= screen(vstart).strip.length ! &X; 30840 ELSE arg1:= width-frontstrip(screen[vstart]. 30870 sub(first_text_pos+1,width-first_text_pos)).length; ! &-X; 30900 IF arg1 > widthm1 THEN arg1:= widthm1; 30930 move_the_cursor_to(arg1,vstart); command_done:= TRUE; E128 30960 END ELSE IF commandchar = 'O' THEN B129 30990 BEGIN restore_command; print_status; E129 31020 END ELSE IF commandchar = 'U' THEN B130 31050 BEGIN restore_command; adjustmulti; 31080 FOR multic:= 1 STEP 1 UNTIL multi DO B131 31110 BEGIN move_the_cursor_to(hstart,vtop+multic); 31140 blank_front; E131 31170 END; IF multi > 1 THEN move_the_cursor_to(hstart,vstart); E130 31200 END ELSE IF commandchar = 'E' THEN B132 31230 BEGIN restore_command; forceout(sysout); GOTO stopedit; E132 31260 END ELSE IF commandchar = 'C' THEN B133 31290 BEGIN restore_command; IF leading_number < 0 THEN control_c; E133 31320 END ELSE IF commandchar = 'V' THEN B134 31350 BEGIN arg1:= IF leading_number < 0 THEN 1 ELSE 31380 leading_number; 31410 IF arg1 > line_model.length THEN arg1:= 0; 31440 restore_command; adjustmulti; 31470 FOR multic:= 1 STEP 1 UNTIL multi DO B135 31500 BEGIN move_the_cursor_to(hstart,vtop+multic); 31530 insert(line_model.sub(1,arg1),FALSE); E135 31560 END; 31590 move_the_cursor_to(hstart,vstart); E134 31620 END ELSE IF commandchar = 'T' THEN B136 31650 BEGIN arg1:= intin; restore_command; 31680 IF arg1 < 0 AND arg1 >= -999 THEN B137 31710 BEGIN arg1:= width+arg1; checkvalue(arg1,0); E137 31740 END; 31770 IF arg1 > widthm1 THEN arg1:= widthm1; 31800 IF q_gotchar > ' ' AND q_gotchar NE 'T' AND q_gotchar NE 't' 31830 THEN settab(IF arg1 < 0 THEN hstart ELSE arg1,q_gotchar) ELSE B138 31860 BEGIN command_done:= TRUE; 31890 IF arg1 < 0 THEN position_tab(FALSE) ELSE 31920 move_the_cursor_to(arg1,vstart); E138 31950 END; E136 31980 END ELSE IF commandchar = 'L' THEN B139 32010 BEGIN IF leading_number >= 0 THEN B140 32040 BEGIN restore_command; 32070 addlines(leading_number,TRUE,FALSE,TRUE); E140 32100 END ELSE B141 32130 BEGIN 32160 got_digit:= FALSE; arg1:= intin; restore_command; 32190 checkvalue(arg1,1); 32220 IF q_gotchar = 'D' OR q_gotchar = 'd' OR DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 23-2 DSK:MIDED3.SIM 7-APR-1979 8:36 32250 q_gotchar < ' ' THEN 32280 addlines(arg1,TRUE,q_gotchar > ' ',TRUE) ELSE B142 32310 BEGIN 32340 adjustmulti; 32370 FOR multic:= 1 STEP 1 UNTIL multi DO B143 32400 BEGIN move_the_cursor_to(hstart,vtop+multic); 32430 IF q_gotchar = 'n' OR q_gotchar = 'N' 32460 THEN numberlines(arg1) 32490 ELSE IF q_gotchar = 'C' OR q_gotchar = 'c' 32520 THEN center_line(IF got_digit THEN arg1 ELSE -1) 32550 ELSE IF q_gotchar = 'U' OR q_gotchar = 'u' 32580 OR q_gotchar = 'L' OR q_gotchar = 'l' 32610 THEN case_shift(q_gotchar); E143 32640 END of multic loop; E142 32670 END; E141 32700 END; E139 32730 END ELSE IF commandchar = 'M' THEN B144 32760 BEGIN secondchar:= nextchar; 32790 arg1:= intin; restore_command; 32820 margset(secondchar,arg1); E144 32850 END ELSE IF commandchar = 'J' OR commandchar = 'F' THEN B145 32880 BEGIN IF nextchar >= 'a' THEN 32910 q_gotchar:= char(rank(q_gotchar)-32); 32940 IF q_gotchar NE '-' AND 32970 (commandchar = 'J' AND q_gotchar NE 'U' OR 33000 commandchar = 'F' AND q_gotchar NE 'I' AND q_gotchar NE 'C') 33030 THEN B146 33060 BEGIN IF q_gotchar= carriagereturn THEN B147 33090 BEGIN 33120 COMMENT%IFNOT CALLMAC 33150 call(p_insingle); 33180 COMMENT%IF CALLMAC; 33210 vtisng(cpunumber); 33240 COMMENT%IFEND CALLMAC; 33270 q_gotchar:= char(0); E147 33300 END; 33330 IF q_gotchar = 'B' OR q_gotchar = 'b' THEN B148 33360 BEGIN COMMENT &FB = File Backup command; 33390 restore_command; dobackup; E148 33420 END ELSE B149 33450 BEGIN warning("Use &JU, &FI or &FC commands",NOTEXT); 33480 GOTO endcommand; E149 33510 END; E146 33540 END; 33570 arg1:= IF leading_number < 0 THEN 33600 0 ELSE leading_number; restore_command; 33630 adjustmulti; 33660 FOR multic:= 1 STEP 1 UNTIL multi DO B150 33690 BEGIN move_the_cursor_to(hstart,vtop+multic); 33720 IF q_gotchar = '-' THEN avstava(arg1,commandchar = 'J') ELSE 33750 justify(arg1,commandchar = 'J',q_gotchar NE 'I'); E150 33780 END; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 23-3 DSK:MIDED3.SIM 7-APR-1979 8:36 E145 33810 END ELSE IF commandchar = 'Z' THEN B151 33840 BEGIN arg1:= intin; 33870 restore_command; z_scroll(arg1); E151 33900 END ELSE IF commandchar = 'D' THEN B152 33930 BEGIN arg1:= IF leading_number < 0 THEN 1 ELSE leading_number; 33960 restore_command; adjustmulti; 33990 FOR multic:= 1 STEP 1 UNTIL multi DO B153 34020 BEGIN move_the_cursor_to(hstart,vtop+multic); 34050 removechars(arg1); E153 34080 END; move_the_cursor_to(hstart,vstart); E152 34110 END ELSE IF commandchar = 'K' THEN B154 34140 BEGIN arg1:= IF leading_number < 0 THEN 1 ELSE leading_number; 34170 restore_command; adjustmulti; 34200 FOR multic:= 1 STEP 1 UNTIL multi DO B155 34230 BEGIN move_the_cursor_to(hstart,vtop+multic); 34260 IF q_horizontalpos = 0 AND q_verticalpos = 0 THEN B156 34290 BEGIN nooutput:= TRUE; z_scroll(arg1); E156 34320 END ELSE removelines(arg1); E155 34350 END; move_the_cursor_to(hstart,vstart); E154 34380 END ELSE IF commandchar = 'H' THEN B157 34410 BEGIN restore_command; help; 34411 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 24 DSK:MIDED3.SIM 7-APR-1979 8:36 E157 34440 END ELSE IF commandchar = 'P' THEN B158 34470 BEGIN IF leading_number NE -100000 THEN B159 34500 BEGIN arg1:= leading_number; nextchar; E159 34530 END ELSE arg1:= intin; 34560 IF NOT got_digit THEN B160 34590 BEGIN signed:= TRUE; arg1:= 0; E160 34620 END; 34650 restore_command; 34680 pagebottom:= q_gotchar = 'E' OR q_gotchar = 'e'; 34710 IF q_gotchar = 'F' OR q_gotchar = 'f' THEN 34740 newpages(1000000,FALSE,TRUE) ELSE 34770 IF q_gotchar = 'A' OR q_gotchar = 'a' THEN B161 34800 BEGIN 34830 IF NOT (endpage OR editin.endfile) OR lower_lines =/= NONE 34836 THEN newpages(0,TRUE,FALSE); 34861 append_page; E161 34890 END 34920 ELSE IF q_gotchar = 'I' OR q_gotchar = 'i' THEN pagedivide 34950 ELSE IF q_gotchar = 's' OR q_gotchar = 'S' THEN B162 34980 BEGIN 35010 psearch:= TRUE; pbottom:= arg1; 35040 IF pbottom <= 1 THEN pbottom:= 10; 35070 pfound:= (endpage OR editin.endfile) AND lower_lines 35100 == NONE AND (IF videdp THEN videdpcount ELSE 35114 top_fill+heightm1) + pbottom < warningheight; 35131 IF NOT pfound THEN 35160 search_for(page_end_marker,'N',showdefault); 35190 IF pfound THEN warning( 35220 "Page with few lines found.",NOTEXT); E162 35250 END ELSE IF q_gotchar = 'O' OR q_gotchar = 'o' THEN 35280 warning("Have you written the letter O " 35310 "instead of the digit 0? ",NOTEXT) 35340 ELSE B163 35370 BEGIN COMMENT &PE, &PT, &P; 35400 IF q_gotchar < ' ' THEN B164 35430 BEGIN COMMENT &P command; 35460 IF NOT got_digit THEN arg1:= 1; E164 35490 END ELSE B165 35520 BEGIN 35550 IF NOT pagebottom AND q_gotchar NE 'T' AND q_gotchar NE 't' 35580 THEN GOTO endcommand; ! Neither &P nor &PE nor &PT; 35610 IF NOT signed AND arg1 NE 0 THEN 35640 arg1:= arg1-out_pagenumber; ! Absolute page no to relative; E165 35670 END; 35700 IF arg1 < 0 OR got_digit AND arg1 = 0 AND 35730 sub_page_number > 1 THEN B166 35760 BEGIN startpage:= arg1+out_pagenumber-1; 35790 IF sub_page_number > 1 THEN startpage:= startpage-1; 35820 GOTO roundabout; E166 35850 END ELSE B167 35880 BEGIN newpages(arg1,pagebottom,FALSE); 35910 IF NOT pagebottom AND sub_page_number > 1 THEN DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 24-1 DSK:MIDED3.SIM 7-APR-1979 8:36 35940 warning("Cannot find top of large page.", 35970 "Push RETURN and write &-0PT to find real page top."); E167 36000 END; E163 36030 END; 36031 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 25 DSK:MIDED3.SIM 7-APR-1979 8:36 E158 36060 END ELSE IF commandchar = 'Q' THEN B168 36090 BEGIN 36120 arg2:= -100000; anytextparameter:= TRUE; 36150 WHILE letter(nextchar) OR digit(q_gotchar) DO; 36180 IF command.pos > (IF q_gotchar = carriagereturn THEN 3 ELSE 4) 36210 THEN qname:- copy(command.sub(3,command.pos- 36240 (IF q_gotchar = carriagereturn THEN 3 ELSE 4))); 36270 IF q_gotchar > ' ' OR qname == NOTEXT THEN commandchar:= null; 36300 anytextparameter:= FALSE; 36330 arg1:= IF q_gotchar < ' ' THEN 1 ELSE intin; 36360 IF q_gotchar = ' ' THEN arg2:= intin ELSE B169 36390 BEGIN arg2:= arg1; arg1:= 0; E169 36420 END; 36450 restore_command; 36480 qregistercall: 36510 checkvalue(arg1,0); checkvalue(arg2,0); 36540 IF qname = NOTEXT THEN 36570 qname:- warning( "You gave no qregister name.",NOTEXT) 36600 ELSE put_register(qname,arg1,arg2); E168 36630 END ELSE IF commandchar = 'A' THEN B170 36660 BEGIN 36690 arg1:= intin; arg2:= intin; restore_command; 36720 checkvalue(arg1,0); checkvalue(arg2,0); 36750 IF arg1 < width AND arg2 < height THEN B171 36780 BEGIN move_the_cursor_to(arg1,arg2); command_done:= TRUE; E171 36810 END; E170 36840 END ELSE IF commandchar = 'G' THEN B172 36870 BEGIN 36900 WHILE letter(nextchar) OR digit(q_gotchar) DO; 36930 IF q_gotchar = carriagereturn THEN 36960 command.setpos(command.pos+1); 36990 IF command.pos > stringstart+1 THEN 37020 qname:- 37050 copy(command.sub(stringstart,command.pos-stringstart-1)); 37080 restore_command; adjustmulti; 37110 INSPECT find_qregister(qname) DO B173 37140 BEGIN multistep:= qheight; 37170 multi:= multi*multistep; 37200 FOR multic:= 1 STEP multistep UNTIL multi DO 37230 IF vtop + multic < height THEN B174 37260 BEGIN move_the_cursor_to(hstart,vtop+multic); 37290 get_register(THIS qregister); E174 37320 END; move_the_cursor_to(hstart,vstart); E173 37350 END; E172 37380 END ELSE IF commandchar = 'I' OR commandchar = 'S' OR 37410 commandchar = 'N' THEN B175 37440 BEGIN 37470 stringstart:= command.pos; 37500 anytextparameter:= TRUE; B176 37530 IF insertchar =/= NOTEXT AND commandchar = 'I' THEN BEGIN 37560 ! Advanced I action if insertchar code is available; B177 37569 IF trmop(8R0001,sysout,1) = 1 ! type ahead; THEN BEGIN DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 25-1 DSK:MIDED3.SIM 7-APR-1979 8:36 37576 normaltext; restore_lines(vstart,vstart); E177 37583 END; 37590 restore_command; q_echoenabled:= TRUE; specialtext; E176 37620 END; 37650 WHILE TRUE DO nextchar; E175 37680 END ELSE 37710 endcommand: B178 37740 BEGIN COMMENT handling of end of &I, &Q, &S and &N commands, 37770 that is some of the commands taking nonnumerical parameters, 37800 also handling of some ununderstandable commands; 37830 IF insertchar == NOTEXT OR commandchar NE 'I' B179 37860 THEN restore_command ELSE BEGIN ! Advanced I action; 37890 q_echoenabled:= FALSE; normaltext; 37920 screen[vstart].sub(hstart+1,belowcommand.pos-stringstart):= 37950 belowcommand.sub(stringstart,belowcommand.pos-stringstart); E179 37980 END; 38010 IF commandchar = 'I' THEN B180 38040 BEGIN COMMENT &I& command; 38070 IF command.pos > stringstart THEN 38100 qname:- command.sub(stringstart,command.pos-stringstart); 38130 adjustmulti; 38160 FOR multic:= 1 STEP 1 UNTIL multi DO B181 38190 BEGIN move_the_cursor_to(hstart,vtop+multic); 38220 insert(qname,insertchar =/= NOTEXT AND multic = 1); E181 38250 END; IF multi > 1 THEN move_the_cursor_to(hstart,vstart); E180 38280 END ELSE IF commandchar = 'S' OR commandchar = 'N' THEN B182 38310 BEGIN COMMENT &nS& and &nN& command; 38340 IF command.pos > stringstart THEN 38370 qname:- command.sub(stringstart,command.pos-stringstart); 38400 IF qname = NOTEXT THEN 38430 qname:- old_search_string ELSE B183 38460 BEGIN oldnarg:= IF leading_number < 0 THEN showdefault 38490 ELSE leading_number; 38520 old_search_string:- copy(qname); E183 38550 END; 38580 psearch:= FALSE; 38610 FOR multic:= 1 STEP 1 UNTIL multi DO B184 38640 BEGIN search_for(qname,commandchar,oldnarg); 38670 IF multic < multi THEN B185 38700 BEGIN IF editin.endfile AND lower_lines == NONE THEN 38730 GOTO exit_nsearch; E185 38760 END; E184 38790 END; 38820 exit_nsearch: E182 38850 END ELSE 38880 IF commandchar = 'Q' THEN B186 38910 BEGIN COMMENT &Q& command; 38940 IF arg2 < 0 THEN B187 38970 BEGIN arg2:= arg1; arg1:= 0; E187 39000 END; 39030 IF qname == NOTEXT 39060 AND command.pos > stringstart THEN DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 25-2 DSK:MIDED3.SIM 7-APR-1979 8:36 39090 qname:- 39120 copy(command.sub(stringstart,command.pos-stringstart)); 39150 GOTO qregistercall; E186 39180 END; E178 39210 END; 39240 COMMENT End of the handling a VIDED command, ignore type ahead 39270 made by the user during the performance of the action of the 39300 VIDED command, and restore the screen if there was too much type 39330 ahead before the beginning of the handling of the VIDED command; 39360 IF NOT q_echoenabled THEN B188 39390 BEGIN WHILE trmop(8R0001,sysout,1) = 1 !=type ahead; DO getch; 39420 IF verybadscreen THEN B189 39450 BEGIN restore_screen(q_verticalpos, 998); 39480 verybadscreen:= badscreen:= FALSE; E189 39510 END ELSE echon; E188 39540 END; 39570 getout: nooutput:= FALSE; !z_t(-19); 39600 IF NOT command_done THEN 39630 warning(" The VIDED command was never EXECUTED!",NOTEXT); 39660 autobackcount:= autobackcount+1; 39690 IF autobackcount > autobackup THEN dobackup; E88 39720 END of getcommand; 39721 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 26 DSK:MIDED3.SIM 7-APR-1979 8:36 39750 PROCEDURE edit; 39780 COMMENT This procedures contains a loop with one step for every 39810 character typed by the user which is to be included in the text 39840 being edited. (Not characters in the inputting of VIDED commands 39870 preceded by ESCAPE or CONTROL-F). The procedure checks if the 39900 character is a single character command like CONTROL-U and 39930 performs the appropriate action; B190 39960 BEGIN INTEGER vpos, hpos; COMMENT pos before last character read; 39990 IF terminaltype = elite3025 THEN ! inverse video; B191 40020 BEGIN outchr(sysout,altmode,1); outchr(sysout,'O',1); 40050 outchr(sysout,char(16r31),1); E191 40080 END; 40110 WHILE TRUE DO B192 40140 BEGIN 40170 vpos:= q_verticalpos; hpos:= q_horizontalpos; 40200 COMMENT read one character; 40230 COMMENT%IFNOT CALLMAC 40260 call(p_insingle); 40290 COMMENT%IF CALLMAC; 40320 vtisng(cpunumber); 40350 COMMENT%IFEND CALLMAC; 40380 IF NOT q_echoenabled THEN B193 40410 BEGIN COMMENT shall we restore echoing if no type ahead?; 40440 IF NOT trmop(8R0001,sysout,1) = 1 !=type ahead; THEN echon; E193 40470 END; 40500 COMMENT%IF VIDTIM 40530 outchr(vidtim,q_gotchar,1); 40560 COMMENT%IFEND VIDTIM; 40590 COMMENT%IF debugslow 40620 IF debugslow > 0 THEN sleep(debugslow); 40650 COMMENT%IFEND debugslow; 40680 IF controlchar THEN B194 40710 BEGIN COMMENT character < 32 or > 126 or preceded by ESCAPE; 40740 IF q_gotchar EQ carriagereturn THEN B195 40770 BEGIN 40800 IF hpos > 0 THEN 40830 autobackcount:= autobackcount+1; E195 40860 END ELSE B196 40890 BEGIN 40920 IF q_gotchar = linefeed THEN B197 40950 BEGIN 40980 IF vpos >= heightm1 THEN B198 41010 BEGIN 41040 emptyscroll:= TRUE; call(p_scroll); 41070 emptyscroll:= FALSE; E198 41100 END; 41130 IF autobackcount > autobackup THEN dobackup; E197 41160 END ELSE B199 41190 BEGIN 41220 IF q_gotchar = altmode THEN B200 41250 BEGIN 41280 IF terminaltype = minitec OR terminaltype = tandberg DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 26-1 DSK:MIDED3.SIM 7-APR-1979 8:36 41310 THEN outchr(terminalout,delayer,2); 41340 getcommand(NOTEXT); E200 41370 END ELSE IF q_gotchar = control_f 41400 OR q_gotchar = comstartchar THEN getcommand(NOTEXT) 41430 ELSE IF q_gotchar = tab THEN position_tab(TRUE) 41460 ELSE IF q_gotchar = fill THEN B201 41490 BEGIN COMMENT RUB OUT; 41520 IF hpos = 0 AND vpos > 0 THEN B202 41550 BEGIN COMMENT RUB OUT at beginning of line goes back 41580 to end of previous line; 41610 vpos:= vpos-1; 41640 hpos:= screen(vpos).strip.length; 41670 IF hpos > widthm1 THEN hpos:= widthm1; 41700 move_the_cursor_to(hpos,vpos); E202 41730 END; E201 41760 END ELSE IF q_gotchar = control_u THEN B203 41790 BEGIN IF q_gotchar NE right THEN blank_front; E203 41820 END ELSE IF q_gotchar = control_d THEN 41850 removechars(1) ELSE IF q_gotchar = control_v THEN B204 41880 BEGIN insert(line_model.sub(1,1),FALSE); 41910 move_the_cursor_to(hpos,vpos); E204 41940 END ELSE IF q_gotchar = control_w THEN B205 41970 BEGIN IF terminaltype = infoton THEN 42000 removeword; E205 42030 END ELSE 42060 IF insline NE null AND q_gotchar = insline THEN 42090 addline ELSE 42120 IF delline NE null AND q_gotchar = delline THEN 42150 removeline ELSE 42180 IF inschar NE null AND q_gotchar = inschar THEN 42210 charinsert ELSE 42240 IF delchar NE null AND q_gotchar = delchar THEN 42270 removechar ELSE 42300 IF unknownchar THEN B206 42330 BEGIN IF terminaltype = vt52 AND q_gotchar = char(6) THEN 42360 getcommand(NOTEXT) ELSE B207 42390 IF letter(q_gotchar) THEN BEGIN B208 42420 IF terminaltype = volker414h THEN BEGIN 42450 IF q_gotchar = 'B' THEN getcommand("I") ELSE 42480 IF q_gotchar = 'C' THEN getcommand("X") ELSE 42510 IF q_gotchar = 'D' THEN getcommand("-X") ELSE 42540 IF q_gotchar = 'E' THEN getcommand("S") ELSE 42570 IF q_gotchar = 'F' THEN getcommand("N") ELSE 42600 IF q_gotchar = 'G' THEN getcommand("K") ELSE 42630 IF q_gotchar = 'H' THEN getcommand("1L"); B209 E208 42660 END ELSE IF terminaltype = elite3025 THEN BEGIN 42690 IF q_gotchar = 'q' THEN getcommand("I") ELSE 42720 IF q_gotchar = 'r' THEN getcommand("X") ELSE 42750 IF q_gotchar = 's' THEN getcommand("-X") ELSE 42780 IF q_gotchar = 't' THEN getcommand("S") ELSE 42810 IF q_gotchar = 'u' THEN getcommand("N") ELSE 42840 IF q_gotchar = 'v' THEN getcommand("K") ELSE DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 26-2 DSK:MIDED3.SIM 7-APR-1979 8:36 42870 IF q_gotchar = 'w' THEN getcommand("1L") ELSE 42900 GOTO restore; E209 42930 END ELSE GOTO restore; E207 42960 END ELSE restore: restore_screen(q_verticalpos, 998); E206 42990 END; E199 43020 END; E196 43050 END; E194 43080 END ELSE B210 43110 BEGIN COMMENT NOT controlchar; 43140 IF badscreen THEN COMMENT LF at bottom of a page; B211 43170 BEGIN echoff; emptyscroll:= TRUE; call(p_scroll); 43200 emptyscroll:= badscreen:= FALSE; 43230 restore_screen(q_verticalpos,998); E211 43260 END ELSE 43290 IF hpos >= widthm1 THEN B212 43320 BEGIN echoff; hpos:= q_horizontalpos; vpos:= q_verticalpos; 43350 restore_lines(IF vpos > 0 THEN vpos-1 ELSE vpos,vpos); 43380 move_the_cursor_to(hpos,vpos); E212 43410 END; E210 43440 END; E192 43470 END; E190 43500 END; 43501 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 27 DSK:MIDED3.SIM 7-APR-1979 8:36 43530 PROCEDURE stop_editing; B213 43560 BEGIN GOTO stopedit; E213 43590 END; 43620 43650 PROCEDURE closefiles; 43680 INSPECT sysout DO B214 43710 BEGIN COMMENT close edit text files; 43740 IF NOT backuping THEN B215 43770 BEGIN 43800 outtext(" INPUT FILE """); 43830 outtext(arg[3]); outchar('"'); outimage; 43860 outtext(" OUTPUT FILE """); 43890 outtext(arg[(IF tmpoutfile THEN 3 ELSE 1)]); outchar('"'); 43920 outimage; E215 43950 END; 43980 IF NOT tmpoutfile THEN B216 44010 BEGIN editin.close; editout.close; E216 44040 END ELSE B217 44070 BEGIN COMMENT delete old backup file, rename input file to 44100 backup extension, rename output file to the name of the input 44130 file; 44160 TEXT bakfilename; CHARACTER c; INTEGER i; 44190 bakfilename:- copy(inspec); 44220 COMMENT backup file takes extension beginning with .Q; 44250 FOR i:= 0 STEP 1 UNTIL IF merryentry THEN 1 ELSE 0 DO SIM307 W LINE 44250 EXPRESSION OR CONVERSION AFTER UNTIL B218 44280 BEGIN 44310 bakfilename.setpos(1); scanto(bakfilename,'.'); 44340 bakfilename.setpos(bakfilename.pos+i); 44370 c:= fetchar(bakfilename,bakfilename.pos); 44400 IF c NE '[' AND c NE '<' THEN 44430 bakfilename.putchar('Q') ELSE 44460 bakfilename:- conc(front(bakfilename),"Q",rest(bakfilename)); E218 44490 END; 44520 depchar(bakfilename,bakfilename.length-3,'0'); 44550 44580 outimage; 44610 IF rename(bakfilename,NOTEXT,FALSE) > 0 THEN B219 44640 BEGIN COMMENT Old backup file could not be deleted; 44670 outtext("?VIDED - CANNOT DELETE FILE: "); 44700 outtext(bakfilename); 44730 outimage; merrygoround:= FALSE; 44760 editin.close; editout.close; E219 44790 END ELSE B220 44820 BEGIN 44850 IF NOT backuping THEN B221 44880 BEGIN 44910 outtext(" INPUT FILE WILL BE RENAMED TO: "); 44940 outtext(bakfilename); outimage; E221 44970 END; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 27-1 DSK:MIDED3.SIM 7-APR-1979 8:36 45000 IF rename(editin,bakfilename,TRUE) >= 0 THEN B222 45030 BEGIN COMMENT input file could not be renamed to backup 45060 name; 45090 outtext("?VIDED - CANNOT RENAME INPUT FILE: "); 45120 outtext(inspec); editout.close; merrygoround:= FALSE; E222 45150 END ELSE B223 45180 BEGIN 45210 IF rename(editout,inspec,TRUE) >= 0 THEN B224 45240 BEGIN COMMENT temporary output file could not be renamed 45270 to the name of the input file; 45300 outtext("?VIDED - CANNOT RENAME OUTPUT FILE: "); 45330 outtext(arg[1]); merrygoround:= FALSE; E224 45360 END; E223 45390 END; E220 45420 END; 45450 sysout.outimage; E217 45480 END; E214 45510 END; 45511 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 28 DSK:MIDED3.SIM 7-APR-1979 8:36 45540 COMMENT start of execution; 45570 45600 IF terminaltype = volker414h THEN ! check EOM charcter; B225 45614 BEGIN echoff; outchr(sysout,altmode,1); 45660 outchr(sysout,'-',1); forceout(sysout); 45674 volkeomchar:= getch; 45720 IF volkeomchar = ' ' THEN volkeomchar:= getch ! control-D; 45750 ELSE 45810 IF volkeomchar = carriagereturn THEN getch ! read line feed; 45825 ELSE volkeomchar:= char(0); 45840 echon; E225 45870 END; 45900 45930 dashblank:- copy("- "); 45960 IF arg[18] =/= NOTEXT THEN direct_cursor_addressing:= TRUE; 45990 IF arg[19] =/= NOTEXT THEN direct_cursor_addressing:= FALSE; 46020 IF arg[20] =/= NOTEXT THEN allow_cr:= FALSE; 46050 IF arg[21] =/= NOTEXT THEN allow_cr:= TRUE; 46080 46110 COMMENT write TMPCOR TMP:TRM file with terminal info; 46140 tmpout("TRM",conc(arg[2],copy(IF direct_cursor_addressing 46170 THEN "/DCA" ELSE "/-DCA"))); 46200 46230 mainloop: IF arg[23] =/= NOTEXT THEN swedish:= TRUE; 46260 46290 IF NOT merrygoround THEN B226 46320 BEGIN 46350 IF pageheader THEN B227 46380 BEGIN 46410 sid_word:- IF arg[25] =/= NOTEXT 46440 THEN storbokstav(conc(arg[25]," ")) 46470 ELSE copy("SID "); page_word:- copy("PAGE "); 46500 header:- blanks(IF increment > 0 THEN width-8 ELSE width); 46530 header.setpos((header.length-sid_word.length-3)//2); 46560 puttext(header, IF swedish 46590 OR arg[25] =/= NOTEXT THEN sid_word ELSE page_word); 46620 puttext(header,"00"); 46650 defaultheader:- copy(header.strip); E227 46680 END; 46710 restorechar:= erasescreen; 46740 line_model:- blanks(width); 46770 set_tty_tab; 46800 settab(0,'R'); ! Initial default tab settings; E226 46830 END of NOT merrygoround; 46860 margset('L',leftmargin); 46890 editout_image:- editout.image; 46920 printing:= TRUE; 46950 first_text_pos:= IF increment = 0 THEN 0 ELSE 8; 46980 scrollallow:= TRUE; first_input_line:= TRUE; 47010 out_pagenumber:= 1; 47040 initialload; pagenumber:= 1; ! Load first page; 47070 IF pageheader THEN adjust_date(screen[0]); DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 28-1 DSK:MIDED3.SIM 7-APR-1979 8:36 47100 IF merrygoround THEN B228 47130 BEGIN newpages(startpage,pagebottom,FALSE); 47160 IF backuping THEN B229 47190 BEGIN 47220 printing:= FALSE; q_verticalpos:= heightm1; 47250 WHILE top_fill < backupzscroll OR sub_page_number < 47280 backupsubpage DO call(p_scroll); 47310 printing:= TRUE; normaltext; 47340 IF badscreen OR checksum NE backupchecksum 47370 THEN restore_screen(0,998) ELSE B230 47400 BEGIN screen_length[0]:= 45; 47430 restore_lines(0,0); E230 47460 END; 47490 move_the_cursor_to(backuphor,backupvert); 47520 backuping:= FALSE; E229 47550 END of backuping; E228 47580 END ELSE restore_screen(0,showdefault); ! show first page to user; 47610 merrygoround:= FALSE; 47640 IF trmop(8R0001,sysout,1) = 1 ! type ahead; THEN 47670 echoff ELSE echon; 47700 edit; COMMENT start of editing; 47730 stopedit: 47760 IF NOT q_echoenabled THEN echon; 47790 IF merrygoround THEN roundabout: B231 47820 BEGIN merrygoround:= TRUE; echoff; E231 47850 END ELSE B232 47880 BEGIN 47910 backuping:= merrygoround:= FALSE; 47940 q_display_output:= TRUE; E232 47970 END; 48000 48030 INSPECT sysout DO B233 48060 BEGIN 48090 IF backuping THEN B234 48120 BEGIN home_the_cursor; 48150 specialtext; 48180 IF startblink NE char(0) THEN B235 48210 BEGIN IF addaltmode THEN outchar(altmode); 48240 outchar(startblink); E235 48270 END; E234 48300 END ELSE blankterminal; 48330 outtext(IF merrygoround THEN 48360 "***** FILE BACK-UP IN PROGRESS. ***** " 48390 ELSE "VIDED IS FINISHING."); 48420 IF backuping AND startblink NE char(0) THEN B236 48450 BEGIN IF addaltmode THEN outchar(altmode); 48480 outchar(stopblink); 48510 breakoutimage; E236 48540 END ELSE breakoutimage; E233 48570 END of inspect sysout; 48600 finalwrite; 48630 closefiles; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 28-2 DSK:MIDED3.SIM 7-APR-1979 8:36 48660 IF NOT merrygoround THEN restore_trmops; 48690 detach; 48720 GOTO mainloop; E71 48750 END of class vided3x; 48751 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 29 DSK:MIDED3.SIM 7-APR-1979 8:36 48780 topstart: COMMENT start of execution is here!!!!; 48810 before_editing; 48840 48870 IF the_editor == NONE THEN 48900 the_editor:- NEW vided3x( 48930 width, height, 48960 COMMENT%IF debugterminal 48990 newsysin, newsysout, NOT debug, 49020 COMMENT%IFNOT debugterminal; 49050 sysin, sysout, TRUE, 49080 COMMENT%IFEND debugterminal; 49110 terminaltype,giventrmspeed) 49140 ELSE call(the_editor); 49170 49200 stopedit: 49230 COMMENT remember initial parameter settings at continued execution; B237 49260 BEGIN INTEGER i; 49290 IF NOT merrygoround THEN B238 49320 BEGIN 49350 IF arg[24] =/= NOTEXT THEN run(arg[24],1); 49380 COMMENT%IF stat 49410 stat.close; 49440 COMMENT%IF stat 49470 stat:- NONE; 49500 COMMENT%IFEND stat; 49530 exit(0); 49560 FOR i:= 1 STEP 1 UNTIL keys DO B239 49590 BEGIN 49620 IF arg[i] =/= NOTEXT THEN B240 49650 BEGIN ini[i]:- arg[i]; arg[i]:- NOTEXT; 49680 ini[i].setpos(1); E240 49710 END; E239 49740 END; E238 49770 END; 49800 IF merrygoround THEN B241 49830 BEGIN IF tmpoutfile THEN arg[1]:- arg[3]; 49860 arg[3]:- NOTEXT; E241 49890 END ELSE B242 49920 BEGIN 49950 ini[1]:- ini[3]:- NOTEXT; 49980 tmpoutfile:= FALSE; 50010 COMMENT%IF VIDTIM 50040 vidtim.close; 50070 COMMENT%IFEND VIDTIM; 50100 COMMENT%IF FQC 50130 Goto totalstop; 50160 COMMENT%IFEND FQC; E242 50190 END; 50220 GOTO topstart; E237 50250 END; 50280 totalstop: E1 50310 END; DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 29-1 DSK:MIDED3.SIM 7-APR-1979 8:36 SWITCHES CHANGED FROM DEFAULT: -A NO CHECK OF ARRAY INDEX -D NO SYMBOL TABLE GENERATED FOR DEBUG E EXTERNAL CLASS/PROCEDURE -Q NO CHECK OF QUALIFICATION ERRORS DETECTED: 3 TYPE W MESSAGES DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 30 DSK:MIDED3.SIM 7-APR-1979 8:36 LINE NUMBER TABLE 1620 001153 5730 001614 7980 002444 10380 003366 12930 004345 3060 001154 5760 001625 8040 002450 10410 003374 12960 004356 3150 001220 5790 001636 8070 002454 10440 003405 12990 004413 3180 001220 5820 001647 8130 002467 10470 003412 13080 004424 3240 001223 5850 001660 8160 002501 10500 003417 13140 004442 3270 001227 5880 001671 8190 002511 10530 003430 13230 004446 3300 001234 5910 001702 8220 002514 10560 003443 13290 004453 3330 001246 5940 001713 8310 002532 10590 003463 13350 004465 3330 001253 5970 001724 8340 002555 10620 003472 13380 004476 3360 001264 6000 001735 8400 002561 10650 003473 13410 004505 3390 001265 6030 001746 8430 002570 10710 003513 13440 004515 3570 001265 6060 001757 8520 002573 10770 003514 13470 004520 3600 001300 6090 001770 8580 002575 10890 003533 13500 004533 3630 001312 6120 002001 8610 002576 10920 003536 13530 004555 3660 001322 6150 002012 8640 002600 10950 003557 13560 004563 3720 001326 6180 002023 8700 002606 10980 003561 13590 004603 3750 001335 6210 002034 8730 002621 11040 003571 13620 004613 3870 001341 6240 002045 8820 002657 11070 003600 13680 004632 3930 001343 6330 002050 8880 002712 11100 003634 13710 004646 3960 001354 6390 002070 8910 002716 11130 003657 13740 004650 4020 001360 6420 002073 8940 002727 11190 003674 13800 004675 4080 001362 6450 002100 9000 002736 11220 003706 13860 004707 4110 001365 6480 002101 9030 002742 11280 003720 13890 004723 4140 001366 6510 002102 9120 002743 11310 003727 13950 004727 4170 001371 6570 002106 9210 002750 11370 003731 13980 004735 4200 001375 6630 002112 9240 002774 11400 003742 14040 004742 4230 001400 6660 002122 9270 003013 11430 003747 14070 004777 4260 001404 6720 002136 9300 003025 11490 003772 14100 005012 4290 001411 6750 002144 9330 003037 11520 003776 14130 005015 4380 001423 6810 002166 9360 003061 11550 004006 14160 005020 4410 001425 6930 002167 9390 003062 11670 004007 14190 005027 4440 001426 6990 002172 9450 003064 11700 004016 14220 005051 4470 001430 7020 002176 9480 003102 11730 004031 14250 005057 4500 001432 7080 002230 9540 003105 11760 004035 14280 005063 4530 001436 7110 002234 9570 003127 11790 004045 14310 005067 4560 001442 7140 002244 9630 003130 11820 004051 14340 005067 4590 001443 7170 002250 9660 003143 11940 004056 14460 005071 4650 001443 7200 002253 9720 003144 11970 004062 14490 005126 5070 001446 7230 002254 9750 003165 12030 004076 14520 005141 5130 001450 7410 002267 9780 003222 12150 004115 14580 005144 5280 001454 7440 002302 9810 003226 12240 004135 14610 005150 5370 001457 7470 002314 9840 003243 12390 004154 14640 005153 5430 001463 7500 002326 9930 003247 12450 004177 14670 005175 5460 001473 7560 002346 9990 003263 12480 004211 14700 005203 5490 001504 7620 002351 10020 003303 12510 004217 14730 005212 5520 001515 7680 002353 10050 003311 12540 004222 14850 005216 5550 001526 7710 002365 10080 003323 12570 004237 14910 005222 5580 001537 7830 002367 10110 003331 12600 004244 14970 005256 5610 001550 7860 002374 10140 003340 12780 004245 15570 005273 5640 001561 7890 002417 10170 003351 12840 004251 15600 005277 5670 001572 7920 002423 10230 003362 12870 004305 15630 005303 5700 001603 7950 002425 10290 003364 12900 004310 15750 005310 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 30-1 DSK:MIDED3.SIM 7-APR-1979 8:36 LINE NUMBER TABLE 15810 005313 19170 006522 21270 007210 23190 007656 26460 010366 15840 005316 19200 006524 21300 007212 24030 007657 26520 010372 15870 005323 19260 006551 21330 007215 24060 007662 26550 010377 15930 005330 19290 006555 21360 007222 24090 007675 26580 010407 15990 005342 19320 006556 21390 007232 24120 007704 26700 010410 16020 005354 19410 006556 21420 007237 24180 007705 26760 010414 16080 005364 19470 006562 21450 007252 24240 007705 26970 010417 16110 005376 19500 006565 21480 007263 24270 007711 27030 010433 16140 005411 19650 006600 21510 007276 24300 007715 27090 010452 16170 005415 19710 006612 21540 007301 24330 007716 27120 010455 16200 005432 19740 006623 21570 007303 24360 007720 27150 010460 16230 005440 19800 006624 21630 007306 24390 007725 27210 010471 16290 005444 19830 006634 21660 007311 24420 007742 27270 010476 16350 005455 19860 006653 21720 007326 24480 007754 27300 010500 16440 005470 19890 006665 21750 007331 24540 007765 27360 010504 16560 005512 19920 006676 21810 007346 24600 007777 27390 010517 16590 005523 19980 006713 21840 007351 24630 010007 27420 010530 16620 005532 20040 006713 21870 007356 24660 010011 27450 010532 16650 005555 20070 006717 21930 007376 24780 010044 27480 010540 16680 005562 20100 006740 21960 007401 24810 010046 27510 010546 16710 005566 20130 006746 21990 007403 24840 010063 27540 010547 16770 005577 20160 006752 22020 007413 24870 010067 27570 010550 16800 005611 20190 006762 22050 007423 24900 010102 27630 010557 16830 005621 20220 006772 22080 007425 24960 010111 27660 010560 16860 005644 20250 007003 22110 007431 25050 010141 27674 010564 16920 005656 20280 007010 22140 007436 25080 010144 27680 010572 16955 005671 20310 007023 22170 007440 25110 010144 27682 010574 16960 005673 20340 007024 22230 007441 25140 010151 27686 010625 16965 005705 20400 007030 22260 007446 25170 010154 27688 010635 16970 005717 20430 007036 22290 007451 25200 010156 27691 010641 17220 005722 20460 007037 22320 007453 25260 010161 27720 010645 17280 005727 20520 007037 22350 007457 25320 010162 27780 010646 17310 005741 20520 007044 22410 007463 25440 010162 27840 010651 17340 005753 20550 007051 22440 007470 25560 010172 27900 010661 17430 005767 20640 007053 22470 007502 25595 010173 27960 010676 17464 006035 20670 007055 22500 007511 25600 010203 28050 010724 17466 006046 20700 007062 22530 007515 25603 010217 28080 010727 17468 006055 20730 007072 22560 007516 25605 010235 28140 010733 17480 006061 20760 007102 22650 007521 25800 010250 28200 010734 17490 006074 20790 007105 22680 007526 25830 010252 28230 010737 17550 006107 20820 007111 22710 007541 25860 010260 28260 010743 18420 006450 20880 007121 22800 007556 25890 010270 28320 010750 18480 006452 20910 007123 22830 007572 25920 010306 28350 010756 18510 006460 20940 007126 22860 007606 26100 010316 28440 010764 18570 006472 20970 007137 22890 007607 26130 010317 28470 010765 18630 006474 21000 007151 22920 007613 26190 010317 28530 010765 18690 006503 21030 007153 22950 007617 26250 010322 28560 010771 18720 006507 21060 007163 23010 007622 26280 010326 28620 010774 18750 006516 21090 007166 23070 007630 26310 010341 28710 011022 18870 006520 21150 007171 23100 007641 26340 010345 28740 011035 18900 006521 21180 007174 23130 007643 26370 010345 28770 011056 18930 006521 21210 007204 23160 007656 26400 010354 28800 011060 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 30-2 DSK:MIDED3.SIM 7-APR-1979 8:36 LINE NUMBER TABLE 28860 011074 30960 011633 32880 012453 34890 013233 37290 014211 28890 011115 30990 011637 32940 012471 34920 013234 37320 014216 28920 011117 31020 011643 33060 012531 34950 013252 37350 014226 29010 011124 31050 011647 33210 012534 35010 013267 37380 014232 29040 011137 31080 011653 33270 012540 35040 013272 37470 014253 29070 011140 31110 011664 33330 012543 35070 013277 37500 014257 29100 011140 31140 011674 33390 012557 35131 013337 37530 014260 29130 011145 31170 011676 33420 012563 35190 013354 37569 014275 29160 011155 31200 011711 33450 012564 35250 013372 37576 014311 29250 011156 31230 011715 33480 012577 35340 013422 37590 014322 29280 011163 31260 011726 33570 012600 35400 013423 37650 014330 29310 011167 31290 011732 33600 012607 35460 013427 37680 014333 29340 011200 31320 011741 33630 012611 35490 013433 37830 014334 29370 011204 31350 011745 33660 012613 35550 013434 37860 014352 29430 011223 31410 011754 33690 012624 35610 013453 37890 014353 29460 011227 31440 011763 33720 012634 35700 013466 37920 014357 29490 011245 31470 011767 33750 012653 35760 013510 38010 014407 29520 011251 31500 012000 33780 012673 35790 013514 38070 014412 29580 011275 31530 012010 33810 012674 35820 013520 38130 014427 29640 011304 31560 012024 33840 012700 35850 013524 38160 014431 29700 011327 31590 012025 33870 012703 35880 013525 38190 014442 29730 011333 31620 012034 33900 012712 35910 013537 38220 014452 29760 011344 31650 012040 33930 012716 36060 013564 38250 014473 29790 011346 31680 012045 33960 012725 36120 013570 38280 014506 29820 011361 31710 012060 33990 012731 36150 013573 38340 014522 29850 011365 31770 012072 34020 012742 36180 013614 38400 014537 29880 011371 31800 012100 34050 012752 36270 013652 38460 014551 29910 011373 31830 012136 34080 012757 36300 013670 38520 014562 29940 011376 31860 012137 34110 012767 36330 013671 38580 014567 30000 011401 31890 012141 34140 012773 36360 013702 38610 014571 30060 011416 31920 012152 34170 013002 36390 013712 38640 014602 30150 011423 31980 012161 34200 013006 36450 013715 38670 014614 30180 011426 32010 012165 34230 013017 36480 013717 38700 014617 30210 011435 32040 012170 34260 013027 36510 013726 38790 014632 30270 011440 32070 012172 34290 013043 36540 013735 38820 014633 30300 011443 32100 012205 34320 013051 36600 013760 38880 014634 30330 011447 32160 012206 34350 013057 36630 013771 38940 014637 30390 011450 32190 012214 34380 013067 36690 013775 38970 014642 30420 011453 32220 012223 34410 013073 36720 014005 39030 014645 30450 011455 32280 012263 34440 013077 36750 014023 39150 014674 30510 011471 32340 012264 34470 013103 36780 014037 39360 014675 30540 011473 32370 012266 34500 013106 36840 014050 39390 014700 30570 011477 32400 012277 34530 013112 36900 014054 39420 014717 30630 011510 32430 012307 34560 013116 36930 014075 39450 014722 30660 011524 32490 012330 34590 013120 36990 014107 39480 014732 30690 011530 32550 012356 34650 013122 37080 014131 39510 014735 30720 011545 32640 012413 34680 013124 37110 014135 39510 014736 30750 011551 32730 012414 34710 013140 37140 014145 39570 014740 30780 011553 32760 012420 34740 013165 37170 014150 39600 014742 30840 011571 32790 012423 34770 013166 37200 014152 39660 014757 30900 011614 32820 012430 34830 013202 37230 014174 39690 014761 30930 011622 32850 012437 34861 013231 37260 014201 39720 014766 DECsystem-20 SIMULA %4A(310) 25-JAN-1981 18:37 PAGE 30-3 DSK:MIDED3.SIM 7-APR-1979 8:36 LINE NUMBER TABLE 39750 014767 42480 015505 44490 016275 46890 017114 48780 017465 39990 014767 42510 015521 44520 016276 46920 017120 48780 017467 40020 014773 42540 015535 44580 016305 46950 017121 48870 017471 40050 015006 42570 015551 44610 016307 46980 017130 49140 017521 40170 015013 42600 015565 44670 016330 47010 017132 49200 017523 40320 015020 42630 015601 44700 016333 47040 017134 49290 017525 40380 015024 42660 015614 44730 016337 47070 017140 49350 017527 40440 015027 42690 015621 44760 016343 47100 017154 49530 017554 40680 015045 42720 015634 44790 016350 47130 017157 49560 017556 40740 015050 42750 015650 44850 016351 47160 017171 49620 017571 40800 015053 42780 015664 44910 016354 47220 017174 49650 017602 40860 015060 42810 015700 44940 016357 47250 017177 49680 017622 40920 015061 42840 015714 45000 016365 47280 017213 49740 017631 40980 015065 42870 015730 45090 016407 47310 017216 49800 017632 41040 015070 42900 015744 45120 016412 47340 017221 49830 017634 41070 015073 42930 015745 45150 016423 47370 017244 49860 017650 41130 015075 42960 015747 45210 016424 47400 017245 49890 017656 41160 015103 43080 015760 45300 016446 47430 017252 49950 017657 41220 015104 43140 015761 45330 016451 47490 017261 49980 017672 41280 015110 43170 015764 45450 016463 47520 017271 50220 017673 41340 015130 43200 015772 45480 016466 47580 017273 50250 017674 41370 015137 43230 015775 45510 016470 47610 017304 50280 017676 41430 015163 43260 016005 45600 016475 47640 017306 50311 017701 41460 015175 43290 016006 45600 016477 47670 017324 0 000000 41520 015202 43320 016012 45614 016502 47700 017327 41610 015215 43350 016021 45660 016511 47730 017331 41640 015216 43380 016036 45674 016521 47790 017335 41670 015227 43470 016045 45720 016525 47820 017340 41700 015235 43500 016046 45810 016535 47850 017344 41760 015244 43530 016047 45825 016543 47910 017345 41790 015251 43560 016047 45840 016547 47940 017350 41820 015256 43590 016053 45930 016551 48030 017351 41850 015270 43650 016054 45960 016555 48090 017356 41880 015275 43680 016054 45990 016567 48120 017361 41910 015311 43740 016061 46020 016601 48150 017363 41940 015320 43800 016064 46050 016613 48180 017365 41970 015325 43830 016067 46140 016625 48210 017371 42030 015332 43860 016104 46230 016673 48240 017376 42060 015333 43890 016107 46290 016705 48300 017401 42090 015351 43920 016126 46350 016710 48330 017404 42120 015352 43980 016130 46410 016712 48420 017414 42150 015370 44010 016133 46470 016757 48450 017426 42180 015371 44040 016140 46500 016763 48480 017433 42210 015407 44070 016141 46530 016776 48510 017436 42240 015410 44190 016143 46560 017007 48540 017440 42270 015426 44250 016151 46620 017045 48570 017443 42300 015427 44310 016171 46650 017057 48600 017447 42330 015432 44340 016203 46710 017065 48630 017451 42360 015455 44370 016211 46740 017067 48660 017453 42390 015456 44400 016221 46770 017073 48690 017460 42420 015467 44430 016237 46800 017075 48720 017461