[net.micro.amiga] CreateExtIO and DeleteExtIO

walton%Deimos.Caltech.Edu@Hamlet.Caltech.Edu@caip.RUTGERS.EDU (02/27/86)

From: walton%Deimos.Caltech.Edu@Hamlet.Caltech.Edu

The VTBeep routines and the terminal emulator passed out yesterday in
the net refer to the routines CreateExtIO and DeleteExtIO.  Both of these
come up as undefined external references when these programs are compiled
and linked on my system, which I believe has the latest versions of all
software: version 1.1 of KickStart and Workbench and 3.03B of Lattice C.
The makefile for the terminal program refers to the initial object file
Astartup.o which was provided under Version 3.02 of Lattice C, so it
presumably compiles under that version.

Any ideas?

Steve Walton
Caltech Solar Astronomy

dillon@CORY.BERKELEY.EDU (Matt Dillon) (02/28/86)

	The routines don't exist.  I believe that one of the manual's has a
listing of them, though.  

			-Matt

stan@amiga.UUCP (Stanley Shepard) (03/01/86)

In article <1394@caip.RUTGERS.EDU> walton%Deimos.Caltech.Edu@Hamlet.Caltech.Edu@caip.RUTGERS.EDU writes:
>From: walton%Deimos.Caltech.Edu@Hamlet.Caltech.Edu
>
> .. VTBeep ... refer(s) to the routines CreateExtIO and DeleteExtIO.  
>Both of these come up as undefined external references when these programs 
>are compiled and linked on my system, (1.1 System 3.03B Lattice) 
>
>Any ideas?
>

The problem is that the object modules were not distributed in amiga.lib
the soource for these modules can be found in Vol 2 of the ROM Kernal
manual.  The following is a brief code fragment excercised from the
aforementioned source.

(bunches of includes)

(title block)

struct IORequest *CreateExtIO(ioReplyPort,size)
struct MsgPort *ioReplyPort;
LONG size;
{
    struct IORequest *ioReq;
    if (ioReplyPort == 0) return( (struct IORequest *) 0);

    ioReq = (struct IORequest *)AllocMem(size, MEMF_CLEAR | MEMF_PUBLIC);

    if (ioReq == 0) return( (struct IORequest *) 0);

    ioReq->ioMessage.mn_Node.ln_Type = NT_MESSAGE;
    ioReq->ioMessage.mn_Node.ln_Pri = 0;
    ioReq->ioMessage.mn_ReplyPort = io_ReplyPort;

    return(ioReq);
}

(another title block)

DeleteExtIO(ioExt,size)
struct IORequest ioExt;
LONG size;
{
    ioExt->io_Message.mn_Node.ln_Type = 0xff;
    ioExt->io_Device = (struct Device *) -1;
    ioExt->io_Unit = (struct Unit *) -1;

    FreeMem (ioExt, size);
}


I hope the above helps.

						Stan Shepard
						Commodore-Amiga