- PC_Tools_1.10.png (6.39 KiB) Exibido 3971 vezes
PC-TOOLS quem lembra?
Moderador: Moderadores
PC-TOOLS quem lembra?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
PC-TOOLS quem lembra?
Cara eu lembro...
Lembro tb do
Norton Disk Doctor (usava de mais... ganhava até uns trocos com ele)
E outros...
Disquetes de 3 1/2" (lançamento) era o top do top...
Lembro tb do
Norton Disk Doctor (usava de mais... ganhava até uns trocos com ele)
E outros...
Disquetes de 3 1/2" (lançamento) era o top do top...
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
PC-TOOLS quem lembra?
Fladimir,
O NDD era conhecido também como Norton Destrói Disco, kkk
O NDD era conhecido também como Norton Destrói Disco, kkk
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
PC-TOOLS quem lembra?
Sério... não sabia... pra mim era muito bom...
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
PC-TOOLS quem lembra?
Me acuerdo, que tiempos aquellos, tambien me acuerdo del XTree y del Norton Change Directory (NCD) por el cual podiamos navegar por el arbol de directorios del DOS. Uno de mis primeros programas en C alla por el 91/92 fue crear el CCD (Claudio Change Directory) una imitacion burda del NCD, voy a buscar el codigo en mis archivos, si lo encuentro lo posteo solo por el recuerdo.
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
PC-TOOLS quem lembra?
Se acuerdan tambien de los discos de 5"1/4, los buenos podias doblarlos a la mitad y seguian funcionando, existian varias marcas si mal no recuerdo como Verbatim, TDK... inclusive llegue a ver los discos de 8" y las cintas de casette en los PC.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
PC-TOOLS quem lembra?
Tenho várias caixas deste disquetes... e já trabalhei também com disquetes de 8", pena que não guardei nenhum.Claudio Soto escreveu:Se acuerdan tambien de los discos de 5"1/4
Até hoje as vezes uso o ZTree...
Abraços.
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
PC-TOOLS quem lembra?
Eu tenho um disquete de 8"
Tem o CP/M e um sistema em basic 80 de conta-corrente.
Tem o CP/M e um sistema em basic 80 de conta-corrente.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
PC-TOOLS quem lembra?
Olá!
Ainda vivi o tempo das coisas abaixo, a partir de 1979:
Cartões perfurados de 80 e 96 colunas. Um cadastro de clientes, por exemplo, precisava ter 3 cartões para caber todos os dados e o programa tinha que controlar a existência e ordem dos 3 cartões. Naqueles tempos, um byte valia muito. Difícil imaginar hoje um cadastro de cliente com apenas 240 bytes...
Às vezes o boot a partir dos discos falhava e era preciso fazê-lo através de código gravado (perfurado) em uma fita de papel. Atualmente, já temos um "chaveirinho" onde cabem 1 tera bytes... Viva a evolução! Que Deus nos permita participar disto por mais tempo.
Ainda vivi o tempo das coisas abaixo, a partir de 1979:
Cartões perfurados de 80 e 96 colunas. Um cadastro de clientes, por exemplo, precisava ter 3 cartões para caber todos os dados e o programa tinha que controlar a existência e ordem dos 3 cartões. Naqueles tempos, um byte valia muito. Difícil imaginar hoje um cadastro de cliente com apenas 240 bytes...
Às vezes o boot a partir dos discos falhava e era preciso fazê-lo através de código gravado (perfurado) em uma fita de papel. Atualmente, já temos um "chaveirinho" onde cabem 1 tera bytes... Viva a evolução! Que Deus nos permita participar disto por mais tempo.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PC-TOOLS quem lembra?
Tem muita coisa que não roda mais em 64 bits, ou no Windows, mas não apaguei.
Não perguntem porque não apaguei, porque não sei.
Não perguntem porque não apaguei, porque não sei.
Código: Selecionar todos
25/06/1991 20:08 6.284 BAT2EXEC.COM - transforma BAT em EXE
02/10/2001 09:24 6.915 DR.COM - visualização rápida
07/05/1990 23:00 1.816 LOG.COM - registra log
30/06/1992 23:00 1.309 RECORDER.COM - registra log
07/05/1990 23:00 591 SWEEP.COM - recursividade nos diretórios
14/05/1985 17:58 20.316 DFLOW.EXE - fluxograma de PRGS
28/02/1994 07:00 114.775 FILEFIX.EXE - corrige dbf, lótus, etc
28/01/2000 09:25 234.822 GHOST.EXE - clonar hd (versão antes norton)
18/04/1995 06:55 93.399 LL3.EXE - laplink 3
12/02/1993 20:03 268.701 LL5.EXE - laplink 5
25/01/1988 13:27 102.403 PCTOOLS.EXE
01/12/1988 14:00 73.472 PE2.EXE - editor de texto ibm
23/11/1992 16:38 66.213 PRINTQ.EXE - spooler de impressão
29/08/1995 14:58 44.768 qedit.exe - editor de texto
02/04/1987 00:00 129.153 TB.EXE - Turbo Basic da Borland
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
PC-TOOLS quem lembra?
Eliminei algumas coisas do texto antes de postar
Acabei apagando:
1.386 prn2file.com -> desvia impressão pra disco
Detalhe: 1.386 significa 1.3KB, e não 1.3MB.
É maior o bloco de alocação do Windows do que o programa... rs
Acabei apagando:
1.386 prn2file.com -> desvia impressão pra disco
Detalhe: 1.386 significa 1.3KB, e não 1.3MB.
É maior o bloco de alocação do Windows do que o programa... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
PC-TOOLS quem lembra?
Quintas,
Você pode matar saudade, usando o dosbox, heheh.
Você pode matar saudade, usando o dosbox, heheh.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
PC-TOOLS quem lembra?
Buscando encontré el código del Claudio Change Directory:Claudio Soto escreveu:Me acuerdo, que tiempos aquellos, tambien me acuerdo del XTree y del Norton Change Directory (NCD) por el cual podiamos navegar por el arbol de directorios del DOS. Uno de mis primeros programas en C alla por el 91/92 fue crear el CCD (Claudio Change Directory) una imitacion burda del NCD, voy a buscar el codigo en mis archivos, si lo encuentro lo posteo solo por el recuerdo.
Código: Selecionar todos
// PROGRAMA: Claudio Change Directory
// VERSION: 1.0
// AUTOR: Claudio Soto
// FECHA: Abril 1992
// LENGUAJE: C
// COMPILADOR: Borland Turbo C/C++
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
#include <dos.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
// #define DEBUG
#define DIR_ESCONDIDO 0x12
#define SUBDIRECTORIO FA_DIREC|DIR_ESCONDIDO
#define TOPE_DIR 300
#define FINAL i-1
#define FINAL2 i2-1
#define ON 1
#define OFF 0
#define COLOR_NOMBRE 14
#define COLOR_RAMAS 9
#define COLOR_DIRECTORIOS 11
#define COLOR_CURSOR_BARRA 7
#define COLOR_CURSOR_FONDO 0
#define COLOR_FLECHA 15
#define COLOR_FONDO_PANTALLA 0
#define COLOR_PATH 14
void reloj ();
void recuadro (int x1, int y1, int x2, int y2, char caracter [9], int y3, char cracter2 [5]);
int mostrar_pedazo (int x, int y, char texto [], int inicio, int fin);
void trazar_linea (int x, int y1, int y2, char caracter []);
void pantalla ();
void burbuja ();
void cursor (int modo);
void activar_dir (int minima_x, int minima_y, int maxima_x, int maxima_y, int y3, int posx1_mouse, int posy1_mouse, int posx2_mouse, int posy2_mouse);
int boton_mouse (int num);
int existe_mouse ();
void gotoxy_mouse (int x, int y);
void mostrar_cursor_mouse ();
void sacar_cursor_mouse ();
void posicion_mouse (int *x, int *y);
struct ffblk reg;
char dir [TOPE_DIR] [80], camino [80], directorio [80];
char rama [TOPE_DIR], nombre [TOPE_DIR] [80], auxiliar [80];
int posx [TOPE_DIR], posy [TOPE_DIR], padre [TOPE_DIR];
int i=1, k=0, cont=1, status =0, p=1, j;
int mayor, fin, a, inicio, control1,control2;
int x=1, y=1, control3, i2, posx2 [TOPE_DIR], posy2 [TOPE_DIR];
int incremento_en_x = 2;
char drive, dir_corriente [80];
void main ()
{ int zz;
char CARAC_RECUADRO [] = { 218, 196, 191, 179, 217, 196, 192, 179, 176, 32, 0 };
char CARAC_RECUADRO2 [] = { 198, 205, 181, 0};
char CARAC_LINEA [] = { 194, 179, 193, 0};
// 218 196 191 179 217 196 192 179 176 198 205 181 194 193
// Ú Ä ¿ ³ Ù Ä À ³ ° Æ Í µ Â Á
textmode (C80);
clrscr ();
randomize ();
cursor (OFF);
mostrar_cursor_mouse ();
textcolor (14);
textbackground (9);
recuadro (3,11,77,14, CARAC_RECUADRO, 0," ");
textbackground (0);
textcolor (8);
for (zz=4; zz <= 78; zz++)
{ gotoxy (zz,15);
cprintf ("%c",177);
}
for (zz=12; zz <= 15; zz++)
{ gotoxy (78,zz);
cprintf ("%c",177);
}
textbackground (9);
textcolor (11);
drive = getdisk ();
getcurdir (drive + 1, auxiliar);
directorio [0] = drive + 65;
strcat (directorio, ":");
strcpy (camino, directorio);
strcat (camino,"\\*.*");
strcpy (nombre [0], directorio);
strcat (nombre [0], "\\");
strcpy (dir_corriente, nombre [0]);
strcat (dir_corriente, auxiliar);
strcpy (dir [0], nombre[0]);
/************************************************************************/
/* Lectura de subdirectorios */
/************************************************************************/
do
{
status = findfirst (camino, ®, SUBDIRECTORIO);
while (status == 0)
{ if ((reg.ff_attrib == DIR_ESCONDIDO) || (reg.ff_attrib == FA_DIREC) && (reg.ff_name[0] !='.') && (reg.ff_name[1] !='.'))
{ if (reg.ff_attrib == DIR_ESCONDIDO)
{ for (k=0 ;k <= strlen(reg.ff_name); k++)
nombre [i] [k] = tolower (reg.ff_name [k]);
}
else
strcpy (nombre [i], reg.ff_name);
strcpy ( dir[i], directorio);
strcat ( dir[i], "\\");
strcat ( dir[i], reg.ff_name);
padre [i] = p -1;
i++;
textbackground (9);
gotoxy (23,12);
cprintf ("Explorando %4d sub-directorio(s).",i-1);
gotoxy (4,13);cprintf (" ");
gotoxy ((80 - strlen (dir [i-1]))/2,13);
cprintf ("%s",dir [i-1]);
delay (50);
}
status = findnext (®);
}
strcpy (camino, dir [cont]);
strcat (camino, "\\*.*");
strcpy (directorio, dir [cont]);
cont ++;
p++;
} while (cont <= i);
textcolor (7);
textbackground (0);
/************************************************************************/
/* Formacion del arbol */
/************************************************************************/
cont = 0;
posx [0] = x;
posy [0] = y;
control1 = 0;
if (FINAL > 0)
{ control2 = padre [1];
a = padre [1];
mayor = padre [1];
for (k=1; k <= i-1; k++)
{ if (padre [k] > control2)
{ control2 = padre [k];
mayor ++;
}
}
control2 = padre [0];
mayor ++;
do
{ for (j=1; j<= FINAL; j++)
{ if ((control1 == 0) && (control2 == padre [j]))
{ inicio = j;
control1 = 1;
}
if (control2 == padre [j])
fin = j;
}
control3 = 0;
for (j=inicio; j <= fin; j++)
{ a = control2;
y = posy [a] + 1;
x = posx [a] + incremento_en_x;
if (control3 == 0)
{ rama [j] = 192;
control3 = 1;
}
else
rama [j] = 195;
for (k=1; k <= FINAL; k++)
{ if (posy [k] >= y)
posy [k] = posy [k] +1;
}
x = posx [a] + incremento_en_x;
y = posy [a] + 1;
posx [j] = x;
posy [j] = y;
}
cont ++;
control1 =0;
control2 = padre [fin + 1];
} while (cont < mayor);
}
/************************************************************************/
/* Union de las ramas del arbol */
/************************************************************************/
i2 = 0;
cont = 0;
if (FINAL > 0)
{ control1 = padre [1];
control2 = posy [1];
do
{ for (k=1; k <= FINAL; k++)
{ if (control1 == padre [k])
{ a = control2 - posy [k];
if (a > 1)
{ for (j=1; j <= a-1; j++)
{ posx2 [i2] = posx [k];
posy2 [i2] = posy [k] + j;
i2 ++;
}
}
control2 = posy [k];
}
}
for (k=1; k <= FINAL; k++)
{ if (padre [k] > control1)
{ control1 = padre [k];
control2 = posy [k];
break;
}
}
cont ++;
} while (cont < mayor);
}
clrscr ();
sacar_cursor_mouse ();
cursor (OFF);
pantalla ();
textcolor (14);
textbackground (9);
recuadro (3,2,77,4,CARAC_RECUADRO, 0," ");
textbackground (0);
textcolor (8);
for (zz=4; zz <= 78; zz++)
{ gotoxy (zz,5);
cprintf ("%c",176);
}
gotoxy (78,3);
cprintf ("%c",176);
gotoxy (78,4);
cprintf ("%c",176);
textbackground (9);
textcolor (COLOR_NOMBRE);
gotoxy (5,3); cprintf ("Claudio Change Directory, Ver 1.0");
gotoxy (53,3);cprintf ("(c) Claudio Soto, 1992.");
textbackground (0);
textcolor (8);
recuadro (3,7,77,22,CARAC_RECUADRO, 9, CARAC_RECUADRO2);
trazar_linea (73,7,22, CARAC_LINEA);
gotoxy (73,9); cprintf ("%c %c",181, 179);
textcolor (15);
gotoxy (74,8); cprintf ("[%c]",30);
gotoxy (74,21);cprintf ("[%c]",31);
activar_dir (4,10,80,21,8,75,8,75,21);
cursor (ON);
textmode (C80);
}
void activar_dir (int minima_x, int minima_y, int maxima_x, int maxima_y, int y3, int posx1_mouse, int posy1_mouse, int posx2_mouse, int posy2_mouse)
{ int x, y, k, num =0, num2, num_inicio, num_fin;
int control, antigua_y, mouse = 0;
int x_mouse, y_mouse;
char tecla, arriba [160], abajo [160], path [160], limpiar [4000];
if (existe_mouse () != 0)
{ gotoxy_mouse (500,100);
mouse = 1;
}
burbuja ();
for (k=0; k <= FINAL; k++)
{ if (strcmp (dir_corriente, dir [k]) == 0)
{ num2 = k;
break;
}
}
gettext (minima_x, minima_y, maxima_x, maxima_y, limpiar);
gettext (1, minima_y, 80, minima_y, arriba);
gettext (1, maxima_y, 80, maxima_y, abajo);
gettext (1, y3, 80, y3, path);
textbackground (COLOR_FONDO_PANTALLA);
num = 0;
num_inicio = 0;
for (k= minima_y; ((k <= maxima_y) && (num <= FINAL)); k++)
{ x = posx [num] + minima_x;
y = posy [num] + minima_y -1;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
if (num == num2)
{ gotoxy (x + strlen (nombre [num]) + 2, y);
textcolor (COLOR_FLECHA | 128);
cprintf ("%c",27);
textcolor (COLOR_DIRECTORIOS);
}
num ++;
}
num_fin = num - 1;
for (k=0; k <= FINAL2; k++)
{ x = posx2 [k] + minima_x;
y = posy2 [k] + minima_y -1;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
if ((y >= minima_y) && (y <= maxima_y))
cprintf ("%c",179);
}
num = 0;
gotoxy (posx[0] + minima_x, y3);
textcolor (COLOR_PATH);
cprintf ("Path: %s", dir[num]);
#ifdef DEBUG
gotoxy (10,5);
cprintf ("inicio %s ",nombre [num_inicio]);
gotoxy (50,5);
cprintf ("fin %s ",nombre [num_fin]);
#endif
y = minima_y;
do
{ x = posx [num] + minima_x;
gotoxy (x,y);
textcolor (COLOR_CURSOR_FONDO);
textbackground (COLOR_CURSOR_BARRA);
cprintf ("%c", rama [num]);
cprintf ("%s ", nombre [num]);
// textcolor (COLOR_CURSOR_BARRA);
textbackground (COLOR_FONDO_PANTALLA);
if (num == num2)
{ gotoxy (x + strlen (nombre [num]) + 2, y);
textcolor (COLOR_FLECHA | 128);
cprintf ("%c",27);
textcolor (COLOR_DIRECTORIOS);
}
if (mouse == 1)
mostrar_cursor_mouse ();
do
{ reloj ();
tecla = 0;
if (kbhit ())
{ tecla = getch ();
if (tecla == 0)
tecla = getch ();
}
if (mouse == 1)
{ posicion_mouse (&x_mouse, &y_mouse);
x_mouse = x_mouse / 8 + 1; // convierte pixels en caracteres
y_mouse = y_mouse / 8 + 1; // convierte pixels en caracteres
if ((posx1_mouse == x_mouse) && (posy1_mouse == y_mouse) && (boton_mouse (0) == 1))
{ tecla = 'H';
delay (130);
}
if ((posx2_mouse == x_mouse) && (posy2_mouse == y_mouse) && (boton_mouse (0) == 1))
{ tecla = 'P';
delay (130);
}
}
} while (tecla == 0);
if (tecla == 'I') tecla = 'H';
if (tecla == 'Q') tecla = 'P';
if (mouse == 1)
sacar_cursor_mouse ();
gotoxy (x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
if ((tecla == 'H') && (num > 0))
{ num --;
y --;
if (y < minima_y)
{ y ++;
num_inicio --;
num_fin --;
gotoxy (x,maxima_y);
delline ();
gotoxy (x,minima_y);
insline ();
puttext (1, minima_y, 80, minima_y, arriba);
gotoxy (posx[num]+minima_x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
#ifdef DEBUG
gotoxy (10,5);
cprintf ("inicio %s ",nombre [num_inicio]);
gotoxy (50,5);
cprintf ("fin %s ",nombre [num_fin]);
#endif
for (k=0; k <= FINAL2; k++)
{ x = posx2 [k] + minima_x;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
if (num == (posy2 [k] - 1) )
cprintf ("%c",179);
}
}
}
if ((tecla == 'P') && (num < FINAL))
{ num ++;
y ++;
if (y > maxima_y)
{ y --;
num_inicio ++;
num_fin ++;
gotoxy (x,minima_y);
delline ();
gotoxy (x,maxima_y);
insline ();
puttext (1, maxima_y, 80, maxima_y, abajo);
gotoxy (posx2_mouse-1, maxima_y-1);
cprintf (" ");
gotoxy (posx[num]+minima_x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
#ifdef DEBUG
gotoxy (10,5);
cprintf ("inicio %s ",nombre [num_inicio]);
gotoxy (50,5);
cprintf ("fin %s ",nombre [num_fin]);
#endif
for (k=0; k <= FINAL2; k++)
{ x = posx2 [k] + minima_x;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
if (num == (posy2 [k] - 1) )
cprintf ("%c",179);
}
}
}
if ((tecla == 'Q') && (num < FINAL) && (num_fin < FINAL))
{ num = num_fin + 1;
antigua_y = y;
control = 0;
y = minima_y -1;
num_inicio = num;
puttext (minima_x, minima_y, maxima_x, maxima_y, limpiar);
for (k= minima_y; ((k <= maxima_y) && (num <= FINAL)); k++)
{ x = posx [num] + minima_x;
y ++;
if (y == antigua_y)
control = num;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
if (num == num2)
{ gotoxy (x + strlen (nombre [num]) + 2, y);
textcolor (COLOR_FLECHA | 128);
cprintf ("%c",27);
textcolor (COLOR_DIRECTORIOS);
}
num ++;
}
num_fin = num - 1;
#ifdef DEBUG
gotoxy (10,5);
cprintf ("inicio %s ",nombre [num_inicio]);
gotoxy (50,5);
cprintf ("fin %s ",nombre [num_fin]);
#endif
for (k=0; k <= FINAL2; k++)
{ x = posx2 [k] + minima_x;
y = posy2 [k] + minima_y -1 - num_inicio;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
if ((y >= minima_y) && (y <= maxima_y))
cprintf ("%c",179);
}
num --;
if (control != 0)
{ y = antigua_y;
num = control;
}
}
if ((tecla == 'I') && (num > 0) && (num_inicio > 0))
{ num = num - (maxima_y - minima_y - 1);
if (num < 0) num = 0;
num_inicio = num;
antigua_y = y;
control = 0;
y = minima_y -1;
puttext (minima_x, minima_y, maxima_x, maxima_y, limpiar);
for (k= minima_y; ((k <= maxima_y) && (num <= FINAL)); k++)
{ x = posx [num] + minima_x;
y ++;
if (y == antigua_y)
control = num;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
cprintf ("%c", rama [num]);
textcolor (COLOR_DIRECTORIOS);
cprintf ("%s ", nombre [num]);
if (num == num2)
{ gotoxy (x + strlen (nombre [num]) + 2, y);
textcolor (COLOR_FLECHA | 128);
cprintf ("%c",27);
textcolor (COLOR_DIRECTORIOS);
}
num ++;
}
num_fin = num - 1;
#ifdef DEBUG
gotoxy (10,5);
cprintf ("inicio %s ",nombre [num_inicio]);
gotoxy (50,5);
cprintf ("fin %s ",nombre [num_fin]);
#endif
for (k=0; k <= FINAL2; k++)
{ x = posx2 [k] + minima_x;
y = posy2 [k] + minima_y -1 - num_inicio;
gotoxy (x,y);
textcolor (COLOR_RAMAS);
if ((y >= minima_y) && (y <= maxima_y))
cprintf ("%c",179);
}
num --;
if (control != 0)
{ y = antigua_y;
num = control;
}
}
puttext (1, y3, 80, y3, path);
gotoxy (posx[0] + minima_x, y3);
textcolor (COLOR_PATH);
cprintf ("Path: %s", dir[num]);
textcolor (15);
gotoxy (74,21);cprintf ("[%c]",31);
textcolor (COLOR_PATH);
} while ((tecla != 13) && (tecla != 27));
if (tecla == 13) chdir (dir [num]);
// if (mouse == 1) sacar_cursor_mouse ();
}
void burbuja ()
{ int cont, j, tope, auxnum;
char aux [80], auxchar;
tope = FINAL;
do
{
cont =0;
for (j=0; j <= tope -1; j++)
{
if (posy [j] > posy [j+1] )
{ auxnum = posy [j];
posy [j] = posy [j+1];
posy [j+1] = auxnum;
auxnum = posx [j];
posx [j] = posx [j+1];
posx [j+1] = auxnum;
auxnum = padre [j];
padre [j] = padre [j+1];
padre [j+1] = auxnum;
auxchar = rama [j];
rama [j] = rama [j+1];
rama [j+1] = auxchar;
strcpy (aux, dir [j]);
strcpy (dir [j], dir [j+1]);
strcpy (dir [j+1], aux);
strcpy (aux, nombre [j]);
strcpy (nombre [j], nombre [j+1]);
strcpy (nombre [j+1], aux);
cont = j;
}
}
tope = cont;
} while (tope > 2);
}
void cursor (int modo)
{ union REGS reg;
if (modo == 0)
{ reg.x.cx = 0x2000;
reg.x.ax = 0x100;
int86 (0x10, ®, ®);
}
else
{ reg.x.cx = 0;
reg.x.ax = 0;
int86 (0x10, ®, ®);
}
}
void pantalla ()
{ register int i;
char fondo [1921];
for (i=0; i <= 1919; i++)
fondo [i] = 177;
fondo [1920] = '\0';
cprintf ("%s",fondo);
}
void recuadro (int x1, int y1, int x2, int y2, char caracter [9], int y3, char caracter2 [5])
{ int i;
for (i=y1 + 1; i <= y2 -1 ; i++)
{
for (k=x1 + 1; k <= x2 -1 ; k++)
{ gotoxy (k,i);
cprintf ("%c", caracter [9]);
}
}
for (i=x1 + 1; i <= x2 -1 ; i++)
{ gotoxy (i, y1);
cprintf ("%c", caracter [1]);
gotoxy (i, y2);
cprintf ("%c", caracter [5]);
gotoxy (i, y2+1);
cprintf ("%c", caracter [8]);
if ((caracter2 [1] != ' ') && (caracter2 [1] != '\0'))
{ gotoxy (i, y3);
cprintf ("%c", caracter2 [1]);
}
}
gotoxy (x2, y2+1);
cprintf ("%c%c", caracter[8], caracter[8]);
gotoxy (x2+1, y2);
cprintf ("%c", caracter[8]);
for (i=y1 + 1; i <= y2 -1 ; i++)
{ gotoxy (x1, i);
cprintf ("%c", caracter [3]);
gotoxy (x2, i);
cprintf ("%c", caracter [7]);
gotoxy (x2+1, i);
cprintf ("%c", caracter [8]);
}
gotoxy (x1, y1);
cprintf ("%c", caracter [0]);
gotoxy (x2, y1);
cprintf ("%c", caracter [2]);
gotoxy (x2, y2);
cprintf ("%c", caracter [4]);
gotoxy (x1, y2);
cprintf ("%c", caracter [6]);
if ((caracter2 [0] != ' ') && (caracter2 [0] != '\0'))
{ gotoxy (x1,y3);
cprintf ("%c", caracter2 [0]);
}
if ((caracter2 [2] != ' ') && (caracter2 [2] != '\0'))
{ gotoxy (x2,y3);
cprintf ("%c", caracter2 [2]);
}
}
void trazar_linea (int x, int y1, int y2, char caracter [])
{ int i;
gotoxy (x,y1);
cprintf ("%c",caracter [0]);
for (i=y1+1; i <= y2-1; i++)
{ gotoxy (x,i);
cprintf ("%c",caracter [1]);
}
gotoxy (x,y2);
cprintf ("%c",caracter [2]);
}
int mostrar_pedazo (int x, int y, char texto [],int inicio, int fin)
{ int i;
gotoxy (x,y);
for (i=inicio; (i <= fin) && (i <= strlen (texto)); i++)
cprintf ("%c", texto [i]);
return i;
}
int boton_mouse (int num)
{ // 0 = boton sin presionar.
// 1 = boton izquierdo presionado.
// 2 = boton del medio o el derecho presionado.
// 3 = boton izq y dech presionado o izq y del medio presionado
// o los tres botones presionados.
union REGS reg;
reg.x.ax = 5;
reg.x.bx = num;
int86 (0x33, ®, ®);
return (reg.x.ax);
}
int existe_mouse ()
{ union REGS reg;
reg.x.ax = 0;
int86 (0x33, ®, ®);
return (reg.x.ax);
}
void gotoxy_mouse (int x, int y)
{ union REGS reg;
reg.x.ax = 4;
reg.x.cx = x; // en pixels
reg.x.dx = y; // en pixels
int86 (0x33, ®, ®);
}
void mostrar_cursor_mouse ()
{ union REGS reg;
reg.x.ax = 1;
int86 (0x33, ®, ®);
}
void sacar_cursor_mouse ()
{ union REGS reg;
reg.x.ax = 2;
int86 (0x33, ®, ®);
}
void posicion_mouse (int *x, int *y)
{ union REGS reg;
reg.x.ax = 3;
int86 (0x33, ®, ®);
*x = reg.x.cx; // en pixels
*y = reg.x.dx; // en pixels
}
void reloj ()
{ long far *pnt_hora = MK_FP(0x40, 0x6C), reloj2;
int h, m, s;
char a [10];
struct date d;
reloj2 = *pnt_hora;
h = reloj2 / 65543;
reloj2 -= h * 65543;
m = reloj2 / 1092;
reloj2 -= m * 1092;
s = reloj2 / 18.2;
itoa (s,a,10);
gotoxy (46,25);
textcolor (14);
cprintf ("HORA: ");
printf ("%2d:%2d:%c%c", h, m, a [strlen (a)-2], a [strlen (a)-1]);
getdate(&d);
gotoxy (20,25);
cprintf ("FECHA: ");
printf ("%2d:%2d:%2d", d.da_day, d.da_mon, d.da_year);
}