С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
что-то у меня icmpecho не запускается.
у тебя регистры identify правильно возвращаются?
Код:LD A,021H LD (P0_CMD),A ; Stop\Abort, Set Reg Page 0, release RSTDRV pin (reset off) LD HL, TITLE2 CALL MSG ; show message acts as delay for RTL8019 init LD HL,(P0_RBCR0) LD A, H CP 70H ; RTL8019 specific constant RET NZ ; RTL8019 not found LD A, L INIT0: CP 50H ; RTL8019 specific constant RET NZ ; RTL8019 not found
telnetd таки - да, работает странно: весь демон уходит в астрал (перестает пинговаться) по первому нажатию кнопки в telnet-клиенте.
Странно, но у меня такого не происходит - работает в обе стороны.
Под VirtualBox (на "честной" винде не проверял) emu при переключении пропорций в 2:1 такие корки мочит...Виндовозное окно остается где и было (маленькое в центре экрана, его можно двигать но картинки в нем нет), а директиксное - в левом верхнем углу экрана (без рамки, повер всех окон шпарит, двигать его понятно нельзя и портится канвас всех окон которые оказались под ним). На ПринтСкрин оно не попадает: показать не могу.
Последний раз редактировалось Error404; 25.06.2011 в 11:11.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Насчёт цвета - пока не ясно. К сожалению, пока нет ни одной программы для Арго. Вот если бы кто-то нашёл кассету, которая была в стандартной поставке, там был эмулятор ZX-Spectrum, вот тогда бы и с цветом яснее стало, и с портами. Агро достаточно сильно от Юниора отличается, в железном плане.
Это откуда кусок кода? В etherdev.c такого нет. RCBR это же просто счётчик, или он после сброса имеет указанное в коде значение?
Не надо показывать, я виделТакое происходит, если директ-х-шное окно выходит за пределы виртуального экрана (т.е. достаточно окно эмулятора за границу десктопа подвинуть). Возможно, это фича виртуализации, как с ней бороться - я не знаю.
---------- Post added 26.06.2011 at 00:51 ---------- Previous post was 25.06.2011 at 23:40 ----------
Добавил identify, icmpecho заработало.
---------- Post added at 00:51 ---------- Previous post was at 00:51 ----------
Добавил identify, icmpecho заработало.
Это я добавил, отсебятинка.В etherdev.c меня заинтриговало такое назначение регистров, описывающих буфер отправки и кольцо приема:
Оно конечно работает, но нафига? Почему не от нуля? Памяти то 16к.Код:#define ETH_TX_PAGE_START 0x40 /* 0x4000 Tx buffer is 6 * 256 = 1536 bytes */ #define ETH_RX_PAGE_START 0x46 /* 0x4600 Rx buffer is 26 * 256 = 6656 bytes */ #define ETH_RX_PAGE_STOP 0x60 /* 0x6000 */
И самое интересное - все писатели (я с полдюжины проектов на RTL пересмотрел на разных контроллерах) копируют к себе такую инициализацию (у всеx функция init практически один-в-один).
Последний раз редактировалось Error404; 26.06.2011 в 09:17.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
В-общем, httpd в EMU.EXE не заработало тоже (как и telnetd).
Может, посмотришь? Мыслей пока нет.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Могу предложить новый метод отладки всего этого хозяйства.
Я скрестил исходники telnet+uIP с моими исходниками эмуляции rtl8019as. И отлаживал уже в IDE.
Как и следовало ожидать, ничего не заработало. Кроме того, грузит процессор чуть ли не на 100%, но это, в принципе, понятно. Стал копать, выяснил, что в определённый момент отправка/приём деактивируется и больше не активируется. И момент этот - в самом конце приёма пакета. Если, однако, после приёма происходит отправка, то отправка/приём снова реанимируется. Получается, если приняли пакет, и ничего не отправили, то вилы.
А получается это, потому-что включение страницы регистров ты сделал так:
А в оригинале было так:Код:#define ETHERDEV_REG_PAGE(page) ETHERDEV_REG_WRITE(CR,(page << 6)|RD2|STP)
Поэтому, после того, как я сделал:Код:#define ETHERDEV_SELECT_REG_PAGE(page) \ do \ { \ etherdev_reg_write(CR, etherdev_reg_read(CR) & ~(PS1 | PS0)); \ etherdev_reg_write(CR, etherdev_reg_read(CR) | (page << 6)); \ } while(0)
всё заработало и у меня.Код:#define ETHERDEV_REG_PAGE(page) ETHERDEV_REG_WRITE(CR,(page << 6) | (ETHERDEV_REG_READ(CR) & 0x3F))
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)