micro=font.load("SYSTEM/consola/a.pgf")

function ins(txt)
	table.insert(msdos,"    "..txt)
end

function consola_help()
ins("Formato RUN")
ins("IMG > Inicia el visor de imágenes")
ins("SND > Inicia el Reproductor")
ins("PWP > Inicia Power Point")
ins("CLD > Inicia el calendario")
ins("PTX > Inicia PlutuX")
ins("CLC > Inicia la calculadora")
ins("CAM > Inicia la Go!Cam")
ins("AGN > Inicia la Agenda")
ins("UPD > Inicia el actualizador")
ins("WFI > Inicia las aplicaciones Wi-Fi")
ins("EXP > Abre el explorador")
ins("GAME1 > Inicia Arkanoid")
ins("GAME2 > Inicia Donkey Kong")
ins("GAME3 > Inicia SpaceInvaders")
ins("GAME4 > Inicia Super Sudoku")
ins("GAME5 > Inicia BattleShip Zero")
ins("GAME6 > Inicia Snake")
ins("INFO > Inicia PSP Info")
ins("EJEMPLO: RUN CAM")

ins("")
ins("Ajustes")
ins("HOME1/HOME0 > Activa/Desactiva el botón HOME")
ins("STICK1/STICK0 > Activa/Desactiva el STICK")
ins("USB1/USB0 > Activa/Desactiva el USB")
ins("SND1/SND0 > Activa/Desactiva el Sonido")
ins("POWER1/POWER0 > Activa/Desactiva el botón Power")
ins("CPU333/CPU222/CPU111 > Modifica la frecuencia de la CPU")
ins("EXIT > Abandona la APP")
ins("SUSPEND > Suspende la PSP")
ins("STANDBY > Apaga la PSP")
ins("RESTART > Reinicia la APP")
ins("SPEED1/SPEED2/SPEED3 > Modifica la velocidad del cursor")
ins("BRIGHT1/BRIGHT2/BRIGHT3/BRIGHT4 > Modifica el brillo de la PSP")
ins("SCREEN1/SCREEN2/SCREEN3/SCREEN4 > Modifica el tiempo que tarda en aparecer el salvapantallas")

ins("")
ins("Archivos")
ins("DEL [RUTA] > Elimina un archivo")
ins("DEL *.[EXTENSIÓN] [DIRECTORIO] > Elimina todos los archivos con la extensión dada en un directorio")
ins("COPY [RUTA] > Copia un archivo al almacén (ms0:/BASE)")
ins("SEARCH [NOMBRE] > Busca todas las coincidencias existentes de archivos o directorios en la Memory Stick")
ins("SEARCH *.[EXTENSIÓN] [DIRECTORIO] > Busca archivos con una extensión dada en un directorio")

ins("EJEMPLO: DEL *.png ms0:/picture")

end


function listar(ruta,busqueda)

local busqueda=string.lower(busqueda)
local a=files.list(ruta)
if a!=nil then
	if #a>0 then
		for i=1,#a do
			directorio=string.lower(a[i].name)
			if directorio:find(busqueda)!=nil then
				return a[i].name
			else
				if a[i].directory then
					respuesta=listar(a[i].name,busqueda)
					if respuesta!=false then
						return respuesta
					end
				end
			end
		end
	end	
end
return false
end

function run()
code=code:sub(5,code:len())


if code=="IMG" then if test_rutina("Visor de imágenes") then visor(true) else visor() end end
if code=="SND" then if test_rutina("Reproductor") then reproductor(true) else reproductor() end end
if code=="PWP" then if test_rutina("Power Point") then powerpoint(true) else new_corutina("Power Point") powerpoint() end end
if code=="CLD" then if test_rutina("Calendario") then calendario(true) else new_corutina("Calendario") calendario() end end

