Newsgroup: it.comp.lang.pascal
Titolo: pascal in win XP

 
          Vorrei sapere se è possibile far girare BORLAND PASCAL 7.0 in ambiente
windows XP Pro. Grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Si se non hai esigenze particolari o paricolarmente legate al dos.
C'è anche FreePascal
Bye,
Raktzo

L'unica limitazione che ho visto io e un strano uso dei colori un po' 
falsati e l'impossibilità di usare le porta harware { Port*[*:*] }
per il resto funziona normalmente
-- 
Il Razziatore,
The Only Good Windows is an uninstalled Windows
-----------------------------------------------
MSN   : 
IlRazz...@netscape.net
ICQ   : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com

 falsati e l'impossibilità di usare le porta harware { Port*[*:*] }
Nemmeno il puntamento diretto della memoria è consentito, l'uso delle
vecchie int di dos.
Bye,
Raktzo

 vecchie int di dos.
mmmh, io faccio entrambe le cose e ci riesco - e' un male ? (tp7 su xp)
-- 
Dreadnaut - 
http://dreadnaut.servebeer.com/
(Life would be easier if I had the source code)

> mmmh, io faccio entrambe le cose e ci riesco - e' un male ? (tp7 su xp)
Se ti permette di farlo no.
O meglio, stai usando delle risorse lasciate aperte per compatibilità.
Prova a modificare le locazioni da 0 fino 0000:0400 (i vettori interrupt).
Probabilmente anche Port[] ti funziona su alcune porte abilitate, tipo la
parallela(la lp0) o quelle della seriale(ttyS0 e ttyS1).
Prova invece a modificare i registri della video o i registri dell'HD o
altre porte un po più sensibili.
Bye,
Raktzo

 mmmh, io faccio entrambe le cose e ci riesco - e' un male ? (tp7 su xp)
mmm è un male si ! Dato che il win Xp a differenza del Dos gira in protect 
mode e quindi solo il S.O. può accedere direttamente alle risorse, per 
quanto ne so se fai girare un codice che cerca di accedere direttamente alle 
risorse ad esempio la memoria video ti da un bel errore.
ReDiCuori
-- 
-- 
L'uomo non sa perchè si innamora, l'uomo viene travolto e basta
---------------------------------------------------------
www.giordanoemilio.altervista.org
---------------------------------------------------------
www.securitygroup.it
Società di servizio che opera nel campo
della sicurezza aziendale
---------------------------------------------------------
www.pascallike.too.it
http://utenti.lycos.it/pascallike
il sito sulla programmazione pascal
sorgenti, tutorial ed utility
------------------------------------------------------------
www.treves-srl.com
Libreria Internazionale Treves
Via Toledo 249/250 Napoli
------------------------------------------------------------
www.alphalibri.com
Vendita ingrosso di libri
Via S.Anna dei Lombardi 10 , Napoli
-------------------------------------------------------

 alle risorse ad esempio la memoria video ti da un bel errore.
Considera che HAL(Hardware Abstraction Layer), il sottosistema che si occupa
delle risorse) non tiene tutto ermeticamente sigillato. HAL lascia
l'accesso ad alcune risorse tenute aperte per compatibilità verso DOS.
Inoltre, le applicazioni DOS vengono eseguite da un processo ad-hoc
NTVDM(NT Virtual DOS Machine) che ha assume permessi ben diversi dalle
normali applicazioni.
Bye,
Raktzo

 o altre porte un po più sensibili.
boh, io ho piu' programmi scritti in tp dove
- richiamo interrupt (dos, mouse...)
- modifico la catena degli interrupt (timer ad esempio, o tastiera)
- scrivo direttamente nella memoria video (80x25 / 80x50)
alcuni sono anche sul mio sito se vuoi dare un'occhiata ai sorgenti. 
Secondo me l'emulazione 16bit e' molto piu' completa di quel che sembra... 
per le porte non so' usando Port (no pun), ma mi sembrava che aprendo i 
device file COMn e LPT funzionasse.
Intendo cmq: apro una finestra di prompt, lancio il programma, fra i task 
appare ntvdm.exe (la virtual machine a 16bit) e il mio programma gira li 
dentro - non nativo 32 bit ecco


Hai ragione, ho fatto confusione con le applicazioni 32bit e quelle dentro
NTVDM. In realtà le tue richieste alle risorse vengono "manipolate" da
NTVDM e poi passate al SO senza che l'applicazione DOS se ne accorga
Bye,
Raktzo

 
Non diciamo stronzate please.
Una cosa è un programma 32 bit che è gestito dal OS e che se provi ad 
uscire dalla memria a te assegata ti crea tanti di quegli errori che 
neache ti imagini. Altra cosa è un programma generato con il TP7 che 
gira a 16 Bit in eumalzione. Lui { il programma a 16 bit } ha una 
memoria virtuale. A quella reale neache ci arriva. Puoi accedere a tutta 
la memoria. Modificare gli int ecc. Quando chiudi la finesta tutto 
scompare. infatti se modifichi l'int del timer o quello della tastiera 
quando aprirai una nuova machina virtuale quegli int saranno riportati a 
  quelli di defout. Cosa diversa è per le porte. SONO TUTTE CHIUSE. Io 
