Blog | Archivo | Contacto | Administración |
¿Cómo hacemos para mantener a Habi alejado de todos sus proyectos durante sus vacaciones?
¡Falso! No es euclídeo. Bloques flotantes, agua infinita, lava de dinámica dudosa... Pero es parte de su encanto.
A punto casi ya de cumplirse el año de permanencia que tengo con Ya.com y de mudarme a pastos más verdes me he puesto a revisar el router que me dieron en su día. Un tal SMC7908A-ISP (delegado en Arcadyan, otra del grupo Accton).
El firmware está capado y aparte es pésimo. La interfaz es lenta y mala, no hay opciones para casi nada, y tiene graves errores; como enviar peticiones DHCP en capa ATM estando la línea ADSL no sincronizada, y desincronizarla si en 4 segundos no ha obtenido su IP, ambas cosas de forma asíncrona, con lo que puede estar días sin coger línea (sin ayuda externa).
Sin embargo, el hardware es estupendo: un Infineon Danube (MIPS doble núcleo a 333 Mhz, temas analógicos para ADSL, VoIP, etc.), 64MB de RAM, 4 de Flash, un Realtek RTL8306SD para Ethernet y MII y su Atheros AR2417 para WiFi. Y un conector MiniPCI sin soldar, pero presente. Si queréis fotos, las tenéis estupendas aquí.
Dentro de su interfaz podemos abrir páginas no accesibles pero que no se han molestado en eliminar. Y es a partir de este hecho que hoy he decidido echar un ojo.
Partiendo del último firmware (v0.10.016 - 2009/07/29), extrayendo las 6 partes de las que se compone, desencriptando las 1 y 2 (núcleo firmware e interfaz web respectivamente) y descomprimiendo 1-4, nos encontramos en el caso de la 2 un bonito sistema de archivos PFS relativamente normal en routers. Una vez extraídos todos los ficheros, aquí tenéis la lista de los accesibles como interfaz web para los que queráis experimentar (\www\doc\):
accesscontroladd.stm adsl.stm adslst.stm adsl_main.stm adsl_para.stm adsl_status.stm advanced_user.stm advanced_user_p.stm arcor_network.stm arcor_spec.stm atmint_ya.stm atmpvc_ya.stm auto_upg.stm auto_upg2.stm blocked.htm changelanguage.htm clone.stm country_css.css ddns.stm ddns_main.stm dns_proxy.stm err_gen.stm firewall.stm firewallst.stm firewalltemp.stm firewall_a.stm firewall_d.stm firewall_mac.stm firewall_main.stm firewall_rule.stm firewall_rule_a.stm firewall_spi_h.stm firewall_u.stm forward_check.stm function.stm help.stm hwoption.stm igd.xml igd_l3f.xml igd_osf.xml igd_wcic.xml igd_wec.xml igd_wic.xml igd_wpc.xml index.stm ipsec_editsp.stm iptv_main.stm isp.stm js_tree.js l2tp_a.stm lan.stm lan_main.stm linegraph.class login.stm loginerr.stm loginpserr.stm menu-hid.stm menu.css menu.stm msg.js my_function.txt
|
my_function3.css nat.stmnatst.stm nattemp.stm nat_m.stm nat_main.stm nat_off.stm nat_sp.stm nat_table.stm nat_v.stm no_link.txt pingtest.stm pin_code.stm pppoeint.stm pptp_a.stm production.stm qos.stm qos_clsmap.stm qos_editcls.stm qos_main.stm qos_stats.stm qstatus_main.stm qwireless_id.stm route.stm route_main.stm route_tbl.stm routine2.txt routine_data.js r_mort.stm r_rip.stm save_ok.htm setupa.stm setupa_brief.stm setupa_main.stm setupa_top.stm setupq6_main.stm setupw.stm setupw_0.stm setupw_1.stm setupw_2.stm setupw_2_ya.stm setupw_main0.stm setupw_main1.stm setupw_main2_ya.stm setupw_menu.stm setupw_top.stm setup_dns.stm setup_q6.stm snmp.stm snmpst.stm snmptemp.stm snmp_community.stm snmp_main.stm snmp_trap.stm status.stm status_main.stm system.stm system_c.stm system_f.stm system_i.stm system_main.stm system_p.stm
|
system_r.stm system_remote_mgmt.stm system_t.stm telephony_voip.stm tl.stmtl_main.stm tools_backup.stm tools_restore.stm tr69.stm tree.js undoc_upgrade.stm upnp.stm upnp_main.stm usb_fsrv.stm usb_fsrv_part_f.stm usb_fsrv_tree.stm usb_ftp_f.stm usb_ftp_server.stm usb_ftp_tree.stm usb_main.stm usb_modem.stm usb_pr_server.stm usb_wftp_browse.stm usb_wftp_server.stm usb_wftp_tree.stm user_define.stm verinfo.txt voice_quality_test.stm voip.stm voip_account_edit_ya.stm voip_account_ya.stm voip_advanced.stm voip_call_allocation.stm voip_extension_in.stm voip_extension_out.stm voip_function.txt voip_isdn_msn.stm voip_main.stm voip_numbers_act.stm voip_num_plan.stm voip_num_plan_nr.stm voip_phone.stm voip_status.stm vpn.stm vpn_conn.stm vpn_function.txt vpn_main.stm v_lan.stm v_lan_a.stm wait.stm wait0.stm wan.stm wan_main.stm wireless.stm wirelessst.stm wirelesstemp.stm wireless_1x.stm wireless_country.stm wireless_e.stm wireless_id.stm wireless_mac.stm wireless_main.stm wireless_wds.stm |
Particularmente, me parecen útiles:
advanced_user.stm -> para hacer login como administrador, necesario para ciertas funciones; una de las pocas conocidas por ahí fuera.
wireless_country.stm -> se le pueden poner los parámetros de Japón, por ejemplo, y ganar dos bandas WiFi extras. OJO: supuestamente no es legal en Europa, hay leyes de radiofrecuencia, etc.
r_mort.stm -> nos muestra la tabla de reglas de enrutamiento vigentes (por fin).
atmint_ya.stm -> con esto podemos poner el tipo de conexión que queramos, y mandar a tomar por saco las que vienen predefinidas.
route_tbl.stm -> podemos definir nuestras reglas de enrutamiento. Con esto ya puedo tener WiFi y VoIP enrutadas al viejo router de Telefónica configurado para acceder como MER y conectarme a través suya.
También hay cosas que sobran, como lo de Arcor (el Ya.com de Alemania; incluyendo pin_code.stm) y cosas que no deberían estar realmente (como production.stm (valores de fábrica)).
La parte realmente inesperada ha sido en la carpeta de imágenes; entre otras cosas hay logos: de SMC, de Ya.com y de... ¡Pirelli! ¿Tendrá Pirelli routers como éstos personalizados? Prefiero no saberlo. Por otro lado, el firmware ha sido compilado en C bajo un entorno Unix. Nada que no me esperase.
Y con esto me conformo de momento. En cuanto me cambie de compañía y me den mi nuevo router pasaré a la fase 2: bus pirate sobre J2 (tiene un puerto serie a 3.3V) y trastear mandando mis firmwares a RAM. En teoría se podría usar OpenWrt, ya os contaré.
Me he puesto a recopilar información sobre ese post que debo de proyectos fallidos en los que intervenían otras personas, y más que post se merecería un blog aparte. Centrémonos y resumamos: sólo en los que hice de programador, sólo los que me parezcan significativos, sólo los que no valieron para nada.
Archen 4
Hace mucho, mucho tiempo, antes de tener el Turbo Pascal para DOS (y por tanto, hecho en Quick Basic 4.5) nos encontramos con un tal Archen 4. Como bien podéis deducir, el proyecto es un intento de Archon, juego ya barato de por sí. Éste proyecto lo empecé con el tal D0 que mencioné en su día en este post.
El juego tiene listas todas las rutinas gráficas y de movimiento, es medio isométrico y tiene su propio editor de dibujos. Sin embargo me cansé (de varias cosas), y mandé el proyecto a tomar viento. Sin programador lógicamente murió; pero aún perdura ese código fuente y los gráficos de los bichos que hicimos, no sabría decir qué cosa es más cutre que la otra.
Horace goes to Carrefour (to buy a bottle of eSky)
Este es el único proyecto en el que intervino alguna de mis sobrinas en el que llegase a hacer algo de código. De nuevo, resuelto gráficos, movimiento y sonido.
Y de regalo, mutaciones de Guybrush que nunca valieron para nada porque no me hicieron ni una sola fase de animación.
CdPlayer
Esto es una utilidad que hice con Antonio, y está terminada. Es un reproductor de CDs para DOS, reconoce discos, mantiene una biblioteca con nombres, imágenes, etc. Pensamos enviarlo a la PCManía o algo, pero al final no hicimos nada. Tampoco hubiese valido de nada, pues en breve llegó el Windows 95. Si os lo preguntáis, el dibujo de la cadena lo hice con el 3D Studio para DOS.
Intento de AG
En este caso está terminada la programación, incluyendo sonido y música. Yo lo programé en un par de tardes, Nacho hizo las fases de animación del personaje y Hernán miró. Dada nuestra vaguería, ahí quedó.
Intento de remake del Caos
De nuevo, grafista que no hace al menos una fase de animación. De nuevo, proyecto hundido en la miseria. Una pena, había gráficos muy chulos de V.
Álbum
De esta utilidad ya hemos hablado en varias ocasiones. Cataloga imágenes en colecciones y éstas en álbumes. Tiene posibilidades multimedia (diapositivas, sonido, música, editor integrado, etc). Ya hemos contado que no logramos venderlo por poco a un barbas de la UNED. Y respondiendo a Abj: fuimos a aquellos lúgubres sótanos para trastear con un ordenador que tenía escaner, para ver si podíamos añadirle esa funcionalidad al programa.
Empezó como un proyecto propio para que Hernán se montase sus comics (así se llamaba). Cuando L. lo vio se le pusieron los ojos con el símbolo del dólar y ahí que empezamos a desarrollarlo y cambiamos el copyright de "Producciones informáticas 'El puercoespín tuerto' " a "Delta Software" y le pusimos un iconito chulo de un libro y en el instalador este Jocker:
Y de regalo el puercoespín secuestrado, ojiparcheado y escaneado:
Oqqo
Cutre clon del Clementine (CCC). Ya que al final iba a cargar yo solo con todo el código, acabé pasando. Sin embargo aproveché el tema gráfico para un programa de cálculo de drenaje.
Y tiene unos créditos muy chulos con tres iconos de pitufos con nuestros nombres dando vueltas alrededor de una seta.
¡Ya vale!
Y también me acuerdo de otras pero no creo que merezcan estar en esta lista, como el M.I.G.O.W. (Most Infumable Game On the World, estrategia a lo Master of Orion), un gestor documental para la GE que hice con Antonio (y que tampoco valió para nada), u otros como La Morgue que ya tienen su propio post. Pero por el bien de la humanidad hay que parar. Hale ya hice el post que queríais; ahora comentad, malditos.
Nueva funcionalidad para el blog. Evitemos la necromancia ajena.
☞ Mola ☜
¡Viva Dadá!
A veces encuentro copias de seguridad de mis antiguos programas en los lugares más insospechados. Aquí tenéis un trío infame de la cosecha 1999-2001.
Busca piñas
Barato clon del busca minas. Sólo que en lugar de minas hay piñas. Con un algoritmo iterativo para descubrir las piñas. Y hasta ahí todo lo bueno que puedo decir de él, me temo.
¿Editor 2?
O al menos se llama así la carpeta; por dentro es como todos, Project1.dpr y Unit?.pas. En fin.
En su momento estaba orgulloso de este programa, a pesar de estar bastante mal hecho el analizador sintáctico. Es un editor de texto matemático, una mezcla de Word (más cutre) con LaTex (¡menos cutre!) para que os hagáis una idea. Totalmente configurable los símbolos, abreviaturas (autoexpandibles), funciones y palabras reservadas.
Renderiza a HTML, así puedo ver todo en un control TWebBrowser sin tener que currarme uno yo, y me sale gratis la exportación a la web.
S.U.M.E.
Intento de Derive, pero para enteros modulares. Trabaja con enteros normales, modulares y vectores y matrices de los mismos. Además de las funciones aritméticas clásicas incorpora otras interesantes para teoría de códigos, como pruebas de primalidad, phi, factorización, ...
Al contrario que el anterior, este sí está bien hecho por dentro. Es poderoso, aunque como todo lo que hago, lo tengo en el garaje y nunca lo usé.
Facilis descensus Averni:
Noctes atque dies patet atri janua Ditis;
Sed revocare gradum superasque evadere ad auras,
Hoc opus, hic labor est.
Más bibliotecas para el PrintMaster / NewsMaster. Con su correspondiente regla 34.
Llevaba mucho tiempo con una idea en la cabeza: hacerme mi propio emulador de PCs obsoletos, empezando en XT. La virtualización por tanto no me vale; DosBox es inexacto y sólo apto para juegos de AT en adelante, y siempre y cuando se ciñan a la BIOS en determinadas cosas; PicoXT está seriamente limitado. Así que aprovechando estas pequeñas vacaciones que me he cogido me he puesto a ello.
Y he empezado a hacer pruebas con distintas ROMs. Para la BIOS de un XT hay aparentemente una de dominio público archiconocida, cuyo mensaje de copyright es "Generic Turbo XT Bios, (c) Anonymous", la cual es una taiwanesa que desensambló un tal Ya'akov Miles en 1987. Y también hay una modificación de la misma, por Jon Ρetrosky, llamada Turbo XT BIOS 2.0.
Para la emulación del disco duro del XT está la típica de Western Digital wdbios.rom, y para el video la et4000.bin (de una Tseng Labs ET-4000). También hay algunas sintéticas hechas para QEmu y tal, pero poco se ve por ahí volcado de hardware real.
Así que vamos a ver que tengo por ahí guardado, y vamos a ir volcando esas ROMs con el siguiente programita (ese A86 bajo DOS, hacía tiempo) que nos hace un snapshot del primer mega:
Mov Dx, Offset Nombre Xor Cx, Cx Mov Ah, 03C Int 021 Mov Bx, Ax Xor Dx, Dx Mov Bp, Dx Mov Cx, 32768 Bucle: |
Mov Ah, 040 Mov Ds, Bp Int 021 Add Bp, 0800 Jnz Bucle Mov Ah, 03e Int 021 Int 020 Nombre Db 'Prueba.bin',0 |
Un XT de verdad:
Este es un XT casi de verdad. 8088, 4.77 Mhz, venía originalmente con aquella CGA ATI de la cual ya he hablado en otros posts. La placa de abajo son simplemente los buses (todo va a través del ISA, pues va a su velocidad nativa) y a la derecha implementado un puerto serie, otro paralelo y el controlador de disco.
La placa del medio es la memoria, con su interfaz a bus. 640KB.
La de arriba contiene el ordenador: lógica, procesador, BIOS, PIC, PIT, DMA, PPI y las salidas de este último al teclado y altavoz.
Desgraciadamente la BIOS de esta placa ha sido la única ROM que no he podido extraer. No me arranca, el problema está en la placa de arriba; no sé si es el procesador o la ROM (la cual es ROM de máscara, no una EPROM, no la puedo leer sin más en una tarjeta de red).
Mi viejo XT:
Anda que no tiene años y ha sufrido abusos esta placa, pero es una campeona. Con todos ustedes, mi viejo PC. Un Inves X30Plus, realmente otro nombre para un ACER XTPlus. El microprocesador y buses de memoria (RAM y BIOS) son de 16 bits (doble de rápidos que los del PC original), pero no es un 8086. Es un NEC V30 (versión de SONY), el cual es como tres veces más rápido que un 8086 a su misma velocidad, y compatible con el 80186 (como un 286 sin modo protegido). Sin embargo nada de misma velocidad, este va a 10 MHz. Nótense las dos EPROMS, para las partes altas y bajas respectivamente de las palabras, que implementan la BIOS. Además tiene RTC, la interfaz de teclado es compatible con XT y AT, admite disqueteras de alta densidad, etc. Pero es un XT.
Desensamblando su BIOS precisamente es donde me he dado cuenta del tema ACER. Sabía del chipset, que tenían tachada la marca, pero no sabía que la BIOS fuese la misma. Aún así, hay una cadena "INVESTRONICA S.A." en un sitio inocuo.
Este PC me duró hasta la universidad, cuando me hice con un Pentium a 120Mhz. Tuve que parchear juegos como el Monkey Island 2 para que no detectase que no era un 286+, e incluso algún gestor de memoria exótico que paginaba a disco emulando EMS. Pero me duró lo que no está escrito.
Gráficas:
La de arriba es una auténtica joyita, es la que venía con mi PC. Un clon de una OTI VGA-800 basada en un OAK-037C. De nuevo, ROM partida; compatible con buses de 8 y 16 bits.
¿Por qué una joyita? Por sus emulaciones. Llamando la Int 10 con Ah=FF y Al='C', 'E', 'V', 'M' convertía la tarjeta en una CGA, EGA, VGA o MDA+Hercules ajustando las frecuencias y scans por hardware. Y su emulación era tan buena que funcionaban juegos como MoonBugs, Digger, etc.
La de abajo es más típica, una ATI VGA-800 (¿casualidad?) integrada por Compaq. Tiene los mismos chips que una VGA Wonder XL (ATI 28800-4, etc). Y es una de las pocas que, siendo de 16 bits, funcionan en un bus de 8. Por eso está aquí.
HDs:
Por último, necesitamos ROMs de las controladoras de disco XT.
Las de XT son las de la izquierda, no sé para qué he subido las otras del trastero. En fin. La de arriba es una Everex EV-340, compatible con muchos discos duros distintos, y que estuvo en mi viejo PC algún tiempo (a pesar de tener integrado su propia controladora en placa madre) junto con un disco duro de 42MB.
La de abajo es del primer PC que hemos visto, una LCS-6210D. Bastante limitadilla, pero interesante no obstante.
Las otras dos son para ATs (nótese el bus ISA de 16 bits) y no incluyen BIOS. Para quien le interese, una Seagate ST08A y una Western Digital WDAT-140, respectivamente.
Hale, ya tengo ROMs para trastear un rato con mi proto-emulador.
Los Habis también petan.