DIRECTORY BSimModel, FS USING [StreamOpen], IO USING [Backup, char, Close, GetChar, GetLineRope, GetReal, Put, PutF, real, RIS, rope, STREAM], Rope USING [Cat, Equal, Fetch, Find, Length, ROPE, Substr]; BSimModelImplInput: CEDAR PROGRAM IMPORTS FS, IO, Rope EXPORTS BSimModel = BEGIN ReadProcessFile: PUBLIC PROC [ fileName: Rope.ROPE ] RETURNS [ p: REF BSimModel.ProcessParams ] = { s: IO.STREAM = FS.StreamOpen[fileName]; ReadReal: PROC [ s: IO.STREAM ] RETURNS [ r: REAL ] = BEGIN DO SELECT (c _ s.GetChar[]) FROM ',, ' , '/, 'x, 'X, '\n => NULL; ENDCASE => {s.Backup[c]; RETURN[s.GetReal[]]}; ENDLOOP; END; c: CHAR; p _ NEW[BSimModel.ProcessParams]; p.info _ NIL; WHILE (c _ s.GetChar[]) = '* DO line: Rope.ROPE = s.GetLineRope[]; eqPos: INT = line.Find["="]; p.info _ Rope.Cat[p.info, "*", line, "\n"]; IF line.Length>1 AND line.Fetch[0]#' AND eqPos>0 THEN { label: Rope.ROPE = line.Substr[len: eqPos]; rest: IO.STREAM = IO.RIS[line.Substr[start: eqPos+1]]; SELECT TRUE FROM label.Equal["W/L", FALSE] => { p.dutW _ ReadReal[rest]; p.dutL _ ReadReal[rest]}; label.Equal["BetaFudgeFactor", FALSE] => p.betaFudgeFactor _ ReadReal[rest]; ENDCASE => NULL; }; ENDLOOP; s.Backup[c]; FOR i: INT IN [0..BSimModel.nBasicBSimParams) DO FOR j: INT IN [1..6] DO p.params[i][j] _ ReadReal[s]; ENDLOOP; ENDLOOP; p.toxMicrons _ ReadReal[s]; p.tempC _ ReadReal[s]; p.vddVolts _ ReadReal[s]; s.Close[]; }; WriteProcessFile: PUBLIC PROC [ fileName: Rope.ROPE, p: REF BSimModel.ProcessParams ] = { s: IO.STREAM = FS.StreamOpen[fileName, $create]; s.Put[IO.rope[p.info]]; FOR i: INT IN [0..BSimModel.nBasicBSimParams) DO FOR j: INT IN [1..6] DO s.Put[IO.real[p.params[i][j]], IO.char[IF j<6 THEN ', ELSE '\n]]; ENDLOOP; ENDLOOP; s.PutF["%g,%g,%g\n", IO.real[p.toxMicrons], IO.real[p.tempC], IO.real[p.vddVolts]]; s.Close[]; }; END. CHANGE LOG. McCreight, April 22, 1985 10:56:32 am PST, created. Chen, July 17, 1985 11:15:12 am PDT, recompiled in Cedar6.0. ΚFile: BSimModelImplInput.mesa Copyright (C) 1985 by Xerox Corporation. All rights reserved. Last Edited by: McCreight, April 22, 1985 10:56:32 am PST Sweetsun Chen, July 22, 1985 8:14:04 pm PDT Κ^˜Jšœ™J™>™J™)Icode™+—J˜šΟk ˜ Jšœ ˜ Jšœœ˜JšœœGœœ˜bJšœœ#œ ˜;J˜—š œœœœœœœ ˜JJš˜J˜š Οnœœœœœœ˜cJšœœœœ˜'J˜š žœœœœœœ˜5Jš˜š˜šœ˜Jšœœ˜ Jšœœ˜.—Jšœ˜—Jšœ˜J˜—Jšœœ˜Jšœœ˜!Jšœ œ˜ šœ˜Jšœ œ˜"Jšœœ˜Jšœ+˜+šœœœ œ˜8Jšœ œ˜+Jš œœœœœ˜6šœœ˜šœœ˜Jšœ2˜2—šœœ˜(Jšœ#˜#—Jšœœ˜—Jšœ˜—Jšœ˜—Jšœ ˜ šœœœ!˜0šœœœ˜Jšœ˜Jšœ˜—Jšœ˜—Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜—J˜š žœœœœœ˜YJšœœœœ˜0J˜Jšœœ˜šœœœ!˜0šœœœ˜Jš œœœœœœ˜AJšœ˜—Jšœ˜—Jšœœœœ˜TJšœ ˜ Jšœ˜J˜—Jšœ˜—J˜šœœ˜ J˜3J˜