Вот лучше бы так опа и дать ссылку на сетевой софт для спека...
Вот лучше бы так опа и дать ссылку на сетевой софт для спека...
Пара ламерских вопросов.
Если я правильно понимаю, порты NemoIDE доступны только из ПЗУ в режиме dos. Тогда прога для работы с сетевой картой должна сидеть вместо, например, glukpen.rom, так? В эмуляторе-то я чего хошь на какие угодно порты повесить могу, а вот как на реале будет?
Если порты (при каких-то условиях) доступны и из области 4000-FFFFh, то как удобнее всего перевести скомпилированный бинарник в нечто, загружаемое на реальном компьютере?
Экий вы быстрый.
Сначала сделаем стек - возьмем готовый uIP. Там надо обеспечить всего-то 2 подпрограммы: оправить буфер и принять буфер. На это уйдет год, не меньше (тут я ориентируюсь на свою скорость разработки ). Затем надо адаптировать библиотеку BSD-сокетов. Это еще год минимум. А уж тогда - заходите.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
не, NemoIDE в оригинале как раз в режиме DOS не работает, но на части современных компов это изменено, и можно работать везде. Как это реализовано в эмуляторах я не знаю.
---------- Post added at 14:57 ---------- Previous post was at 14:53 ----------
имхо SNA образ проще всего для современных компов на FPGA, для более старых - TRD, его понимают все без исключения
Последний раз редактировалось Black_Cat; 24.02.2011 в 15:30.
SNA щас можно запустить токо на ZXEvo, т.к. остальные новые компы не имеют NemoBus и NemoIDE, а более старые - KAY, ZXM-Phoenix, Scorpion - понимают пока токо TRD
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А ты как определяешь длину входящего Ethernet-фрейма? Т.е. сколько читать из TAP. Из-за того, что фрейм Ethernet II не имеет в пакете поля длины, а только поле тип, то не понятно сколько читать. В мануалах пишут "конец фрейма определяйте по концу несущей". Откуда взяться несущей в ТAP-адаптере?
В QEMU чтобы определить сколько вычитывать они, как я понял, лезут в тело IP-пакетов, в заголовки (т.е. делают на уровне Layer2 что положено делать уже на Layer3). Т.е. если у меня в IP-стеке глюк, и значения в заголовке не соответствует реальной длине пакета, то в эмуляторе все развалится нафиг. Или нет?
Как ты это порешал?
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
А никак Сколько считал, столько и есть. Как я понял, TAP-драйвер выдаёт весь пакет за одно чтение. Ему ведь тоже приходит уже полный пакет. На уровне интерфейса минидрайвера пакеты не делятся. Это рутеры в сети могут поделить длинный TCP/IP пакет на более короткие, но это будут вполне полноценные TCP/IP пакеты.
Если вопрос о технике программирования в асинхронном режиме, то количество считанных байт выдаёт функция GetOverlappedResult.
И где ты там нашёл, что QEMU лезет в сам пакет? Вся работа с TAP-драйвером описана в tap_win32.c.
Ну вот, полгода спустя собрался с духом и сваял программку для работы с TAP. В примере она делает обслугу TAP-адаптера и генерирует ICMP-reply (по аналогии с тем, что у b2m, только на Паскале) - можно пинговать программку из-под Винды обычным ping-ом (IP-адрес и маска TAP-а естественно должна быть в этой же подсетке, что и у программки).
Во вложении исходники и TAP-драйвер.
Можно использовать как пример методики эмуляции Ethernet в своих эмуляторах, если кому то это интересно (чего по активности в этом треде не скажешь ).
Последний раз редактировалось Error404; 12.05.2011 в 19:34.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Теперь что бы понять как это заюзать нужно будет перетащить всё с Паскаля в Студию на VС для экспериментов .
Теперь что можно с этим сделать... на машинке, спрятанной за роутером, уже есть лан-подсеть и выдан адрес 192.168.0.100, я поставил ещё и драйвер TAP (создался новый интерфейс), запускаю TestEth.exe и выбираю его, при нажатии на кнопку "Start Process Packets" (влияние полей ввода "IP address" и "Mask" на что-либо не увидел), TAP интерфейсу "даётся кабель" и присваивается адрес 169.254.154.131, после чего я с этой машины могу этот адрес (169.254.154.131) пинговать, а при попытке пропинговать с соседнего компа (lan адрес 192.168.0.222), тот комп в котором есть ТАР (+ lan адрес 192.168.0.100) отвечает, что недоступен (Ответ от 192.168.0.100: Заданный узел недоступен.).
Какие варианты доступа вообще можно придумать, кроме как по IP, и как издалека, вообще же в будующем, интересует такой сетевой выход, который со стороны эмулятора должен откликаться как "узел" DECNet.
P.S. "Enumerator" под в Вин7 судя по всему не отработал (выпадающее меню Connections пустое, в ХРхе всё есть).
Последний раз редактировалось anasana; 13.05.2011 в 00:22.
LodeDome: http://lodedome.no-ip.com/lodedome.php - Lode Runner 2010 Game Archive. KryoFlux, FluxEngine, Gotek boards
Ищу пересылкой любые (неисправные/дефективные/некомплектные) платы и узлы корпуса Электроники-85 (МС-0585); дискеты 5,25".
По_трошки: Поиск, УКНЦ, БК0010, МС1502, П-н 128, Вектор 06Ц, C64, MAC LC475, Львов ПК-01, ДВК-3Ш (ВМ2, ВМ3, MX, MY, КСМ, КЦГД, КТлК, MY4)
Контакты: скайп: ana-sana, почта: [email protected], email: [email protected], TG: https://t.me/adesodesa
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)