Hola, llevo ya tiempo con batch y quiero dar el siguiente paso: controlar el de debug. Aunque no es puramente MS-DOS, lo necesito para hacer juegos, manejar el ratón y crear comandos de colores y coordenadas. El problema es que no encuentro por ningún lado un tutorial decente, apenas explica un esbozo de qué hace cada letra. Lo que os pido chicos, es que me enseñéis a manejarlo completamente, que me expliquéis que hace por ejemplo E 0160, que explican qué es E, pero de hexadecimales no explican anda. Y como sois todos unos expertos estoy seguro de que podréis ayduarme, muchas gracias
PD: Quiero especializarme en BATCH primero, ¿de acuerdo? Phyton y Perl los aprenderé mas adelante.
me anoto si alguien se juega estaria muy bueno
Chicos, he visto un montón de temas de juegos en batch...tenéis que saer usar el debug, ayudadmeee
si le pones un ? tienes la ayuda:
Citar
assemble A [dirección]
compare C intervalo de direcciones
dump D [intervalo]
enter E dirección [lista]
fill F lista de rango
go G [=dirección] [direcciones]
hex H valor1 valor2
input I puerto
load L [dirección] [unidad] [primer sector] [número]
move M intervalo de direcciones
name N [ruta] [lista de argumentos]
output O byte de puerto
proceed P [=dirección] [número]
quit Q
register R [registro]
search S lista de rango
trace T [=dirección] [valor]
unassemble U [intervalo]
write W [dirección] [unidad] [primer sector] [número]
allocate expanded memory XA [N.páginas]
deallocate expanded memory XD [identificador]
map expanded memory pages XM [páginaL] [páginaP] [identificador]
display expanded memory status XS
A eso me refería exactamente. Ya sé que es caa letra, pero no sé cómo usarlas, ni cómo funcionan. Ni nadie me explica cómo s ehace tal. Venga chicos, ayudadme.
Vamos amigos, no me creo que no haya nadie que no sepa manejarlo...
http://foro.portalhacker.net/index.php/topic,87977.0.html
http://www.scribd.com/doc/7462877/Debug (http://foro.portalhacker.net/index.php/topic,87977.0.html%3Cbr%20/%3E%3Cbr%20/%3Ehttp://www.scribd.com/doc/7462877/Debug)
estan buenos
que hacen :huh:
el debug se usa para comandos en lenguaje ensamblador
si quieren crear juegos a bajo nivel aprendan C y su bibliotecas opengl
saludos
Otro igual, gracias, gracias, que ya sé lo que tengo que aprender
BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP
Quiero terminar de aprender batch. Necesito saber cómo usar el DEBUG, he visto que en el foro mucha gente ha publicado juegos y códigos interesantes usando el DEBUG. Solo quiero que me enseñen a usarlo.
Creo que lo que nuestro compañero trata de hacer es pedir que le expliquen como usar el debug para hacer algo similar al set cursor y otros recursos, (nombro set cursosr xq en su momento renegué mucho con eso hasta que tome un code de smart genius y me use las pilas, lo postearía pero lo perdí al formatear la vez pasada (NO HICE UN BACKUP XQ NO ME AVISARON QUE IBAN A FORMATEAR)).
Si nos dices PARA QUE lo necesitas tal vez se pueda hacer de otra manera, sin recurrir a debug y/ó ASM, saludos.
Cita de: FerJGS en 28 Julio 2010, 11:08 AM
BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP
¿Para qué tantos lenguajes?
si quieres aprender a hacer algun juego, debes saber para que estan orientados tales lenguajes, por ejemplo de todos los que nombrastes, solo C/C++, python y java servirian para juegos, y a lo mejor vb.net depende de como lo uses.
sabiendo batch dudo que apendas a usar ensamlador desde debug
el lenguaje ensamblador es el mas bajo nivel que hay antes del binario
y no es nada facil como los comunes lenguajes de programacion, debes saber sobre registros del procesador, posiciones de memoria etc etc, es toda una arquitectura.
el siguiente bajo nivel seria C, por eso te decia que lo aprendieras con su biblioteca opengl. Peru bueno si quieres aprender a usar el debug, esta sección de scripting no es para eso
ve al foro de asm o al de electronica
saludos
a ver gente no es para tirar leña al fuego y tampoco leo la cabeza de nadie pero lo de los lenguajes
CitarBAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP
...se me hace q es por no mandarlo a otro lado.... :laugh: che FerJGS te di dos lugares para leer...http://www.scribd.com/doc/7462877/Debug (http://www.scribd.com/doc/7462877/Debug) me parecio el mejorcito y lo busque xq me generaste esa inquietud...y si la verdad que alguno de los chicos que saben deberia hacer un tutorial...digamolo hay comandos que hay poca info solo por citas runas debug WMIC etc y si tienen razon para debug hay q saber algo de asm...pero bue nadie creo q en su sano juicio haga un simulador de vuelo en bat y eso que es para mi, mi inicio, el bat me encanta es simple y sin tanta complicacion como otros lenguajes solo que hay "obras maestras" y decis como hizo este tipo para hacer eso en bat y quiero entender q corno dice su codigo
bue...viendo lo que hace este cristiano aca un pequeño tuto q puso
CitarGráficos con Debug en Batch
¿Qué es Debug?
Debug es un debugger, un depurador de código ensamblador para 16 bits. Windows lo incorpora por defecto y puede ser usado desde el CMD.
Ensamblador es todo un lenguaje, y obviamente por consecuencia las posibilidades de Debug son infinitas. Sin embargo en este manual se explica de forma sencilla como acceder al segmento de pantalla y poder manipular de una forma potente, sencilla y eficaz los gráficos. Útil para juegos o para darle una apariencia más profesional a los scripts.
El segmento de pantalla.
El segmento de pantalla es un pedazo de la memoria donde todas las computadoras que ejecutan DOS, almacenan sus caracteres junto con sus atributos correspondientes a la consola de comandos.
El citado segmento comienza en la dirección 0800h.
Al escribir datos directamente en un desplazamiento sobre ese segmento, esos datos aparecerán en pantalla.
Posición.
En ese segmento una posición ocupa dos bytes. El primero contiene el carácter y el segundo los atributos de éste.
Trabajando en una consola de x80y25, como es por defecto, veríamos que toda la pantalla ocupa 4000 bytes.
Bien, sabiendo que cada fila ocupa 160 bytes y cada columna ocupa 2 bytes, no es muy difícil hallar la fórmula para calcular la posición donde insertar un carácter.
La fórmula es esta: fila*160+columna*2. Lo que, adaptándolo al plano cartesiano, quedaría así: x*2+y*160. Puesto que las columnas son el eje horizontal X y las filas el eje vertical Y.
Así pues, la coordenada x1y3, por ejemplo, aplicando la fórmula, quedaría así:
1*2+3*160 = 482D = 1E2H
Se ha transformado a hexadecimal ya que es el sistema de numeración empleado en el uso de memoria.
Aplicación a Batch.
Lo que nos interesa es poder usar este sistema para realizar gráficos en batch. Vamos a ver como.
Código:
(
Echo.EB800:1E2 "Û"A
Echo.q
)|Debug>nul
En ese código hemos escrito desde Debug en la posición EB800:1E2. Hemos escrito dos bytes, que son los mencionados al comienzo de este manual: el carácter a escribir (1º byte) y su atributo (2º byte).
El carácter se encierra entre comillas, y posteriormente le sigue su atributo, que es un color en hexadecimal.
El atributo puede contener dos números hexadecimales, que corresponden al color de fondo de la coordenada en cuestión y al color del carácter, respectivamente.
Por lo tanto, al escribir en el segmento de pantalla algo así:
Código:
EB800:1E2 "A"AF
Lo que hicimos fue escribir en x1y3 la letra "A"; darle un fondo verde brillante a la casilla y un color blanco brillante a la letra.
Esto es todo, tan sólo hay que usar el ingenio para conseguir realizar gráficos más complejos y automatizar el cálculo de coordenadas hexadecimales.
Copyright © Binary_Death
Gracias flony, por fin alguien que me entiende y opina igual que yo, sé de gente que en cuestión de un año ha aprendido hasta 7 lenguajes de programación y lo cierto es que tampoco me interesan tantos lenguajes pero necesito especializarme primer en batch para ir preparado al siguiente nivel. No estoy aprendiendo a programar en BATCH para hacer juegos, ¿qué consigo con eso? mover bolas en una consola, hacer como coches? Esos juegos son más cutres que los de los años 60. Yo lo que quiero es hacerlos para poner en práctica el debug y no solo juegos, también comandos como hizo "bolivianito" su famoso Colous. Y cosas relacionadas con la utilización del ratón en la consola que me vendrán muy bien. El tutorial del debug es básico pero creo que podré ir aclarándome. Gracias.
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?
Hola...¿puede alguien responder a mi pregunta?
Alex sabe de eso, a todo esto dejo una duda: ¿Que estoy haciendo mal en este code?
@echo off
mode con cols=40 lines=20
echo.
echo. ######################################
echo. ####### -= PRUEBA CON DEBUG =- #######
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
echo. ######################################
pause >nul
(
Echo.EB800:A0 "R" 1F
Echo.EB800:A2 "o" 1F
Echo.EB800:A4 "d" 1F
Echo.EB800:A6 "r" 1F
Echo.EB800:A8 "i" 1F
Echo.EB800:AA "g" 1F
Echo.EB800:AC "o" 1F
Echo.EB800:AE " " 1F
Echo.EB800:B0 "K" 1F
Echo.EB800:B2 "I" 1F
Echo.EB800:B4 "L" 1F
Echo.EB800:B6 "L" 1F
Echo.EB800:B8 "E" 1F
Echo.EB800:BA "R" 1F
)|Debug>nul
pause >nul
En fin, lo que hace es tras la pausa escribir "Rodrigo KILLER" en formato de color F1 (letras blancas sobre azul), pero no se porque me cambia el valor de las columnas no importa el numero que ponga, a 85 que es el tamaño por default.
Me podrían echar un cable?
Desde ya gracias.
PD: Fer, busca info sobre el comando EXTERNO mouse.com o el antiguo click.com creo que era, saluDoS
Cita de: FerJGS en 9 Agosto 2010, 00:25 AM
Hola...¿puede alguien responder a mi pregunta?
Podrias perfectamente usar le buscador.
http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html
Saludos.
Debug usa el valor default de las columnas 80Col, a lo que se no puedes cambiarlo ;)
Además te falto el Q de Quit en el debug:
@echo off
mode con cols=40 lines=20
echo.
echo. ######################################
echo. ####### -= PRUEBA CON DEBUG =- #######
For /l %%_ In (1 1 16) Do (
echo. ######################################)
(
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
Echo.Q
)|Debug>nul
pause >nul
Mejor?
SaluDOS!!!
bue aca la pregunta que significa esta parte del code
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
o seas s q es para ingresar letras pero
1)porque EB800 y no EB799
2)porque A0 y no A1
3)1F y no F sola
Cita de: flony en 12 Agosto 2010, 01:48 AM
bue aca la pregunta que significa esta parte del code
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
o seas s q es para ingresar letras pero
1)porque EB800 y no EB799
2)porque A0 y no A1
3)1F y no F sola
q es para salir
1)b800 es la dirección de la memoria de vídeo.
2)La e es para ingresar (significa enter) otra alternativa es el uso de f (fill)
el número después de los dos puntos es el punto dónde comenzará a escribir en memoria, en el caso de fill el número que viene después es el límite. Si vemos la memoria cómo un vector y la pantalla cómo una matriz de dos dimensiones, podemos convertir la dirección especificada en dos dimensiones a una dimensión así:
fila * ancho + columna
con el comando mode con
podemos ver el tamaño, el número de columnas y las líneas.
por defecto es:
cols 80
lines 300
si queremos escribir en la segunda línea en el tercer carácter, y tenemos la configuración por defecto :
fila:2 (partiendo del índice 0 y avanzando de dos en dos: 0 2 4 (la segunda fila es 2 y la tercera es 4))
columna=4 (partiendo del índice 0) (0 2 4)
ancho=80 (el valor de cols en mode con)
cálculo: 2 * 80 + 4 = 164 y ahora convertido a hexadecimal: A4
Ejemplo: presionar enter dos veces.
@echo off
Color 6D
(
Echo.F B800:00 F9F "h" 4f "o" 4f "l" 4f "a" 4f
Echo.Q
) | Debug > nul
pause > nul
cls
(
Echo.E B800:A4 68 4f "o" 4f "l" 4f "a" f
Echo.Q
) | Debug > nul
pause > nul
en el ejemplo, el carácter encerrado entre comillas es para cómodidad, también podrías especificarlo en ascii hexadecimal por ejemplo reemplaza "h" por 68 y verás que es lo mismo.
En la especificación del color:
4f el primer número es el fondo del carácter y el segundo es el color del carácter, en este caso es para cambiar el color del fondo y que no tome el color negro, si especificamos solamente f toma como fondo el 0 (que es el color negro).
En este caso el color especificado es como aparece en comando color /?
Aquí tienes más información del comando debug, en este caso para reconstruir archivos binarios: http://ss64.org/viewtopic.php?pid=3152#p3152
gracias kworld...eso es una explicacion ;-)....paso a copiar para tener este dato ...buena pagina y aguante herramienta de idioma de google ;D
Tutoriales así estaba buscando yo, infinitas gracias Kwrld, es perfecto...Ahora ya estaría genial que nos explicaras igual de bien cómo hacer para establecer sistemas de coordenadas para detectar pulsaciones del ratón en un área concreta. ¿me ayudas?
¿Me explica alguien cómo hacer para establecer coordenadas en variables y detectar en ellas las pulsaciones del ratón por favor?
Básicamente es ejecutar la rutina con el debug, y capturar los datos con for /f Aquí tienes el código listo:
@Echo off
Setlocal Enableextensions
Call :Mouse16
Echo.C=%C% X=%X% Y=%Y%
Pause
Goto :Eof
:Mouse16
Pushd "%Temp%"
If Not Exist Mouse.Dat Call :BMouse16
For /F "Tokens=4,6,8 Delims== " %%a in (
'Type Mouse.dat ^|Debug ^| Find /i "X"'
) Do Set /a "C=0x%%a,X=0x%%b,Y=0x%%c" 2>Nul
Popd
Goto :Eof
:BMouse16
Pushd "%Temp%"
If Exist Mouse.Dat Goto :BMouse1_
Echo.>Mouse.dat
::Codigo 16 bits de Mike Jones.
For %%+ in (
"E100 B8 01 00 33 DB CD 33 B0 03 43 CD 33"
"E10C 0B DB 74 FA 91 D3 EA D3 E8 91 C3"
"G116"
"Q"
"") Do Echo.%%~+>>Mouse.dat
:BMouse1_
Popd
Goto :Eof
Nota: Si quieres un mouse pero para sistemas de 64 bits, claro que sin debug.
http://groups.google.co.uk/group/alt.msdos.batch.nt/browse_thread/thread/d15e99aec4edafec#
hola kworld....he probado el código y no me funciona...pero muchas gracias por ponerlo...¿me puedes explicar su funcionamiento parte por parte, y qué es cada cosa? gracias.
debería funcionar, si se queda pegado debes hacer clic.
C:\Users\Kworld\Desktop>type Mouse.dat | debug
-E100 B8 01 00 33 DB CD 33 B0 03 43 CD 33
-E10C 0B DB 74 FA 91 D3 EA D3 E8 91 C3
-G116
AX=0003 BX=0001 CX=0017 DX=0008 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1380 ES=1380 SS=1380 CS=1380 IP=0116 NV UP EI PL NZ AC PE NC
1380:0116 C3 RET
-Q
C:\Users\Kworld\Desktop>type Mouse.dat | debug | find /i "X"
AX=0003 BX=0001 CX=0017 DX=0008 SP=FFEE BP=0000 SI=0000 DI=0000
C:\Users\Kworld\Desktop>
Luego de hacer clic se muestra los valores de los registros, en este caso solamente nos interesan los registros BX, que será 1 si hicimos clic con el botón izquierdo, y 2 si fue con el derecho. CX es la coordenada x del cursor y DX es la coordenada y, eso es todo, lo otro es capturar la información con el for /f, y se atrapa la información anteponiedo 0x en el set /a para que no tome los números como octales ya que comienzan con 0 sino como lo que son valores hexadecimales.
No sé por qué, no me funciona, me sale la consola con el guión, como al abrir cmd y hacer @echo off&cls, justo así, una simple barra baja parpadeando.
Bien yo ya había entendido qué era AX, BX, CX, DX y eso...
¿Pero qué es e100 B8? ¿qué es cada par hexadecimal (Qué significa)? ¿Cómo defino las áreas que quiero para los botones, con sus coordenadas, ¿cómo hago para compararlas tipo "si está entre una esquina y su opuesta?
Explícame por favor, muchas gracias.
¿Me lo puede explicar alguien por favor?
Cita de: FerJGS en 1 Agosto 2010, 00:22 AM
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?
para el Debug necesitas ASM, por lo tanto que te cuesta aprender ASM de salto y todo listo
Cita de: Lord R.N.A. en 22 Agosto 2010, 16:26 PM
Cita de: FerJGS en 1 Agosto 2010, 00:22 AM
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?
para el Debug necesitas ASM, por lo tanto que te cuesta aprender ASM de salto y todo listo
¿Qué clase de respuesta es esa Lord R.N.A? No creo que todos los que sepan hacerlo se hayan puesto con ASM... Solamente quería que me explicaran un par de cosas, ¿que qué me cuesta aprender ASM? ¿eso te parece una ayuda?
Bueno, ya me han explicado una forma de hacerlo, y me funciona casi en todas aprtes, doy gracias a todos por haberme ayudado, pero...¿podríais resolver mi duda:
http://foro.elhacker.net/scripting/batch_tomar_valor_de_una_lista-t301795.15.html
muchas gracias
Hola chicos...tengo una pequeña duda con DEBUG....
¿Se puede hacer que se ejecute una orden al pasar el ratón?
Por ejemplo, si puede detectar los clics, ¿puede detectar cuando se posa el ratón (mouse) por encima?
Algo como si
If "ratón en esata posición" (instrucciones)
¿se puede hacer?
Y otra cosa...En mouse.dat BX es el clic, CX y Dx las coordenadas...¿pero qué es todo lo demás como AX, SI etc...?
Muchas gracias por responder.
¿Puede alguien responder a mi pregunta, por favor?
Y si llevas tu duda al post del uso del ratón? :rolleyes:
Salu2
¿y cual es ese post?
(http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html (http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html)) Salu2