DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦1ea019b43⟧ TextFileVerbose

    Length: 9984 (0x2700)
    Types: TextFileVerbose
    Names: »testoutlst«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »testoutlst« 

TextFileVerbose

\f

testoutlst  80.12.01.   15.24.                                                    page     1

   10    1        PREFIX testout;
   20    2          
   30    3            (*****************************************************************
   40    4            *
   50    5            * function:    this procedure is used to produce testoutput to
   60    6            *              the operators console from within a pascal-80
   70    7            *              process.
   80    8            *
   90    9            * externals:   none
  100   10            *
  110   11            * environment: testenv
  120   12            *
  130   13            * note:        the used zone must be opened by a call of the
  140   14            *              procedure "open".
  150   15            *
  160   16            * programmed may 1980 by wib and stb.
  170   17            *
  180   18            ******************************************************************)
  190   19          
  200   20           
\f

testoutlst  80.12.01.   15.24.                                                    page     2

 1010   21          PROCEDURE testout(VAR z:zone; text:alfa; i:integer);
 1020   22              (* the procedure writes the text followed by the value of i
 1030   23              on the operator console.
 1040   24              
 1050   25              example:
 1060   26              the call:
 1070   27              _    i:=7;
 1080   28              _    testout(z, "value is    ",i);
 1090   29              yields the following output:
 1100   30              _    value is       7
 1110   31              *)
 1120   32            
 1130   33          TYPE
 1140   34            opbuftype = RECORD
 1150   35                        !  first, last, next: integer;
 1160   36                        !  name: alfa;
 1170   37                        !  data: ARRAY(1..80) OF char;
 1180   38                        END;
 1190   39            
 1200   40          VAR
 1210   41            opbuf: opbuftype;
 1220   42            opref: reference;
 1230   43            
 1240   44             
\f

testoutlst  80.12.01.   15.24.                                                    page     3

 2010   45            PROCEDURE outchar(ch: char);
 2020   46                (* writes ch into the output buffer *)
 2030   47            BEGIN
 2040   48    1       ! LOCK opref AS opbuf: opbuftype DO
 2050   49    2       !   WITH opbuf DO
 2060   50    3       !     BEGIN
 2070   51    4       !     ! data(next):= ch;
 2080   52    5       !     ! next:= next + 1;
 2090   53    6       !     END;
 2100   54    7       ! 
 2110   55    8       END (* outchar *);
 2120   56             
\f

