Flush [LoanShark-STP]<>* Copy -c [LoanShark-STP]<> _ Rapunzel.courier Copy -c [LoanShark-STP]<> _ RapunzelServiceImpl.mesa XNSChat LoanShark -l -t exec @MakeRapunzelService Flush [LoanShark-STP]<>* Copy RapunzelServerImpl.mesa _ [LoanShark-STP]<>RapunzelServerImpl.mesa!H Copy -c [LoanShark-STP]<> _ RapunzelServerImpl.mesa Copy RapunzelServiceImpl.mesa _ LocalRapunzelServiceImpl.mesa WriteMesaPlain RapunzelServiceImpl.mesa Flush [LoanShark-STP]<>* Copy -c [LoanShark-STP]<> _ RapunzelServiceImpl.mesa XNSChat LoanShark -l -t exec Compiler RapunzelServiceImpl Compiler RapunzelDescription Zap RapunzelService.bcd Binder RapunzelService SModel/a RapunzelService Flush [LoanShark-STP]<>* Open [LoanShark-STP]<>Compiler.log!H Open [LoanShark-STP]<>RapunzelService.df!H Open [LoanShark-STP]<>MakeRapunzelService.cm!H Bringover/a [Cyan%]XDE>DF>RapunzelService.df FTP Cyan% dir/c DragonWare0.1>XDE>Rapunzel ret/c Rapunzel.courier @MakeRapunzelService Flush [LoanShark-STP]<>* Copy -c LocalRapunzelServiceImpl.mesa _ [LoanShark-STP]<>RapunzelServiceImpl.mesa!H TiogaMesa LocalRapunzelServiceImpl.mesa Open LocalRapunzelServiceImpl.mesa STPServer running/on STPServer maxConnections/4 STPServer storeAllowed/on STPServer overwriteAllowed/on ***Watch out for CCompiler bug(s)*** I'm now willing to claim that the following bugs are fixed in the 14.0 version of CCompiler, but this is left here for documention purposes. --bj, January 11, 1988 11:20:22 am PST Bug #1: SEQUENCES have bad description routines generated for these data types. What needs to be done is whenever you run CCompiler, you MUST hand edit the file RapunzelDescription.mesa and change all occurances of the string "BASE[p­]" into "p". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DescribeSeqCmd: Courier.Description = { p: LONG POINTER TO Rapunzel.SeqCmd = notes.noteSize[ SIZE[Rapunzel.SeqCmd]]; notes.noteArrayDescriptor[p, SIZE[Rapunzel.Cmd], CARDINAL.LAST]; FOR i:Rapunzel.SeqCmdIndex IN [0..LENGTH[p­]) DO notes.noteParameters[@p[i], DescribeCmd]; ENDLOOP; }; instead of: notes.noteArrayDescriptor[BASE[p­], SIZE[Rapunzel.Cmd], CARDINAL.LAST]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bug #2: CHOICES have bad description routines generated for their data types. What needs to be done is whenever you run CCompiler, you MUST hand edit the file RapunzelDescription.mesa and change all occurances of passages which define the sizes of the individual variant type (so that they do include the type word). These passages look like: sizes: ARRAY [0..#) OF CARDINAL ¬ [ SIZE[type1], SIZE[type2], ...]; they should look like: SIZE[tag1 variantRecordType], SIZE[tag2 variantRecordType], ...]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DescribeCmd: Courier.Description = { p: LONG POINTER TO Rapunzel.Cmd = notes.noteSize[ SIZE[Rapunzel.Cmd]]; sizes: ARRAY [0..2) OF CARDINAL ¬ [ SIZE[Rapunzel.PokeShortCmd], SIZE[Rapunzel.PeekShortCmd]]; notes.noteChoice[p, SIZE[Rapunzel.Cmd], LONG[DESCRIPTOR[sizes]]]; WITH variant: p­ SELECT FROM pokeShort => notes.noteParameters[@variant.pokeShort, DescribePokeShortCmd]; peekShort => notes.noteParameters[@variant.peekShort, DescribePeekShortCmd]; ENDCASE; }; instead of: SIZE[pokeShort Rapunzel.Cmd], SIZE[peekShort Rapunzel.Cmd]]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bug #3: Empty Records have bad description routines generated for these data types. What needs to be done is whenever you run CCompiler, you MUST hand edit the file RapunzelDescription.mesa and change all occurances of passages which would invoke a descripton routine for an empty record so that the descrption routine is NIL (so that the runtime won't check it). This passage looks like: pokeShort => notes.noteParameters[@variant.pokeShort, DescribePokeShortResult]; they should look like: pokeShort => notes.noteParameters[@variant.pokeShort, NIL]; In addition, the sizes ARRAY is generated wrong; it says: sizes: ARRAY [0..2) OF CARDINAL ¬ [ SIZE[pokeShort Rapunzel.Cmd], SIZE[peekShort Rapunzel.Cmd]]; but it should say: sizes: ARRAY [0..2) OF CARDINAL ¬ [ SIZE[pokeShort Rapunzel.Result], SIZE[peekShort Rapunzel.Result]]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DescribeResult: Courier.Description = { p: LONG POINTER TO Rapunzel.Result = notes.noteSize[ SIZE[Rapunzel.Result]]; sizes: ARRAY [0..2) OF CARDINAL ¬ [ SIZE[pokeShort Rapunzel.Result], SIZE[peekShort Rapunzel.Result]]; notes.noteChoice[p, SIZE[Rapunzel.Result], LONG[DESCRIPTOR[sizes]]]; WITH variant: p­ SELECT FROM pokeShort => notes.noteParameters[@variant.pokeShort, NIL]; peekShort => notes.noteParameters[@variant.peekShort, DescribePeekShortResult]; ENDCASE; }; instead of: sizes: ARRAY [0..2) OF CARDINAL ¬ [ SIZE[pokeShort Rapunzel.Cmd], SIZE[peekShort Rapunzel.Cmd]]; pokeShort => notes.noteParameters[@variant.pokeShort, DescribePokeShortResult]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ κMakeRapunzelServiceImpl.cm Copyright Σ 1986, 1988 by Xerox Corporation. All rights reserved. Bill Jackson (bj) January 11, 1988 11:36:25 am PST Willie-Sue, March 18, 1987 1:05:11 pm PST trying a new protocol without smodeling first (beware) coping with CCompiler bug(s) in XDE, on LoanShark/XDE edit as necessary: Dispatcher: Courier.Dispatcher put a new copy of the module on LoanShark/XDE chat to LoanShark/XDE and do pieces of MakeRapunzelService.cm & RapunzelService.df do the whole shebang! do some local editing STPServer stuff on LoanShark File: RapunzelService.doc - last edit: Copyright (C) 1986 by Xerox Corporation. All rights reserved. BJackson.Pa 30-Sep-86 3:15:40 Willie-Sue, October 13, 1986 12:55:40 pm PDT ΚΟ˜šœ™IcodešœB™BK™2K™)—J˜™6J˜JšœΟkœ˜Jšœœ˜,Jšœœ˜4J˜Jšœ˜Jšœ˜J˜—šœ5™5J˜Jšœœ˜Jšœ*œ˜IJ™1Jšœœ˜3—J˜šœ-™-J™J˜=J˜'Jšœœ˜Jšœœ˜4—J˜šœR™RJ™Jšœ˜J˜J˜J˜J˜J˜J˜Jšœœ˜Jšœœ˜$Jšœœ˜*Jšœœ˜.J˜—™J™Jšœ;˜;J˜AJšœ˜J˜—šœ™J™Jšœœ˜Jšœ3œ˜SJ˜'J˜"J˜—šœ™J™Jšœ˜Jšœ˜Jšœ˜Jšœ˜—J™šœ&™&Jšœ=™=Jšœ&™&K™,—J˜J˜J˜$J˜J˜΄˜Jšœ œyœi˜χ—J˜˜HšΟnœ˜'šœœœœ"˜4Jšœ˜—Jš œΠbiœœœœ˜@šœœœœ˜1J˜)Jšœ˜—J˜——J˜J˜ ˜Jš œΡbikŸœœœœ˜G—J˜H˜JšœœyœΜ˜Ψšœœœœ˜#Jšœ œ˜——J˜J˜˜Jšœœ˜A—J˜˜Hšž œ˜$šœœœœ˜1Jšœ˜—šœœœœ˜#JšœΟbœœ‘œ˜:—Jšœœœ œ ˜Ašœ œ˜J˜PJ˜PJšœ˜—J˜——J˜J˜ ˜Jšœ‘œœ‘œ˜<—J˜HJ˜˜JšœŽœ±œ@˜†˜J˜S——J˜J˜˜Jšœ:œ˜?J˜šœ:˜:šœœœœ˜#Jšœœ˜<——J˜˜šœœœœ˜#Jšœœ˜B—J˜——J˜˜Hšžœ˜'šœœœœ"˜4Jšœ˜—šœœœœ˜#JšœŸœœŸœ˜B—Jšœœœ œ ˜Dšœ œ˜Jšœ:Πbkœ˜?J˜SJšœ˜—J˜——J˜J˜ ˜šœœœœ˜#JšœŸœœŸœ˜<—J˜Jšœ:‘œ˜S—J˜HJ˜J˜J˜—…—»