; This is my first robot. All the comments below are in spanish (my natal language). Enjoy it! ; Éste es mi primer robot. Todos los comentarios posteriores están en español. ¡Que lo disfrutes! ; José R. Brox, from Málaga, Spain #CONFIG ENGINE=3 ; 3 puntos de motor #CONFIG SHIELD=3 ; 3 puntos de escudo #CONFIG WEAPON=0 ; #CONFIG HEATSINKS=0 ; #CONFIG MINES=0 ; #CONFIG ARMOR=2 ; 2 puntos de armadura #CONFIG SCANNER=0 ; #Def NumDisparos #Def NumMetros #Def CuentaVecesMs opo 13, 0 ; Sit£a la torreta en el centro opo 24, 0 ; Desactiva el escudo int 5 ; En fx almacena el ID del robot !recorriendo opo 11, 92 ; Velocidad de crucero mov NumDisparos, 0 ; Pone NumDisparos a 0 int 11, fx ; En ex almacena el tiempo transcurrido desde que un proyectil impact¢ a nuestro robot cmp ex, 25 ; Compara el valor anterior con 20 (+5 de la instrucci¢n) jle !escudo ; Si es menor o igual, salta al procedimiento "escudo" mov NumMetros, [9] ; Asigna los metros recorridos totales a NumMetros shl NumMetros, CuentaVecesMs ; Da una medida de los metros viajados desde el £ltimo giro cmp NumMetros, 120 ; Compara los metros viajados con 120 jge !giro25 ; Si es mayor o igual, salta al procedimiento "giro25" ipo 7, ax ; SCAN cmp ax, 500 ; Compara la distancia generada por el SCAN con 500 jle !dispara ; Si es menor o igual, entonces salta al procedimiento "dispara" opo 17, 64 ; Ancho de SCAN 128 grados (180) jmp !ChoqueConPared ; En otro caso, salta a "ChoqueConPared" !ChoqueConPared int 12 ; Cantidad de colisiones cmp fx, 1 ; Compara el resultado anterior con 0 je !giro25 ; Si son iguales, salta al procedimiento "giro25" jmp !recorriendo ; En otro caso, salta al procedimiento "recorriendo" !dispara inc Numdisparos cmp Numdisparos, 5 ; Compara el n£mero de disparos con 15 (3*5) jge !recorriendo ; Esto sirve para que no se quede disparando infinitamente ipo 2, dx ; Almacena la temperatura en dx cmp dx, 250 ; Compara el valor anterior con 250 jge !recorriendo ; Si es mayor o igual, salta al procedimiento "recorriendo" xor dx, dx ; dx=0 opo 15 ; ­Fuego! opo 12, 2 ; Gira la torreta 2 grados opo 15 ; opo 12, 2 ; opo 15 ; opo 13, 0 ; Devuelve la torreta a su posici¢n original opo 17, 6 ; Cambia el ancho de escaneado a 12 grados (16.9) jmp !recorriendo ; Salta al procedimiento "recorriendo" !escudo opo 24, 1 ; Activa el escudo xor dx, dx ; dx=0 opo 11, 100 ; Sube la velocidad al 100% jmp !giro25 ; Salta al procedimiento "giro25" !giro25 opo 14, 25; giro de 25 grados (35.2) Set NumMetros, 0 ; Pone a 0 los metros recorridos Inc CuentaVecesMs int 13 ; Pone el contador de colisiones a 0 opo 24, 0 ; Desactiva el escudo jmp !dispara #END