ho parecchi programmi che usano le porte e non ne funziona 1.
Il TP7 è dos quindi tutte le cose a 32 bit non centrano un H. Il fatto 
che si è in ProtectMode non centra perche i programmi girano in Realmode.
L'accesso alla memoria video è consentito { beh a dire il vero l'intero 
accesso alla memoria non solo a quella video } è consentito perchè viene 
virtualizata. L'accesso alle porte invece non è consentito. Non ho 
provato tutte e 2^16 porte del PC ma ne ho provate parecchie...
Per rispondere a Dradnaut. No non è male :) I progrmmi dos si scrivevano 
cosi. Si dovevano scrivere cosi. Anzi molti si scrivevano proprie 
routine di scrittura a video perchè INT del dos era troppo lento. Per 
non parlare di quanti sostituivano quel o quell'altro INT... e che dire 
dei vari driver del mouse? Secondo voi come funzionavano? beh proprio 
sostituendo INT 33 del bios { che non faceva un beep } con i driver del 
mouse. Il dos non puo' distinguere tra un Driver è un Virus. Quindi 
tutti i programmi {anche quelli scritti dal sommo Dradnaut} _devono_ 
poter sostituire INT. Come _devono_ poter accedere alla memoria. Il 90% 
dei programmi DOS fanno proprio questo. Secondo voi l'errore 200 { Div 
by 0 } secondo voi come viene intercettato dal programma? Tramite un 
Eccezione di windows? no... tramite un INT! { INT 8 se non ricordo male, 
ora non mi va di aprire la Ralf } Quindi ogni programma compilato con il 
TP { e non solo } sostiusce quel INT { e non solo... }
Comunque sta di fatto che come ho già detto l'emulazione del DOS è quasi 
perfetta l'unica cosa che non hanno consentito è l'accesso alle porte { 
anche se io alcune porte, tipo quelle seriali, parallela ecc l'avrei 
consentio ma poi forse nasceva un problema di sincornizazione con i 
processi a 32 bit = casini... }. Mentre l'errore grafico { scambio di 
colori o meglio di tonalità } beh quello è un errore :D
Ovvio scrivere direttamente in memoria al giorno d'oggi { con programmi 
a 32 bit }, oltre che essere impossibile, è anche dannoso... ma qui non 
si parla di questo.


 ha scritto nel messaggio 
news:42caa022$1...@x-privat.org...


 che facevano questo non girano....
salto il post di Razz perche' era troppo ingarbugliato :)  poi dopo 
milioni di anni non riesce neanche a scrivere Dreadnaut con tutte le 
lettere al posto giusto :|
almeno per quanto riguarda quello che ho detto io, il "sotto WinXp" va 
inteso in emulazione DOS, ovvero finestrella + ntdvm -> 16 bit bla bla
Memoria video, quella text/vga, ovvero la modalita' testo e fino a 
640x480. Non parlo di VESA, ne' di memoria video della scheda grafica.
Limitatamente a quando detto sopra, ti assicuro che nella memoria video 
ci puoi scrivere, qua c'e' un esempio per la modalita' testo
http://dreadnaut.altervista.org/pascal/src/drlife.pas.html
Per gli interrupt, dos e mouse (e probabilmente anche EMS e altri) sono 
emulati (il dos ha anche delle estensioni, come i nomi lunghi e le 
mailslot) quindi si possono richiamare. E per quanto ne so (timer e 
tastiera) il vettore degli interrupt e' modificato a piacere. Come mi 
sembrava dicesse Razz, ovviamente se apri un secondo prompt ci sara' una 
seconda macchina virtuale e quindi tutto riparte da zero.


 ReDiCuori
I miei si. Sia modalita video modalità testuale che grafica. Stessa cosa 
per gli interupt. Se hai sotto mano qualche programma che non gira 
mandamelo per email { 
ilRazz...@gmail.com
 } provero a compilarlo { mi 
hai incuriosito sai? }


 
Per quanto riguarda il tuo nome ehmm... posso solo che cospargermi il 
capo di ceneri... { la prox volta giuro che premo d+tab :D :D :D }


 facilmente o al vettore di interrupt sotto win xp. I miei programmini che
Per modificare un vettore di int ci sono due metodi(almeno che io ricordi),
o si va direttamente sulla tavola degli int, si punta quello desiderato e
si sovrascrive, o si usa un altro int(il 21h se non ricordo male, la
funzione non me la chiedete) il quale provvede lui a sovrascrivere.
Probabilmente la differenza tra i risultati sta qui.
Per entrambi(Razziatore e ReDiCuori) che metodi usate o avete usato?
Bye,
Raktzo

 
Uhmmm oh beh a dire il vero c'è ne anche un terzo SetIntVec e GetIntVec 
dell'unit DOS che sono la stessa cosa che usare int 21h { che altro non 
sono le chiamate al kernel del dos... le API. Almeno io uso questa, se 
vai nell'help c'è un esempio. } come viene gentimente confermato dal 
fidato turbodebug { sinceramente il turbodebug del BP7 mi sembra 
migliore dl TB di Dephi boh... }
DOS.SETINTVEC
   cs:0018 55             push   bp
   cs:0019 8BEC           mov    bp,sp
   cs:001B 1E             push   ds
   cs:001C C55606         lds    dx,[bp+06]
   cs:001F 8A460A         mov    al,[bp+0A]
   cs:0022 B425           mov    ah,25
   cs:0024 CD21           int    21
   cs:0026 1F             pop    ds
   cs:0027 5D             pop    bp
   cs:0028 CA0600         retf   0006
