NEW AUTO 3,1 *-------------------------------------- U1.Init lda CONF.SLOT asl asl asl asl sta Slotn0 tax lda /PP.ID sta PacketPagePTR+1,x lda #PP.ID sta PacketPagePTR,x lda PacketPageDATA+1,x cmp /CS8900A.DEVID bne .9 lda PacketPageDATA,x cmp #CS8900A.DEVID beq .1 .9 sec rts .1 lda CONF.SLOT pha lda /PP.REVISION Get Revision# of ths chip... sta PacketPagePTR+1,x lda #PP.REVISION sta PacketPagePTR,x lda PacketPageDATA+1,x pha lda PacketPageDATA,x pha lda #U1.Name pha lda /U1.Name pha >LDYAI VEDRIVE.NICOK jsr PrintFYA ldx Slotn0 lda /PP.RxCTL sta PacketPagePTR+1,x lda #PP.RxCTL sta PacketPagePTR,x lda /PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA sta PacketPageDATA+1,x lda #PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA sta PacketPageDATA,x lda /PP.MAC sta PacketPagePTR+1,x lda #PP.MAC sta PacketPagePTR,x lda CONF.SRCMAC+1 sta PacketPageDATA+1,x lda CONF.SRCMAC+0 sta PacketPageDATA,x lda /PP.MAC+2 sta PacketPagePTR+1,x lda #PP.MAC+2 sta PacketPagePTR,x lda CONF.SRCMAC+3 sta PacketPageDATA+1,x lda CONF.SRCMAC+2 sta PacketPageDATA,x lda /PP.MAC+4 sta PacketPagePTR+1,x lda #PP.MAC+4 sta PacketPagePTR,x lda CONF.SRCMAC+5 sta PacketPageDATA+1,x lda CONF.SRCMAC+4 sta PacketPageDATA,x lda /PP.LineCTL sta PacketPagePTR+1,x lda #PP.LineCTL sta PacketPagePTR,x lda /PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT sta PacketPageDATA+1,x lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT sta PacketPageDATA,x clc rts *-------------------------------------- U1.READ php sei ldx Slotn0 lda /PP.RxEvent sta PacketPagePTR+1,x lda #PP.RxEvent sta PacketPagePTR,x lda PacketPageDATA+1,x ldy PacketPageDATA,x and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt beq U1.READWRITE.9 lda RTDATA+1,x discard RxStatus lda RTDATA,x lda RTDATA+1,x get RxLength sta ZPBufCnt+1 eor #$ff sta ZPnCnt+1 lda RTDATA,x sta ZPBufCnt eor #$ff sta ZPnCnt ldx Slotn0 lda ZPBufPtr+1 pha ldy #0 .2 inc ZPnCnt bne .3 inc ZPnCnt+1 beq .8 .3 lda RTDATA,x sta (ZPBufPtr),y iny inc ZPnCnt bne .4 inc ZPnCnt+1 beq .8 .4 lda RTDATA+1,x sta (ZPBufPtr),y iny bne .2 inc ZPBufPtr+1 bra .2 .8 pla sta ZPBufPtr+1 plp clc rts *-------------------------------------- U1.READWRITE.9 plp sec rts *-------------------------------------- U1.WRITE php sei ldx Slotn0 lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL sta TxCMD+1,x lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL sta TxCMD,x lda ZPBufCnt+1 sta TxLength+1,x eor #$ff sta ZPnCnt+1 lda ZPBufCnt sta TxLength,x eor #$ff sta ZPnCnt lda /PP.BusST sta PacketPagePTR+1,x lda #PP.BusST sta PacketPagePTR,x lda PacketPageDATA+1,x ldy PacketPageDATA,x bit /PP.BusST.Rdy4TxNOW beq U1.READWRITE.9 ldx Slotn0 ldy #0 .1 inc ZPnCnt bne .2 inc ZPnCnt+1 beq .8 .2 lda (ZPBufPtr),y sta RTDATA,x iny inc ZPnCnt bne .3 inc ZPnCnt+1 beq .8 .3 lda (ZPBufPtr),y sta RTDATA+1,x iny bne .1 inc ZPBufPtr+1 bne .1 .8 plp clc rts *-------------------------------------- U1.Name .PS "Uthernet V1" *-------------------------------------- DRV.U1 .PH DRV.NIC.START jmp DRV.U1.SendARP jmp DRV.U1.SendUDP DRV.U1.Rcvd php sei ldx DRV.BLK.Slotn0 lda /PP.RxEvent sta PacketPagePTR+1,x lda #PP.RxEvent sta PacketPagePTR,x lda PacketPageDATA+1,x ldy PacketPageDATA,x and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt beq DRV.U1.9 lda RTDATA+1,x discard RxStatus lda RTDATA,x lda RTDATA+1,x get RxLength sta DRV.FrameSize+1 eor #$ff sta DRV.nCnt+1 lda RTDATA,x sta DRV.FrameSize eor #$ff sta DRV.nCnt >LDYAI DRV.InBuf >STYA DRV.A1L ldy #0 .2 inc DRV.nCnt bne .3 inc DRV.nCnt+1 beq .8 .3 lda RTDATA,x sta (DRV.A1L),y iny inc DRV.nCnt bne .4 inc DRV.nCnt+1 beq .8 .4 lda RTDATA+1,x sta (DRV.A1L),y iny bne .2 inc DRV.A1L+1 bra .2 .8 plp clc rts *-------------------------------------- DRV.U1.9 plp sec rts *-------------------------------------- DRV.U1.SendARP >LDYAI S.ARP >STYA DRV.FrameSize >LDYAI DRV.ARPBuf bra DRV.U1.Send *-------------------------------------- DRV.U1.SendUDP >STYA DRV.FrameSize jsr DRV.BLK.IPUDPCheksum >LDYAI DRV.UDPBuf DRV.U1.Send >STYA DRV.A1L php sei ldx DRV.BLK.Slotn0 lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL sta TxCMD+1,x lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL sta TxCMD,x lda DRV.FrameSize+1 sta TxLength+1,x eor #$ff sta DRV.nCnt+1 lda DRV.FrameSize sta TxLength,x eor #$ff sta DRV.nCnt lda /PP.BusST sta PacketPagePTR+1,x lda #PP.BusST sta PacketPagePTR,x lda PacketPageDATA+1,x ldy PacketPageDATA,x bit /PP.BusST.Rdy4TxNOW beq DRV.U1.9 ldy #0 .1 inc DRV.nCnt bne .2 inc DRV.nCnt+1 beq .8 .2 lda (DRV.A1L),y sta RTDATA,x iny inc DRV.nCnt bne .3 inc DRV.nCnt+1 beq .8 .3 lda (DRV.A1L),y sta RTDATA+1,x iny bne .1 inc DRV.A1H bra .1 .8 plp clc rts *-------------------------------------- .EP .LIST ON DRV.U1.SIZE .EQ *-DRV.U1 .LIST OFF *-------------------------------------- MAN SAVE usr/src/sys/pm.vedrive.s.u1 LOAD usr/src/sys/pm.vedrive.s ASM