Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!mit-eddie!uw-beaver!ubc-cs!van-bc!rsoft!mindlink!a186 From: a186@mindlink.UUCP (Harvey Taylor) Newsgroups: comp.sys.amiga.tech Subject: Re: Create Port Message-ID: <409@mindlink.UUCP> Date: 23 Jul 89 17:27:23 GMT Organization: MIND LINK! - British Columbia, Canada Lines: 71 Some time ago somebody was wondering about what CreatePort in Amiga.Lib _really_does. Included below is a disassembly I did with Metascope & a stub program. This method is extendable to any other functions there you are interested in... <-Harvey * * _Createport in Amiga.lib * | _CreatePort | MOVEM.L D2-D5/A2,-(A7) * Save some regs | MOVE.L $18(A7),D3 * Name | MOVE.B $1F(A7),D2 * Priority | MOVEQ #-1,D5 * Any Signal | MOVE.L D5,-(A7) | JSR _AllocSignal | MOVE.B D0,D1 | MOVEQ #0,D0 * clear top | MOVE.B D1,D0 | MOVE.L D0,D4 * copy sigbit | MOVEQ #-1,D1 | CMP.L D0,D1 * any sigbit? | ADDQ.L #4,A7 | BNE.S .L8 * If ok: | MOVEQ #0,D0 * Signal error | BRA.S .L1 * exit | .L8 | MOVE.L #$10001,-(A7) * MEMF_CLEAR|MEMF_PUBLIC | PEA $22 * Size | JSR _AllocMem | MOVEA.L D0,A2 * COPY BASE | MOVE.L A2,D5 | ADDQ.L #8,A7 * FIX STACK | BNE.S .L7 * IF OK: | MOVE.L D4,-(A7) * ELSE | JSR _FreeSignal * FREE SIGNAL | MOVEQ #0,D0 | ADDQ.L #4,A7 | BRA.S .L1 * EXIT | .L7 | MOVE.L D3,$A(A2) * INSERT LN.NAME | MOVE.B D2,9(A2) * INSERT LN.PRI | MOVE.B #4,8(A2) * INSERT LN.TYPE = NT_MSGPORT | CLR.B $E(A2) * CLEAR MP.FLAGS | MOVE.B D4,$F(A2) * INSERT MP.SIGBIT | CLR.L -(A7) | JSR _FindTask | MOVE.L D0,$10(A2) * INSERT MP.SIGTASK | TST.L D3 * IS THERE A NAME? | ADDQ.L #4,A7 | BEQ.S .L6 * IF NO: | MOVE.L A2,-(A7) * If a Name Use AddPort() | JSR _AddPort | BRA.S .L12 | .L6 | PEA $14(A2) * If no name use NewList | JSR _NewList | .L12 | ADDQ.L #4,A7 | MOVE.L A2,D0 * RETURN D0 = BASE OF MSGPORT | .L1 | MOVEM.L (A7)+,D2-D5/A2 * restore regs | RTS * * * "Like some creature from a horror film, the IC that Bill Gates called `brain damaged' refuses to die." - RE Aug/89 Harvey Taylor Meta Media Productions /// uunet!van-bc!rsoft!mindlink!Harvey_Taylor /// a186@mindlink.UUCP >X/