! simenvir.atr/ 905612369 500 100 100644 3564 ` /*Cim_atr*/ SIMENVIR FILE simfile.atr LNCTEXTOBJ* &0 0 0 0LBPCONSTANT ^__rtconstant 20 0 LIPSTART ^__rtstart 20 0 LIPLENGTH ^__rtlength 20 0 LTPMAIN ^__rtmain <0 0 LIPPOS ^__rtpos <0 0 LTPSETPOS ^__rtsetpos 20 0DIS*0 LBPMORE ^__rtmore <0 0 LCPGETCHAR ^__rtgetchar <0 0 LTPPUTCHAR ^__rtputchar 20 0DCS*1 LTPSUB ^__rtsub <0 0DIS*2 DIS*3 LTPSTRIP ^__rtstrip <0 0 LIPGETINT ^__rtgetint <0 0 LRPGETREAL ^__rtgetreal <0 0 LIPGETFRAC ^__rtgetfrac <0 0 LTPPUTINT ^__rtputint 20 0DIS*4 LTPPUTFIX ^__rtputfix 20 0DRS*5 DIS*6 LTPPUTREAL ^__rtputreal 20 0DRS*7 DIS*8 LTPPUTFRAC ^__rtputfrac 20 0DIS*9 DIS*10 LIPMOD ^__rmod ;0 0DIS*11 DIS*12 LIPREM ^__rrem ;0 0DIS*13 DIS*14 LEPABS ^* ;0 0DES*15 LRPABS*R ^__rabsr ;0 0DRS*16 LIPABS*I ^__rabsi ;0 0DIS*17 LIPSIGN ^* ;0 0DES*18 LIPSIGN*R ^__rsignr ;0 0DRS*19 LIPSIGN*I ^__rsigni ;0 0DIS*20 LIPENTIER ^__rentier ;0 0DRS*21 LRPADDEPSILON ^__raddepsilon ;0 0DRS*22 LRPSUBEPSILON ^__rsubepsilon ;0 0DRS*23 LTPCOPY ^__rcopy 10 0DTS*24 LTPBLANKS ^__rblanks 10 0DIS*25 LCPCHAR ^__rchar ;0 0DIS*26 LCPISOCHAR ^__risochar ;0 0DIS*27 LIPRANK ^__rrank ;0 0DCS*28 LIPISORANK ^__risorank ;0 0DCS*29 LBPDIGIT ^__rdigit ;0 0DCS*30 LBPLETTER ^__rletter ;0 0DCS*31 LCPLOWTEN ^__rlowten ;0 0DCS*32 LCPDECIMALMARK ^__rdecimalmark ;0 0DCS*33 LTPUPCASE ^__rupcase :0 0DTS*34 LTPLOWCASE ^__rlowcase :0 0DTS*35 LNCCOMMON* &0 0 0 0LNPDETACH ^__rdetach 40 0 LNPCALL ^__rcall 50 0DPS*36 COMMON* LNPRESUME ^__rresume 50 0DPS*37 COMMON* LNPEXCHANGE ^__rexchange 50 0DPS*38 COMMON* DPS*39 COMMON* LRPSQRT ^__rsqrt ;0 0DRS*40 LRPSIN ^__rsin ;0 0DRS*41 LRPCOS ^__rcos ;0 0DRS*42 LRPTAN ^__rtan ;0 0DRS*43 LRPCOTAN ^__rcotan ;0 0DRS*44 LRPARCSIN ^__rarcsin ;0 0DRS*45 LRPARCCOS ^__rarccos ;0 0DRS*46 LRPARCTAN ^__rarctan ;0 0DRS*47 LRPARCTAN2 ^__rarctan2 ;0 0DRS*48 DRS*49 LRPSINH ^__rsinh ;0 0DRS*50 LRPCOSH ^__rcosh ;0 0DRS*51 LRPTANH ^__rtanh ;0 0DRS*52 LRPLN ^__rln ;0 0DRS*53 LRPLOG10 ^__rlog10 ;0 0DRS*54 LRPEXP ^__rexp ;0 0DRS*55 LEPMIN ^* ;0 0DES*56 DES*57 LTPMIN*T ^__rmint ;0 0DTS*58 DTS*59 LCPMIN*C ^__rminc ;0 0DCS*60 DCS*61 LRPMIN*R ^__rminr ;0 0DRS*62 DRS*63 LIPMIN*I ^__rmini ;0 0DIS*64 DIS*65 LEPMAX ^* ;0 0DES*66 DES*67 LTPMAX*T ^__rmaxt ;0 0DTS*68 DTS*69 LCPMAX*C ^__rmaxc ;0 0DCS*70 DCS*71 LRPMAX*R ^__rmaxr ;0 0DRS*72 DRS*73 LIPMAX*I ^__rmaxi ;0 0DIS*74 DIS*75 LIPSOURCELINE ^* ;0 0 CRSMAXLONGREAL 0 CRSMINLONGREAL 0 CRSMAXREAL 0 CRSMINREAL 0 CISMAXRANK 0 CISMAXINT 0 CISMININT 0 LTPSIMULAID ^__rsimulaid 10 0 LNPERROR ^__rterror ;0 0DTS*76 LIPLOWERBOUND ^__rlowerbound ;0 0DAA*77 0DIS*78 LIPUPPERBOUND ^__rupperbound ;0 0DAA*79 0DIS*80 LBPDRAW ^__rdraw 70 0DRS*81 BIS*82 LIPRANDINT ^__rrandint 70 0DIS*83 VIS*84 BIS*85 LRPUNIFORM ^__runiform 70 0DRS*86 DRS*87 BIS*88 LRPNORMAL ^__rnormal 70 0DRS*89 DRS*90 BIS*91 LRPNEGEXP ^__rnegexp 70 0DRS*92 BIS*93 LIPPOISSON ^__rpoisson 70 0DRS*94 BIS*95 LRPERLANG ^__rerlang 70 0DRS*96 DRS*97 BIS*98 LIPDISCRETE ^__rdiscrete 70 0DRA*99 0BIS*100 LRPLINEAR ^__rlinear 70 0DRA*101 0DRA*102 0BIS*103 LIPHISTD ^__rhistd 70 0DRA*104 0BIS*105 LTPDATETIME ^__rdatetime 10 0 LRPCPUTIME ^__rcputime ;0 0 LRPCLOCKTIME ^__rclocktime ;0 0 LNPHISTO ^__rhisto ;0 0DRA*106 0DRA*107 0DRS*108 DRS*109 LPPSYSIN !INFILE ^__rsysin ;0 0 LPPSYSOUT !PRINTFILE ^__rsysout ;0 0 LPPSYSERR !PRINTFILE ^__rsyserr ;0 0 LNPTERMINATE_PROGRAM ^__rterminate_program 60 0 &NCFILE FILE simfile.atr LNPGBC ^__rgbc ;0 0 LIPARGC ^__rargc ;0 0 LIPARGV ^__rargv ;0 0 LNPDUMP ^__rdump 50 0VTS*161 LNPUNDUMP ^__rundump 50 0VTS*162 LNPRETURN ^__rreturn 50 0VIS*163 simfile.atr/ 905612369 500 100 100644 3955 ` /*Cim_atr*/ FILE XNCFILE &0 0 1 1VTSfilename LISfile LCSopen LCSshared LCSappend LCScreate LCSreadwrite LCSre_wind LCSpurge LTPFILENAME ^__rfilename =0 0 LBPISOPEN ^__risopen 30 0 LBPSETACCESS ^__rsetaccess 30 0DTSv110 XNCIMAGEFILE !FILE 0 0 2 4LTSIMAGE LPPSETPOS !IMAGEFILE ^__rsetpos 90 0DISv111 LIPPOS ^__rpos 30 0 LBPMORE ^__rmore 30 0 LIPLENGTH ^__rlength 30 0 XNCOUTFILE !IMAGEFILE 0 0 3 7LBPOPEN ^__roopen 30 0DTSv112 LBPCLOSE ^__roclose 30 0 LPPOUTIMAGE !OUTFILE ^__rooutimage 90 0 LPPOUTRECORD !OUTFILE ^__rooutrecord 90 0 LPPBREAKOUTIMAGE !OUTFILE ^__robreakoutimage 90 0 LBPCHECKPOINT ^__rdcheckpoint 30 0 LPPOUTCHAR !OUTFILE ^__rooutchar 90 0DCSv113 LPPOUTTEXT !OUTFILE ^__roouttext 90 0DTSv114 LPPOUTINT !OUTFILE ^__rooutint 90 0DISv115 DISv116 LPPOUTFIX !OUTFILE ^__rooutfix 90 0DRSv117 DISv118 DISv119 LPPOUTREAL !OUTFILE ^__rooutreal 90 0DRSv120 DISv121 DISv122 LPPOUTFRAC !OUTFILE ^__rooutfrac 90 0DISv123 DISv124 DISv125 XNCINFILE !IMAGEFILE 0 0 4 10LCSendfile LBPENDFILE ^__riendfile 30 0 LBPOPEN ^__riopen 30 0DTSv126 LBPCLOSE ^__riclose 30 0 LPPINIMAGE !INFILE ^__riinimage 90 0 LBPINRECORD ^__riinrecord 30 0 LCPINCHAR ^__riinchar 30 0 LBPLASTITEM ^__rilastitem 30 0 LTPINTEXT ^__riintext =0 0DISv127 LIPININT ^__riinint 30 0 LRPINREAL ^__riinreal 30 0 LIPINFRAC ^__riinfrac 30 0 XNCDIRECTFILE !IMAGEFILE 0 0 5 13LISloc LISmaxloc LISminwriteloc LISimagelength LCSendfile LCSlocked LCSlastop LCSwriteonly LIPLOCATION ^__rdlocation 30 0 LBPENDFILE ^__rdendfile 30 0 LBPLOCKED ^__rdlocked 30 0 LBPOPEN ^__rdopen 30 0DTSv128 LBPCLOSE ^__rdclose 30 0 LIPLASTLOC ^__rdlastloc 30 0 LIPMAXLOC ^__rdmaxloc 30 0 LPPLOCATE !DIRECTFILE ^__rdlocate 90 0DISv129 LPPINIMAGE !DIRECTFILE ^__rdinimage 90 0 LPPOUTIMAGE !DIRECTFILE ^__rdoutimage 90 0 LBPDELETEIMAGE ^__rddeleteimage 30 0 LIPLOCK ^__rdlock 30 0DRSv130 DISv131 DISv132 LBPUNLOCK ^__rdunlock 30 0 LBPCHECKPOINT ^__rdcheckpoint 30 0 LBPLASTITEM ^__rilastitem 30 0 LCPINCHAR ^__riinchar 30 0 LTPINTEXT ^__riintext =0 0DISv133 LIPININT ^__riinint 30 0 LRPINREAL ^__riinreal 30 0 LIPINFRAC ^__riinfrac 30 0 LPPOUTCHAR !DIRECTFILE ^__rooutchar 90 0DCSv134 LPPOUTTEXT !DIRECTFILE ^__roouttext 90 0DTSv135 LPPOUTINT !DIRECTFILE ^__rooutint 90 0DISv136 DISv137 LPPOUTFIX !DIRECTFILE ^__rooutfix 90 0DRSv138 DISv139 DISv140 LPPOUTREAL !DIRECTFILE ^__rooutreal 90 0DRSv141 DISv142 DISv143 LPPOUTFRAC !DIRECTFILE ^__rooutfrac 90 0DISv144 DISv145 DISv146 XNCPRINTFILE !OUTFILE 0 0 6 16LISline LISlines_per_page LISspacing LISpage LIPLINE ^__rpline 30 0 LIPPAGE ^__rppage 30 0 LBPOPEN ^__rpopen 30 0DTSv147 LBPCLOSE ^__rpclose 30 0 LIPLINESPERPAGE ^__rplinesperpage 30 0DISv148 LPPSPACING !PRINTFILE ^__rpspacing 90 0DISv149 LPPEJECT !PRINTFILE ^__rpeject 90 0DISv150 LPPOUTIMAGE !PRINTFILE ^__rpoutimage 90 0 LPPOUTRECORD !PRINTFILE ^__rpoutrecord 90 0 XNCBYTEFILE !FILE 0 0 7 19LCSendfile LCSbytesize LIPBYTESIZE ^__rbytesize 30 0 XNCINBYTEFILE !BYTEFILE 0 0 8 22LBPENDFILE ^__ribendfile 30 0 LBPOPEN ^__ribopen 30 0 LBPCLOSE ^__ribclose 30 0 LIPINBYTE ^__ribinbyte 30 0 LTPINTEXT ^__ribintext 30 0DTSv151 XNCOUTBYTEFILE !BYTEFILE 0 0 9 25LBPOPEN ^__robopen 30 0 LBPCLOSE ^__robclose 30 0 LPPOUTBYTE !OUTBYTEFILE ^__roboutbyte 90 0DISv152 LPPOUTTEXT !OUTBYTEFILE ^__robouttext 90 0DTSv153 LBPCHECKPOINT ^__rdcheckpoint 30 0 XNCDIRECTBYTEFILE !BYTEFILE 0 0 10 28LISloc LISmaxloc LISminwriteloc LCSlocked LCSlastop LCSwriteonly LBPENDFILE ^__rdbendfile 30 0 LIPLOCATION ^__rdblocation 30 0 LIPMAXLOC ^__rdbmaxloc 30 0 LBPLOCKED ^__rdblocked 30 0 LBPOPEN ^__rdbopen 30 0 LBPCLOSE ^__rdbclose 30 0 LIPLASTLOC ^__rdblastloc 30 0 LPPLOCATE !DIRECTBYTEFILE ^__rdblocate 90 0DISv154 LIPINBYTE ^__rdbinbyte 30 0 LPPOUTBYTE !DIRECTBYTEFILE ^__rdboutbyte 90 0DISv155 LBPCHECKPOINT ^__rdcheckpoint 30 0 LIPLOCK ^__rdblock 30 0DRSv156 DISv157 DISv158 LBPUNLOCK ^__rdbunlock 30 0 LTPINTEXT ^__rdbintext 30 0DTSv159 LPPOUTTEXT !DIRECTBYTEFILE ^__rdbouttext 90 0DTSv160 simset.sim/ 905612369 500 100 100644 2965 ` % $Id: simset.sim,v 1.3 1997/02/14 16:33:02 cim Exp $ % Copyright (C) 1994 Sverre Hvammen Johansen, % Department of Informatics, University of Oslo. % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; version 2. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ %ifdef included %else %timestamp simset %endif %nonetest off %casesensitive on CLASS SIMSET; BEGIN CLASS LINKAGE; BEGIN REF(LINKAGE)zzsuc,zzpred; REF(LINK) PROCEDURE SUC; SUC:- IF zzsuc IN LINK THEN zzsuc ELSE NONE; REF(LINK) PROCEDURE PRED; PRED:- IF zzpred IN LINK THEN zzpred ELSE NONE; REF(LINKAGE) PROCEDURE PREV; PREV:-zzpred; END LINKAGE; LINKAGE CLASS LINK; BEGIN PROCEDURE OUT; IF zzsuc=/=NONE THEN BEGIN zzsuc.zzpred:-zzpred; zzpred.zzsuc:-zzsuc; zzsuc:-zzpred:-NONE; END OUT; PROCEDURE FOLLOW(PTR); REF(LINKAGE)PTR; BEGIN OUT; IF PTR=/=NONE AND THEN PTR.zzsuc=/=NONE THEN BEGIN zzpred:-PTR; zzsuc:-PTR.zzsuc; zzsuc.zzpred:-PTR.zzsuc:-THIS LINKAGE END END FOLLOW; PROCEDURE PRECEDE(PTR); REF(LINKAGE)PTR; BEGIN OUT; IF PTR=/=NONE AND THEN PTR.zzpred=/=NONE THEN BEGIN zzsuc:-PTR; zzpred:-PTR.zzpred; zzpred.zzsuc:-PTR.zzpred:-THIS LINKAGE END END PRECEDE; PROCEDURE INTO(S); REF(HEAD)S; PRECEDE(S); END LINK; LINKAGE CLASS HEAD; BEGIN REF(LINK) PROCEDURE FIRST; !FIRST:-SUC; FIRST:- IF zzsuc IN LINK THEN zzsuc ELSE NONE; REF(LINK) PROCEDURE LAST; !LAST:-PRED; LAST:- IF zzpred IN LINK THEN zzpred ELSE NONE; BOOLEAN PROCEDURE EMPTY; EMPTY:= zzsuc==THIS LINKAGE; INTEGER PROCEDURE CARDINAL; BEGIN INTEGER I; REF(LINKAGE) PTR; % PTR:-FIRST; % WHILE PTR =/= NONE DO BEGIN % I:=I+1; % PTR:-PTR.SUC; % END WHILE; PTR:-zzsuc; WHILE PTR =/= THIS LINKAGE DO BEGIN I:=I+1; PTR:-PTR.zzsuc; END WHILE; CARDINAL:=I END CARDINAL; % PROCEDURE CLEAR; WHILE FIRST=/= NONE DO FIRST.OUT; PROCEDURE CLEAR; BEGIN REF(LINKAGE) PTR,PTRSUC; PTR:-zzsuc; WHILE PTR =/= THIS LINKAGE DO BEGIN PTRSUC:-PTR.zzsuc; PTR.zzsuc:-PTR.zzpred:-NONE; PTR:-PTRSUC; END; zzsuc:-zzpred:-THIS LINKAGE END; zzsuc:-zzpred:-THIS LINKAGE END HEAD; END SIMSET; %CASESENSITIVE OFF %eof simulation.sim/ 905612369 500 100 100644 6309 ` % $Id: simulation.sim,v 1.4 1997/02/14 16:33:03 cim Exp $ % Copyright (C) 1994 Sverre Hvammen Johansen and Stein Krogdahl, % Department of Informatics, University of Oslo. % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; version 2. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ %ifdef included %else %timestamp simulation %endif % nameasvar on %nonetest off %casesensitive on SIMSET CLASS SIMULATION; BEGIN REF(PROCESS) zzsqs; REF(zzmain_program)MAIN; REF(PROCESS) PROCEDURE CURRENT; CURRENT:-zzsqs.zzsqssuc; LONG REAL PROCEDURE TIME; TIME:=zzsqs.zzsqssuc.zzevtime; LINK CLASS PROCESS; BEGIN ! From event notice: ; REF(PROCESS) zzsqssuc, zzsqspred; LONG REAL zzevtime; ! From old process: ; BOOLEAN zzterminated_process; BOOLEAN PROCEDURE IDLE; IDLE:= (zzsqssuc==NONE); BOOLEAN PROCEDURE TERMINATED; TERMINATED:=zzterminated_process; LONG REAL PROCEDURE EVTIME; IF zzsqssuc==NONE THEN ERROR("No Evtime for idle process") ELSE EVTIME:= zzevtime; REF(PROCESS) PROCEDURE NEXTEV; NEXTEV:-IF zzsqssuc==NONE OR ELSE zzsqssuc==zzsqs THEN NONE ELSE zzsqssuc; ! Not necessary: ; zzsqssuc:- zzsqspred:- NONE; DETACH; INNER; zzterminated_process:=TRUE; ! Remove from SQS: ; zzsqssuc.zzsqspred:- zzsqspred; zzsqspred.zzsqssuc:- zzsqssuc; zzsqspred:- zzsqssuc:- NONE; IF zzsqs.zzsqssuc==zzsqs THEN ERROR("SQS: Empty") ELSE RESUME(zzsqs.zzsqssuc); ERROR("SQS: Terminated process"); END PROCESS; PROCEDURE activat(REAC,X,CODE,T,Y,PRIO); REF(PROCESS)X,Y; BOOLEAN REAC,PRIO; CHARACTER CODE; LONG REAL T; BEGIN REF(PROCESS) b, cur; LONG REAL tm; IF X =/= NONE AND THEN NOT X.zzterminated_process AND THEN (REAC OR ELSE X.zzsqssuc == NONE) THEN BEGIN cur:- zzsqs.zzsqssuc; tm:=cur.zzevtime; IF CODE = '!1!' THEN BEGIN ! Direct ; IF X==cur THEN GOTO exit; T:=tm; b:- zzsqs; END ELSE IF CODE = '!2!' THEN BEGIN !At; IF T<=tm THEN BEGIN IF PRIO AND THEN X==cur THEN GOTO exit ELSE T:=tm END; END ELSE IF CODE = '!3!' THEN BEGIN !Delay; T:= T+tm; IF T<=tm THEN BEGIN IF PRIO AND THEN X==cur THEN GOTO exit ELSE T:=tm END; END ELSE ! CODE = '!4!' OR CODE = '!5!' ; BEGIN ! 4=Before, 5=After ; IF Y==NONE OR ELSE Y.zzsqssuc==NONE THEN BEGIN IF X.zzsqssuc=/=NONE THEN BEGIN X.zzsqssuc.zzsqspred:- X.zzsqspred; X.zzsqspred.zzsqssuc:- X.zzsqssuc; X.zzsqspred:- NONE; X.zzsqssuc:- NONE; END; IF zzsqs.zzsqssuc==zzsqs THEN ERROR("SQS: Empty"); GOTO exit; END; IF X==Y THEN GOTO exit; T:= Y.zzevtime; IF CODE = '!4!' THEN b:- Y.zzsqspred ELSE b:- Y; END; IF X.zzsqssuc =/= NONE THEN BEGIN X.zzsqssuc.zzsqspred:- X.zzsqspred; X.zzsqspred.zzsqssuc:- X.zzsqssuc; END; IF b==NONE THEN BEGIN ! Not `direct', `after' or `before' ; b:- zzsqs.zzsqspred; WHILE b.zzevtime>T DO b:- b.zzsqspred; IF PRIO THEN WHILE b.zzevtime=T DO b:- b.zzsqspred; END; X.zzevtime:= T; X.zzsqspred:- b; X.zzsqssuc:- b.zzsqssuc; b.zzsqssuc:- X; X.zzsqssuc.zzsqspred:- X; IF zzsqs.zzsqssuc=/=cur THEN RESUME(zzsqs.zzsqssuc); END; exit: END activat; PROCEDURE HOLD(t); LONG REAL t; BEGIN REF(PROCESS) p,q; p:- zzsqs.zzsqssuc; IF t>0 THEN p.zzevtime:= p.zzevtime + t; t:= p.zzevtime; ! New evtime ; IF p.zzsqssuc=/=zzsqs AND THEN p.zzsqssuc.zzevtime<=t THEN BEGIN p.zzsqssuc.zzsqspred:- p.zzsqspred; p.zzsqspred.zzsqssuc:- p.zzsqssuc; q:- zzsqs.zzsqspred; WHILE q.zzevtime>t DO q:- q.zzsqspred; p.zzsqspred:- q; p.zzsqssuc:- q.zzsqssuc; q.zzsqssuc:- p; p.zzsqssuc.zzsqspred:- p; RESUME(zzsqs.zzsqssuc); END IF; END HOLD; PROCEDURE PASSIVATE; BEGIN REF(PROCESS) p; p:- zzsqs.zzsqssuc; p.zzsqssuc.zzsqspred:- p.zzsqspred; p.zzsqspred.zzsqssuc:- p.zzsqssuc; p.zzsqspred:- NONE; p.zzsqssuc:- NONE; IF zzsqs.zzsqssuc==zzsqs THEN ERROR("SQS: Empty") ELSE RESUME(zzsqs.zzsqssuc); END PASSIVATE; PROCEDURE WAIT(S);REF(HEAD)S; BEGIN REF(PROCESS) p; p:- zzsqs.zzsqssuc; p.INTO(S); ! May also be expanded inline ; p.zzsqssuc.zzsqspred:- p.zzsqspred; p.zzsqspred.zzsqssuc:- p.zzsqssuc; p.zzsqspred:- NONE; p.zzsqssuc:- NONE; IF zzsqs.zzsqssuc==zzsqs THEN ERROR("SQS: Empty") ELSE RESUME(zzsqs.zzsqssuc); END WAIT; PROCEDURE CANCEL(x); REF(PROCESS)x; BEGIN REF(PROCESS) cur; IF x=/=NONE AND THEN x.zzsqssuc=/=NONE THEN BEGIN cur:- zzsqs.zzsqssuc; x.zzsqssuc.zzsqspred:- x.zzsqspred; x.zzsqspred.zzsqssuc:- x.zzsqssuc; x.zzsqspred:- NONE; x.zzsqssuc:- NONE; IF x==cur THEN BEGIN IF zzsqs.zzsqssuc==zzsqs THEN ERROR("SQS: Empty") ELSE RESUME(zzsqs.zzsqssuc); END; END; END CANCEL; PROCESS CLASS zzmain_program; BEGIN WHILE TRUE DO DETACH END MAIN_PROGRAM; PROCEDURE ACCUM(A,B,C,D);NAME A,B,C; LONG REAL A,B,C,D; BEGIN A:=A+C*(TIME-B); B:=TIME; C:=C+D; END ACCUM; zzsqs:- NEW PROCESS; zzsqs.zzevtime:= -1; MAIN:- NEW zzmain_program; zzsqs.zzsqssuc:- MAIN; zzsqs.zzsqspred:- MAIN; MAIN.zzsqssuc:- zzsqs; MAIN.zzsqspred:- zzsqs; END SIMULATION; %CASESENSITIVE OFF %eof simset.atr/ 949799728 500 100 100644 464 ` /*Cim_atr*/ SIMSET FILE simfile.atr SIMENVIR simenvir.atr XNCSIMSET $0 0 206 2LNCLINKAGE $0 0 207 5LPSzzsuc LINKAGE LPSzzpred LINKAGE LPPSUC !LINK 208 8 LPPPRED !LINK 209 9 LPPPREV !LINKAGE 210 10 LNCLINK !LINKAGE 0 0 211 11LNPOUT $212 14 LNPFOLLOW $213 15DPSPTR LINKAGE LNPPRECEDE $214 16DPSPTR LINKAGE LNPINTO $215 17DPSS HEAD LNCHEAD !LINKAGE 0 0 216 18LPPFIRST !LINK 217 21 LPPLAST !LINK 218 22 LBPEMPTY $219 23 LIPCARDINAL $220 24 LNPCLEAR $221 25 simulation.atr/ 949799728 500 100 100644 660 ` /*Cim_atr*/ SIMULATION SIMSET simset.atr FILE simfile.atr SIMENVIR simenvir.atr &NCSIMSET SIMSET simset.atr XNCSIMULATION !SIMSET 0 0 222 2LPSzzsqs PROCESS LPSMAIN zzmain_program LPPCURRENT !PROCESS 223 5 LRPTIME $224 6 LNCPROCESS !LINK 0 0 225 7LPSzzsqssuc PROCESS LPSzzsqspred PROCESS LRSzzevtime LBSzzterminated_process LBPIDLE $226 10 LBPTERMINATED $227 11 LRPEVTIME $228 12 LPPNEXTEV !PROCESS 229 13 LNPactivat $230 14DBSREAC DPSX PROCESS DCSCODE DRST DPSY PROCESS DBSPRIO LNPHOLD $231 15DRSt LNPPASSIVATE $232 16 LNPWAIT $233 17DPSS HEAD LNPCANCEL $234 18DPSx PROCESS LNCzzmain_program !PROCESS 0 0 235 19 LNPACCUM $236 22NRSA NRSB NRSC DRSD