Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Vecchie avventure testuali e Windows XP

Salve a tutti,
ho provato alcune vecchie avventure MS-DOS (tra cui Avventura nel
castello) sotto XP sul computer di un mio amico, e non c'è stato
nessun problema.
Ricordo (per chi non lo sapesse) che per giocare a un'avventura sotto
dos, occorre decomprimere TUTTI i file dell'archivio zippato in una
directory qualsiasi. Poi si esegue il .exe...
Ciao da
Vincenzo

 directory qualsiasi. Poi si esegue il .exe...
Se a qualcuno dovesse interessare, nel caso delle mie (in versione 
.exe) il motivo di quanto sopra e' che il programma va a leggersi 
delle 'risorse' dentro il file stesso, per cui se lo trova compresso 
non ci capisce un accidente, o piu' probabilmente non lo trova e basta.
   .Erix.

 non ci capisce un accidente, o piu' probabilmente non lo trova e basta.
Credo che programmi tipo winzip, winace o winrar eseguano il programma
scompattandolo in una directory temporanea, come anche quando devono
accedere a risorse di altro tipo (immagini, suoni, etc), quindi il problema
non e' quello.
-- 
Ass. Cult. No Profit
Officina Delle Idee
http://www.officinadelleidee.org/

 non e' quello.
ma non è detto che lo faccia il supporto ai file compressi integrato in 
xp...

 ma non č detto che lo faccia il supporto ai file compressi integrato 
 > in xp...
Credo proprio di no.
   .Erix.

 xp...
non saprei, conosco solo linux (KDE) e qui entri col file manager dentro
l'albero delle cartelle ma se accedi ad un file, anche solo un txt da
leggere, lo ficca in /tmp (o simili) e lo usi da li'.


Enrico Colombini wrote:

Non solo, caro .Erix.
Devi sapere che il DOS e il LINUX permettono ad un file in esecuzione di
essere letto o scritto. Invece, il Program Loader di windows locca in
modalità esclusiva ogni file che viene eseguito. Il file non può aprire se
stesso (ad esempio, può usare le risorse contenute nel file exe solo
attraverso l'api di windows, poché windows mantiene a disposizione delle
proprie api interne l'handle del file esecutivo).
Lo so, perché ai miei tempi scrivevo virus e facevo spesso di questi
giochini con i file exe...
Giancarlo.

 modalità esclusiva ogni file che viene eseguito. Il file non può aprire 
 > se stesso
Ma allora come fa il Castello a funzionare nella console di XP? 
Immagino che cio' avvenga solo con i programmi nativi win32?
   .Erix.

Enrico Colombini wrote:

Potrebbe darsi. Forse il "modo compatibilità" fa anche questo; non ho mai
sperimentato programmi DOS puri sotto windows.
Giancarlo.

 Potrebbe darsi. Forse il "modo compatibilità" fa anche questo; 
 > non ho mai sperimentato programmi DOS puri sotto windows.
Da buon S.Tommaso ho preso il mio fedele Borland C++ Builder (Win32) e 
ho compilato quanto sotto, producendo un x.exe che stampa il proprio 
contenuto (e pure l'EOF... vabbe', la fretta...).
Si direbbe che si possa fare, non e' che magari il blocco sia nelle 
librerie del compilatore Microsoft?
   .Erix.
--------------------------------
#include <condefs.h>
#include <stdio.h>
#pragma argsused
int main(int argc, char **argv)
{
   FILE *f = fopen("x.exe", "rb");
   if (f) {
     printf("si\n");
     while (! feof(f)) {
       printf("%02x ", fgetc(f));
     }
     fclose(f);
   } else {
     printf("no\n");
   }
   getchar();
   return 0;
}

Enrico Colombini wrote:

Sai che potrebbe essere? Non ci avevo mai pensato.
Ma credo che le fopen() della borland puntino alle ReadFile() della MS API;
del resto, non c'è altro modo per accedere al filesystem (a meno di volersi
ricostruire tutta la gestione dei file dall'int13 in su... oppure usare
l'int 21. Da quando c'è il windows non no più provato ad usare direttamente
l'int 21).
Prova ad aprire il file in modalità RW, a vedere che succede. Se riesci ad
aprirlo, allora sono le winapi che bloccano le chiamate, altrimenti il
blocco si estende fino all'int21, ma solo parzialemnte (in scrittura).
Questo spiegherebbe anche in modo semplice come fanno ad avere ALCUNE
routine che accedono (almeno in lettura) al file, come ad esempio le
routine che leggono le risorse del file .exe
In dos e in linux è possibile aprire il file sia in lettura che in
scrittura.
Giancarlo.

 Prova ad aprire il file in modalità RW, a vedere che succede. 
Provato: in scrittura non va (per fortuna).
Ora non ho tempo per mettermi a giocare con le API, pero' mi hai messo 
la pulce nell'orecchio: non vorrei che qualche altro compilatore abbia 
questo problema. Qualcuno puo' provare col gcc (es. mingw32)?
   .Erix.
P.S. Siamo andati un po' OT... mea culpa (anche se credo che 
l'argomento possa interessare gli autori di interpreti di avventure).

 Prova ad aprire il file in modalità RW, a vedere che succede. 
Scusa, ti avevo letto male. In "rb" si apre, in "r+b" no.
   .Erix.

 Da buon S.Tommaso ho preso il mio fedele Borland C++ Builder (Win32) e 
tsé, al polimi siamo molto più avanti e usiamo il TC++ 1.01 per DOS... 
non ti dico le risate...
(anche se da quest'anno c'è anche DevStudio 6, ma dico io LCC e DEV-CPP 
non li conoscete proprio? Certo che li conoscete, dato che li ho 
segnalati io... vabbé)
ciao
S

 Qualcuno puo' provare col gcc (es. mingw32)?
io ci ho provato con dev-cpp (che incapsula gcc), ma che è quel 
condefs.h che non ho mai sentito?
beh, non l'ha mai sentito neppure gcc :)
comunque l'ho commentato e compila benissimo, ma dice "no" - ovvero, non 
apre un tubo. però chissà cosa c'è nell'header file...
ciaociao
S


io dopo aver usato il gcc con EditPlus (voi direte pazzo)
da un po' di tempo uso il Dev-cpp e mi trovo benissimo.
bai
t

 tsé, al polimi siamo molto più avanti e usiamo il TC++ 1.01 per DOS...
:-)
Comunque il CBuilder 3 va benissimo per applicazioni industriali, e' 
leggero, robusto, ragionevolmente completo e ha un buon editor di 
interfaccia.
Ovvio che per AT non userei un sistema proprietario.
   .Erix.

 condefs.h che non ho mai sentito?
Libreria di console della Borland.
 > comunque l'ho commentato e compila benissimo, ma dice "no" - ovvero,
 > non apre un tubo. però chissà cosa c'è nell'header file...
Un giorno indaghero', se mai trovassi tempo e voglia di scrivere 
qualche strumento per AT o affini questa storia delle risorse nel file 
e' importante.
   .Erix.