mumble mumble bp+0A e BP +06?
il primo parametro è un byte {che diventa un word perchè si possono 
pusshare solo i word... il secondo è un dword { puntore => seg+off } e 
allora perchè arriva a 10? mumble... vediamo di stare calmi... qui fa 
una retf quindi viene fatta una far call e parliamo di byte... il pascal 
al contrario del C pusha i valori nel ordine giusto { e non al coltrario 
  cosa indispensabile per l'uso del ellisse } quindi...
0A push int_da_chiamare
08 push off_puntatore
06 push seg_puntaore
poi viene fatta la chiamata far che comporta i due push per il ritorno
04 push off_ritorno
02 push seg_ritorno
00 push bp
tutti i push dopo questo punto non contano più perche abbiamo salvato 
lo steck in bp e non faremo riferimento proprio a bp { Base Pointer }
^__^ cosi è + chiaro no? ah per i maniaci se vi chiedete cosa è quel "6" 
dopo il return far sono i byte da addizionare a SP quando ritorna. In 
pratica distrugge i valori passati alla funzione come parametri...
ah l'unica istruzione un po' strana e LDS DX, [bp+06]... beh strana non 
tanto... ma a me non l'aveva insegnata il prof di sistemi l'ho imparata 
{ l'ammetto :P } proprio andando a leggere il codice prodotto dal BP. La 
LDS { dicevo } carina in DS:DX {in questo caso } il dword contenuto in 
[bp+06] che guarda caso è il puntatore.
Ricordo che l'archidettura x86 è tutta al contrario { ovvero se voi il 
word 0123 ve lo aspetate 01 e 23 in memria beh avrete delle belle 
soprese perchè è proprio il contrario prima 23 e poi 01 } essendo Little 
  Endian
Se siete stati cosi bravi da leggere fin qui beh vi ringrazio ^_^ ma 
ogni tanto credo proprio che hanno fatto male a chiudere il NG sul 
ASM... asm mi piace si impara troppe cose smanettando detnro i registri 
altro che le lezioni di Calcolatori Elettronici =_="


Ho mollato DOS, win16 e win32 da anni, credo che le funzioni siano proprio
quelle.
L'asm..che dire..hai tutto e non hai nulla...
Certo che però è bella, SUN e M$ si fanno guerra sulle applicazioni
portatili, tutti i vari linguaggi cercano di poter andare su più
piattaforme...e c'è ancora qualcuno che è legato al processore...
Bye,
Raktzo

 
Secondo te se non ci fossero persone che sanno programmare in assembler 
come puoi creare codice ottimizato per le differenti archidetture? Oh si 
bello avere avere un codice portabile... veramente bello ma esitono 
molti ambiti { più di quanto si pensa } dove la prestazione vince sul 
fatto che un WriteLn sia portabile.
Secondo te perke sia Intel che AMD { e credo proprio tutti gli altri } 
distribuisco i vari manuali? Per sport?
Quando fai un applicazione tipo unico va bene fatto in Java ma già 
quando parli di videogiochi beh la cosa cambia... si si esitono giochi 
in Java { il cell in testa } ma guarda che tipo di giochi sono. Sono 
giochi 2D... un riscoperta dei 8bit...
Prova a fare un killer application in Java o in DotNet e poi mi racconti 
i risultati....
Oh si l'ASM non serve proprio a niente...
che poi per dire Java da quel che so non suporta nessuna istruzione 
avanzata { MMX, SSE, SSE2 ecc } mi dici come { ad esempio } potresti 
fare un codec MPEG4 in Java? Oh si avresti un codec portatile ma... a 
che ti serve se poi per comprire un video ci metti 10 anni? E non dirmi, 
per favore, che intanto con il Pentium4 non ci meteresti niente...


 per favore, che intanto con il Pentium4 non ci meteresti niente...
...ma mica te la sei presa? Guarda se stiamo sulla stessa linea di pensiero!
Trovo assolutamente inutile la guerra che si stanno facendo, specie l'idea
di M$ che vuole .net ovunque. Spero non abbia intenzione di farci anche il
S.O.! Già win è quello che è chissa poi!
Certo, in alcuni ambiti è utile, ma non come il prezzemolo! Trovo giusto
anche quello che tu dici, andare direttamente sulla CPU ti permette
ottimizzazioni e prestazioni che difficilmente si posso equiparare.
Troverai anche che non puoi scrivere una grossa applicazione completamente
in asm...
Beh, siamo andati già abbastanza OT rispetto al post originale..
Bye,
Raktzo