if code=="PTX" then mini_explorador("Paint") end
if code=="CLC" then new_corutina("CalculaPSP") calculapsp() end
if code=="CAM" then new_corutina("GoCam") GOCAM() end
if code=="AGN" then new_corutina("Agenda") agenda() end
if code=="UPD" then new_corutina("Actualizar") actualizar()  end
if code=="WFI" then new_corutina("WiFi Utilities") WiFi() end

if code=="EXP" then explorador() end
if code=="GAME1" then nivel_actual=1 arka() end
if code=="GAME2" then nivel_actual=1 DKGAME() end
if code=="GAME3" then SpaceInvaders() end
if code=="GAME4" then main_sudoku() end
if code=="GAME5" then main() end
if code=="GAME6" then snkinicio() end

if code=="INFO" then informacion() end
end

function adjustr()
if code=="HOME1" then home=1 ini.write("SYSTEM/CONFIG.INI","U"..user,"home",1) end
if code=="HOME0" then home=0 ini.write("SYSTEM/CONFIG.INI","U"..user,"home",0) end
if code=="STICK1" then stick=true ini.write("SYSTEM/CONFIG.INI","U"..user,"stick",1) end
if code=="STICK0" then stick=false ini.write("SYSTEM/CONFIG.INI","U"..user,"stick",0) end
if code=="CPU333" then os.cpu(333) end
if code=="CPU222" then os.cpu(222) end
if code=="CPU111" then os.cpu(111) end
if code=="EXIT" then os.exit() end
if code=="POWER1" then power.lock() end
if code=="POWER0" then power.unlock() end
if code=="USB1" then usb.on() end
if code=="USB0" then usb.off() end
if code=="SND0" then estado_sonido=false ini.write("SYSTEM/CONFIG.INI","U"..user,"sonido",0) end
if code=="SND1" then estado_sonido=true ini.write("SYSTEM/CONFIG.INI","U"..user,"sonido",1) end
if code=="SUSPEND" then power.suspend() end
if code=="STANDBY" then power.standby() end
if code=="RESTART" then iniciando() end
if code=="SPEED1" then velocidad_puntero=1 ini.write("SYSTEM/CONFIG.INI","U"..user,"velocidad",1) end
if code=="SPEED2" then velocidad_puntero=2 ini.write("SYSTEM/CONFIG.INI","U"..user,"velocidad",2) end
if code=="SPEED3" then velocidad_puntero=3 ini.write("SYSTEM/CONFIG.INI","U"..user,"velocidad",3) end
if code=="BRIGHT1" then screen.brightness(35) end
if code=="BRIGHT2" then screen.brightness(50) end
if code=="BRIGHT3" then screen.brightness(65) end
if code=="BRIGHT4" then screen.brightness(80) end
end