testoutlst  80.12.01.   15.24.                                                    page     4

 3010   57            PROCEDURE outinteger(int,positions:integer);
 3020   58                (* writes the integer "int" into opbuf starting at
 3030   59                "outputpoint", which is updated accordingly *)
 3040   60            CONST
 3050   61              maxpos = 20; (* max number of positions in layout *)
 3060   62              base = 10;
 3070   63              
 3080   64            VAR
 3090   65              digits:ARRAY(1..maxpos) OF char;
 3100   66              used,i:integer;
 3110   67              negative:boolean;
 3120   68              
 3130   69            BEGIN
 3140   70    1       ! used:= 1;
 3150   71    2       ! 
 3160   72    3       !   (* first we initialise the digits array *)
 3170   73    4       ! FOR i:=1 TO maxpos DO digits(i):=sp;
 3180   74    5       ! 
 3190   75    6       ! i:=maxpos;
 3200   76    7       ! 
 3210   77    8       ! negative:= int<0;
 3220   78    9       ! 
 3230   79   10       ! REPEAT
 3240   80   11       ! !   (* now we unpack the digits backwards and put them
 3250   81   12       ! !   into the digits array *)
 3260   82   13       ! ! 
 3270   83   14       ! ! digits(i):= chr(abs(int MOD base) + ord("0"));
 3280   84   15       ! ! int:=int DIV base;
 3290   85   16       ! ! i:=i-1;
 3300   86   17       ! UNTIL (i=1) OR (int=0);
 3310   87   18       ! 
 3320   88   19       ! IF negative THEN
 3330   89   20       !   BEGIN
 3340   90   21       !   ! digits(i):="-";
 3350   91   22       !   ! i:=i-1;
 3360   92   23       !   END;
 3370   93   24       ! 
 3380   94   25       ! used:=maxpos-i;
 3390   95   26       ! 
 3400   96   27       ! IF int <> 0 THEN digits(1):= "*";
 3410   97   28       ! 
 3420   98   29       !   (* i n{ste linje skal 20 erstattes af maxpos !!!!!!!!!!!!!!!!!!!!!!!*)
 3430   99   30       ! IF (NOT (positions IN (. 1 .. 20 .)) )
 3440  100   31       !   OR (positions < used) THEN
 3450  101   32       !   positions:=used;
 3460  102   33       ! 
\f

testoutlst  80.12.01.   15.24.                                                    page     5

 3470  103   34       ! FOR i:=maxpos+1-positions TO maxpos DO
 3480  104   35       !   outchar( digits(i) );
 3490  105   36       ! 
 3500  106   37       END (* out integer *);
 3510  107            
 3520  108            
 3530  109             
\f

testoutlst  80.12.01.   15.24.                                                    page     6

 4010  110            PROCEDURE outstring(text: alfa);
 4020  111                (* writes the text into opbuf starting at opbuf.next
 4030  112                which is updated accordingly *)
 4040  113            VAR
 4050  114              i: integer;
 4060  115            BEGIN
 4070  116    1       ! FOR i:=1 TO alfalength DO
 4080  117    2       !   outchar( text(i) );
 4090  118    3       ! 
 4100  119    4       END (* out string *);
 4110  120             
\f

testoutlst  80.12.01.   15.24.                                                    page     7

 5010  121          BEGIN
 5020  122    1     !   (**********************************************
 5030  123    2     !   *
 5040  124    3     !   *       m a i n  p r o g r a m
 5050  125    4     !   *
 5060  126    5     !   ************************************************)
 5070  127    6     ! 
 5080  128    7     ! wait(opref, z.testoutsem);
 5090  129    8     ! 
 5100  130    9     ! LOCK opref AS opbuf: opbuftype DO
 5110  131   10     !   opbuf.next:= 1;
 5120  132   11     ! outstring(text);
 5130  133   12     ! outinteger(i,4);
 5140  134   13     ! outchar(nl);
 5150  135   14     ! LOCK opref AS opbuf: opbuftype DO
 5160  136   15     !   WITH opbuf DO
 5170  137   16     !     last:=next+16;
 5180  138   17     ! 
 5190  139   18     ! opref^.u2:= 0;
 5200  140   19     ! signal(opref, z.opsem^);
 5210  141   20     ! 
 5220  142   21     ! wait(opref,z.testoutsem);
 5230  143   22     ! return(opref);
 5240  144   23     ! 
 5250  145   24     END (* test out *);
 5260  146          .
 5270  147          
\f

testoutlst  80.12.01.   15.24.                                                    page     8

           0   77    86    96   139 
           1   37*   52    65*   70    73    85    86    91    96    99   103   116   131 
           4  133 
          10   62*
          16  137 
          20   61*   99 
          80   37*
abs            83 
alfa           21*   36*  110*
alfalength    116 
as             48:  130:  135:
base           62*   83    84 
boolean        67*
ch             45*   51 
char           37*   45*   65*
chr            83 
data           37*   51=
digits         65*   73=   83=   90=   96=  104 
first          35*
i              21*   66*   73=   73    75=   83    85=   85    86    90    91=   91    94   103=  104 
              114*  116=  117   133 
int            57*   77    83    84=   84    86    96 
integer        21*   35*   57*   66*  114*
last           35*  137=
lock           48:  130:  135:
maxpos         61*   65*   73    75    94   103   103 
name           36*
negative       67*   77=   88 
next           35*   51    52=   52   131=  137 
nl            134 
opbuf          41*   48:   49   130:  131   135:  136 
opbuftype      34*   41*   48   130   135 
opref          42*   48:  128   130:  135:  139   140   142   143 
opsem         140 
ord            83 
outchar        45*  104   117   134 
outinteger     57*  133 
outstring     110*  132 
positions      57*   99   100   101=  103 
prefix          1*
reference      42*
return        143 
signal        140 
sp             73 
\f

testoutlst  80.12.01.   15.24.                                                    page     9

testout         1*   21*
testoutsem    128   142 
text           21*  110*  117   132 
u2            139=
used           66*   70=   94=  100   101 
wait          128   142 
z              21*  128   140   142 
zone           21*
\f

testoutlst  80.12.01.   15.24.                                                    page    10

ARRAY              2
BEGIN              6
CONST              1
DIV                1
DO                 8
END                7
FOR                3
IF                 3
IN                 1
MOD                1
NOT                1
OF                 2
OR                 2
PROCEDURE          4
RECORD             1
REPEAT             1
THEN               3
TO                 3
TYPE               1
UNTIL              1
VAR                4
WITH               2
 pascal testout
80.12.01.      15.24.                         pascal80     version 1980.11.28


file does not exist: alarmenv9
occured in    1040 = line 148 of readcall    584936 1754 rel of segm 22 of program
called from   2469 = line 15 of readline    584864 148 rel of segm 50 of program
called from   2508 = line  7 of inchar      584798  70 rel of segm 51 of program
called from   2713 = line  6 of lexical     584722  32 rel of segm 59 of program
called from   3193 = line  6 of parse       584484  46 rel of segm 71 of program
called from   3204 = line  5 of parser      575436  74 rel of segm 72 of program
called from   3211 = line  5 of platonpass1 551684  76 rel of segm 73 of program
blocksread = 54
«eof»