NEW AUTO 3,1 *-------------------------------------- FRM.NewDDP >STYA ZPDataOutLen lda ZPDataOutLen clc adc #S.DDP2 sta ZPFrameOutLen tay lda ZPDataOutLen+1 adc /S.DDP2 sta ZPFrameOutLen+1 bne .10 cpy #60 bcs .10 ldy #60 .10 >SYSCALL2 GetMem bcs .9 >STYA ZPFrameOutPtr stx hFrameOut lda ZPFrameOutLen sec sbc #S.ETH.802.2.LLC ldy #S.ETH.802.3.LENGTH+1 sta (ZPFrameOutPtr),y lda ZPFrameOutLen+1 sbc /S.ETH.802.2.LLC dey sta (ZPFrameOutPtr),y ldx #DDP.LLC.L-1 ldy #S.ETH.802.2.LLC+DDP.LLC.L-1 .1 lda DDP.LLC,x sta (ZPFrameOutPtr),y dey dex bpl .1 lda ZPFrameOutLen sec sbc #S.ETH.SNAP ldy #S.DDP2.DATALEN+1 sta (ZPFrameOutPtr),y lda ZPFrameOutLen+1 sbc /S.ETH.SNAP dey sta (ZPFrameOutPtr),y ldy #S.DDP2.CHECKSUM lda #0 sta (ZPFrameOutPtr),y iny sta (ZPFrameOutPtr),y lda hFrameOut clc .9 rts *-------------------------------------- FRM.SendDDP ldy #S.DDP2.SRC.NET lda ETKCFG+S.ETKCFG.NetID+1 sta (ZPFrameOutPtr),y iny lda ETKCFG+S.ETKCFG.NetID sta (ZPFrameOutPtr),y ldy #S.DDP2.SRC.NOD lda ETKCFG+S.ETKCFG.NodID sta (ZPFrameOutPtr),y ldy #S.DDP2.DST.NOD lda (ZPFrameOutPtr),y beq .10 DST.NOD = 0 : any router cmp #$FF Broadcast bne FRM.SendAARP .10 ldy #S.DDP2.DST.NET lda (ZPFrameOutPtr),y iny ora (ZPFrameOutPtr),y bne .2 ldy #5 .1 lda MAC.BROADCAST,y sta (ZPFrameOutPtr),y dey bpl .1 bra FRM.Send .2 ldy #5 .3 lda ETKCFG+S.ETKCFG.MCAddress+1,y sta (ZPFrameOutPtr),y dey bpl .3 bra FRM.Send FRM.SendAARP >DEBUG *-------------------------------------- FRM.Send ldx #3 .1 lda ZPFrameOutPtr,x Get Frame Ptr & Len sta IOCTL+S.IOCTL.BUFPTR,x dex bpl .1 lda IOCTL+S.IOCTL.BYTECNT+1 bne FRM.Send.IOCTL lda #60 cmp IOCTL+S.IOCTL.BYTECNT bcc FRM.Send.IOCTL sta IOCTL+S.IOCTL.BYTECNT FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID >PUSHBI IOCTL.WRITE >PUSHW L.IOCTL >SYSCALL2 IOCTL rts *-------------------------------------- FRM.DiscardIn lda hFrameIn beq .8 stz hFrameIn >SYSCALL2 FreeMem .8 clc rts *-------------------------------------- FRM.DiscardOut lda hFrameOut beq .8 stz hFrameOut >SYSCALL2 FreeMem .8 sec rts *-------------------------------------- MAN SAVE usr/src/lib/libetalk.s.frm LOAD usr/src/lib/libetalk.s ASM