function comandos()
if code:sub(1,4)=="DEL " and files.exists(code:sub(5,#code)) then files.remove(code:sub(5,#code)) end
if code:sub(1,6)=="DEL *." and files.exists(code:sub(11,#code)) then 
	a=files.list(code:sub(11,#code))
	if #a>0 then 
		for i=1,#a do 
			if files.ext(a[i].name)!=nil then if string.upper(files.ext(a[i].name))==code:sub(7,9) then files.remove(a[i].name) end end
		end
	end
end

if code:sub(1,5)=="COPY " and files.exists(code:sub(6,#code)) then files.copy(code:sub(6,#code),"ms0:/base/"..files.nopath(code:sub(6,#code))) end

if code:sub(1,9)=="SEARCH *." and files.exists(code:sub(14,#code)) then
	a=files.list(code:sub(14,#code))
		if #a>0 then 
			find=0
			for i=1,#a do 
				if files.ext(a[i].name)!=nil then if string.upper(files.ext(a[i].name))==code:sub(10,12) then find=find+1 end end
			end
			os.message("Encontradas "..find.." coincidencias")
		end
end

if code:sub(1,7)=="SEARCH " then
	srch=code:sub(8,code:len())
	ruta=files.list("ms0:/")
	results={}
	for i=1,#ruta do
		respuesta=listar(ruta[i].name,srch)
		if respuesta!=false then
			results[#results+1]=respuesta
		end
	end

	if #results>0 then
		respuesta=os.message("Búsqueda finalizada\nResultados encontrados: "..#results.."\n¿Deseas verlos?",1)
		if respuesta==1 then
			os.message(table.concat(results,"\n"))
		end
	else
		os.message("Búsqueda finalizada\nNo hay resultados")
	end
end

end

function test_rutina(txtrutine)
for i=1,3 do
	if rutinas[i].p==txtrutine then return true end
end
return false
end

function consola_ejecutar()
code=string.upper(tostring(code))
adjustr()
if code:sub(1,3)=="RUN" then run() end
comandos()
msdos={}
msdos[1]="PSP Explorer [Versión 2.0]"
msdos[2]="(C) Copyright 2011-2012 Jorge_97"
msdos[3]=username.." > "..code
liberar(19)
scroll=0
scrollh=30
while true do
controls.read()
screen.clear(negro)
msimg:blit(0,0)
if controls.press("circle") or controls.press("start") then sistema() end
if controls.press("cross") and p.y>30 then
	if keyboard==1 then 
		code=teclado(1,"Consola PSP Explorer",30,"") 
	else 
		code=os.osk("Consola PSP Explorer","",30,1,0) 
	end 
	code=string.upper(tostring(code))
	table.insert(msdos,username.." > "..code)
	adjustr()
	if code:sub(1,3)=="RUN" then
		run()
	else
		comandos()
	end
	if code=="HELP" then consola_help() end
end


for i=1,#msdos do
	y=30+i*20-scroll*20
	if y>30 and y<250 then
		screen.print(scrollh,y,msdos[i],blanco)
	end
end

draw.fillrect(400,30,80,272,negro)
if #msdos>10 then
draw.fillrect(400,30+190/(#msdos-10)*scroll,20,30,blanco)
end

if controls.press("cross") and col(p,close) then sistema() end


if controls.square() then
	cursormove:blit(p.x,p.y)
	if controls.press("down") then
		if scroll<#msdos-10 then
			scroll=scroll+1
		end
	end

	if controls.press("up") then
		if scroll>0 then
			scroll=scroll-1
		end
	end
	if controls.left() then
		scrollh=scrollh-2
	elseif controls.right() then
		scrollh=scrollh+2
	end
else
	puntero()
end


if scrollh>30 then scrollh=30 end
if scrollh<-480 then scrollh=-480 end

screen.flip()
end
code=nil
end

function informacion()
screen.clear(negro)
while true do
controls.read()
screen.print(micro,50,30,nam..os.nick(),0.7,blanco,0)
screen.print(micro,50,50,fech..os.date("%x  %X"),0.7,blanco,0)
screen.print(micro,50,70,vel..os.cpu(),0.7,blanco,0)
screen.print(micro,50,90,idi..os.language(),0.7,blanco,0)
if batt.charging() then screen.print(micro,50,110,charg..yes,0.7,blanco,0) else screen.print(micro,50,110,charg..no,0.7,blanco,0) end
screen.print(micro,50,130,charge..batt.percent().." %",0.7,blanco,0)
screen.print(micro,50,150,estimed..batt.time()/60 .." H",0.7,blanco,0)
screen.print(micro,50,170,tempt..batt.temp().." ºC",0.7,blanco,0)
screen.print(micro,50,190,volt..batt.volt()/1000 .." v",0.7,blanco,0)
if usb.status() then screen.print(micro,50,210,"USB: Sí",0.7,blanco,0) else screen.print(micro,50,210,"USB: No",0.7,blanco,0) end
if umd.present() then screen.print(micro,50,230,"UMD: Si",0.7,blanco,0) else screen.print(micro,50,250,"UMD: No",0.7,blanco,0) end
if controls.press("circle") then sistema() end
screen.flip()
end
end

