RR-Net per Software auf MAC-Empfang Einstellen

  • RR-Net per Software auf MAC-Empfang Einstellen

    Hallo Zusammen,

    ich stecke gerade etwas mit meiner RR-Net-Programmierung fest.
    Wie folgt will ich meine MAC-Adresse einstellen und dann das System (RR-Net im Chameleon) so einrichten, dass es nur Broadcasts und Nachrichten an meine MacAdresse empfängt:

    Quellcode

    1. void init_card(void){
    2. POKE(0xde02,0x14); //Write Package Page Pointer: write_page pp_self_ctl, $0055 ; $0114, reset chip
    3. POKE(0xde03,0x01);
    4. POKE(0xde04,0x55);
    5. POKE(0xde05,0x00);
    6. POKE(0xde02,0x58); //Write Package Page Pointer: $0158, write mac address
    7. POKE(0xde03,0x01);
    8. POKE(0xde04,mac1);
    9. POKE(0xde05,mac0);
    10. POKE(0xde02,0x59); //Write Package Page Pointer: $0158, write mac address
    11. POKE(0xde03,0x01);
    12. POKE(0xde04,mac3);
    13. POKE(0xde05,mac2);
    14. POKE(0xde02,0x5a); //Write Package Page Pointer: $0158, write mac address
    15. POKE(0xde03,0x01);
    16. POKE(0xde04,mac5);
    17. POKE(0xde05,mac4);
    18. POKE(0xde02,0x04); //Write Package Page Pointer: write_page pp_rx_ctl, $0d05 ; $0104, accept individual and broadcast packets
    19. POKE(0xde03,0x01);
    20. POKE(0xde04,0x05);//nur broadcast und ich
    21. POKE(0xde05,0x0d);//
    22. POKE(0xde02,0x12); //Write Package Page Pointer:write_page pp_line_ctl, $00d3 ; $0112, enable rx and tx
    23. POKE(0xde03,0x01);
    24. POKE(0xde04,0xd3);
    25. POKE(0xde05,0x00);
    26. }
    Alles anzeigen


    Leider funktioniert das nicht. Broadcast empfange ich zwar, aber Nachrichten direkt an meine Macadresse nicht.

    Wenn ich

    Quellcode

    1. POKE(0xde04,0x05);//nur broadcast und ich
    2. POKE(0xde05,0x0d);//


    durch

    Quellcode

    1. POKE(0xde04,0xFF);//nur broadcast und ich
    2. POKE(0xde05,0xFF);//


    ersetzte funktioniert es zwar, aber mir ist schon klar, dass ich jetzt einfach alles empfange und mir so den Puffer unnötig voll haue.

    Hat jemand einen Tip für mich? :?:
    CIA and Co have reached the C64 - see the proof in the Hack Attack Trailer
  • CodeNet verwendet cfg_RxCTL = #$0F05, also auch "Multicast" noch angeschaltet.

    EDIT: Bei CRCerror, Runt, Extradata sind die Ethernet-Frames eh kaputt, daher kann man diese Bits getrost immer aus lassen. Und "Promiscuous" empfängt halt alle Frames unabhängig von der Adresse. Das wollen wir ja auch nicht, also bleibt das auch aus.
  • Hi Fröhn,

    wenn ich Dich richtig verstanden habe meinst Du ich soll

    Quellcode

    1. POKE(0xde04,0x05);//nur broadcast und ich
    2. POKE(0xde05,0x0d);


    durch

    Quellcode

    1. POKE(0xde04,0x05);//nur broadcast und ich
    2. POKE(0xde05,0x0f);


    ersetzen?
    Ich habs mal versucht. Und sicherheisthalber auch

    Quellcode

    1. POKE(0xde04,0x0f);//nur broadcast und ich
    2. POKE(0xde05,0x05);


    In allen fällen bekomme ich zwar die Braodcasts rein, aber nicht die Nachrichten die direkt am meine MAC-Adresse gehen. ?(

    Fröhn schrieb:

    CodeNet verwendet cfg_RxCTL = #$0F05, also auch "Multicast" noch angeschaltet.

    EDIT: Bei CRCerror, Runt, Extradata sind die Ethernet-Frames eh kaputt, daher kann man diese Bits getrost immer aus lassen. Und "Promiscuous" empfängt halt alle Frames unabhängig von der Adresse. Das wollen wir ja auch nicht, also bleibt das auch aus.
    CIA and Co have reached the C64 - see the proof in the Hack Attack Trailer
  • Zaadii schrieb:

    Hi Fröhn,

    wenn ich Dich richtig verstanden habe meinst Du ich soll

    Quellcode

    1. POKE(0xde04,0x05);//nur broadcast und ich
    2. POKE(0xde05,0x0d);


    durch

    Quellcode

    1. POKE(0xde04,0x05);//nur broadcast und ich
    2. POKE(0xde05,0x0f);


    ersetzen?
    Ich habs mal versucht. Und sicherheisthalber auch

    Quellcode

    1. POKE(0xde04,0x0f);//nur broadcast und ich
    2. POKE(0xde05,0x05);

    Nein, $DC04 = #$05 und $DC05 = #$0F ist schon richtig. Der CS8900 will Little Endian, also Low-Byte zuerst.
  • Benutzer online 1

    1 Besucher