Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!lll-crg!nike!ucbcad!ucbvax!DDATHD21.BITNET!XBR2D96D From: XBR2D96D@DDATHD21.BITNET (Knobi der Rechnerschrat) Newsgroups: net.lang.mod2 Subject: M2 for the Amiga Message-ID: <8608051449.11336@ur-cayuga.rochester.arpa> Date: Tue, 5-Aug-86 12:15:53 EDT Article-I.D.: ur-cayug.8608051449.11336 Posted: Tue Aug 5 12:15:53 1986 Date-Received: Wed, 6-Aug-86 02:05:51 EDT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 145 Hallo, I've posted this a few day ago, but it seems it had problems to get through the net. So I decided to post it again together with msome more problems AND solutions. ----------------------------------------------------------------------------- We've just obtained the TDI M2 compiler for the Commodore AMIGA. Together with the documentation came some papers concerning known problems in release "1.01A". This papers seem to be incomplete or at least ambigious, so I've got some questions: 1.) There have been some postings of fixes for TDI on this list in the past. I've missed most of them. Could someone resend them to me ? 2.) The files AMIGAX.sym, CIAHardware.sym and CustomHardware are corrupted. Do we need them and if yes, how can we obtain them. Simply recompile the DEF's will cause severe problems I suppose. 3.) This papers say that TDI is available via COMPUSERVE 75026,1331. If I try to access them via VAX-PSI and DATEX-P (German PSN) I reach a Username/Password prompt. I don't know both and I suppose that I'm not supposed to use the COMPUSERVE ID this way. Can someone tell me how to use it? 4.) TDI announced a fix diskette in it's documentation. Is this diskette already available ? Our local dealer hasn't got it jet. 5.) we (I) are especially interested in the RealInOut and LongInOut modules announced with the diskette. Are they available on the net? 6.) playing with the Amiga tools I discovered that the CreatePort and DeletePort routines from PortUtils had both horrible bugs. I've corrected both routines according to the new ROM-Kernel Manual Part 2/App. F. The fix is enclosed with this message. 7.) The SerialDevice.Def file misses some of the SerFlags (e.g. 7Wire). The SerStatus bits also didn't look like Bits for a SerialDevice (PaperOut ???) Regards Martin Knoblauch TH-Darmstadt Dept. Physical Chemistry 1 Petersenstrasse 20 D-6100 Darmstadt West-Germany BITNET: --------------New PortUtils.MOD------------------------------------------------ IMPLEMENTATION MODULE PortUtils; (** ------------------------------------------------------------------ Commodore Amiga port utilities module (c) Copyright 1985, 1986 TDI Software, Inc. All Rights Reserved ------------------------------------------------------------------ **) (* VERSION FOR COMMODORE AMIGA Original Author : Paul Curtis, TDI Software, Inc. 16-Dec-85 Version : 0.00a 16-Dec-85 Paul Curtis, TDI. Original 0.00b 03-Aug-86 Martin Knoblauch, TH-Darmstadt. Corrected according to ROM-Kernel Man. 2 *) (*$S-*)(*$T-*) FROM SYSTEM IMPORT TSIZE, BYTE, ADR, ADDRESS; FROM Lists IMPORT NewList; FROM Nodes IMPORT NTMsgPort; FROM Ports IMPORT MsgPortPtr, MsgPort, MsgType, AddPort, RemPort; FROM Memory IMPORT AllocMem, FreeMem, MemPublic, MemClear, MemReqSet; FROM Tasks IMPORT FindTask, MyTask, AllocSignal, FreeSignal, AnySignal, NoSignals, SIGNAL; PROCEDURE CreatePort(VAR name: ARRAY OF CHAR; pri: INTEGER): MsgPortPtr; (* create a message port. *) VAR mp: MsgPortPtr; signal: SIGNAL; BEGIN signal := AllocSignal(AnySignal); IF signal = NoSignals THEN RETURN MsgPortPtr(0); END; mp := AllocMem(TSIZE(MsgPort),MemReqSet{MemPublic, MemClear}); IF ADDRESS(mp) = 0 THEN FreeSignal(signal); RETURN MsgPortPtr(0); END; WITH mp DO WITH mpNode DO lnPri := BYTE(pri); IF name[0] = 0C THEN lnName := ADDRESS(0); ELSE lnName := ADR(name); END; lnType := BYTE(NTMsgPort); END; mpFlags := BYTE(PASignal); (* made more symbolic than BYTE(0) *) mpSigBit := BYTE(signal); mpSigTask := FindTask(MyTask); END; IF name[0] # 0C THEN AddPort(mp); ELSE (* added ELSE to IF *) NewList(ADR(mp.mpMsgList)); END; RETURN mp; END CreatePort; PROCEDURE DeletePort(port: MsgPortPtr); (* delete a message port *) BEGIN WITH port DO WITH mpNode DO IF lnName # ADDRESS(0) THEN (* "=" changed into "#" !!! *) RemPort(port); END; lnType := BYTE(0FFH); (* unknown to Exec *) mpMsgList.lhHead := NIL; END; FreeSignal(SIGNAL(mpSigBit)); END; FreeMem(port,TSIZE(MsgPort)); END DeletePort; (*$P-*) END PortUtils.