home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / pascal / fastmove / fastmove.txt < prev    next >
Encoding:
Text File  |  1990-02-02  |  3.4 KB  |  57 lines

  1.                                   FASTMOVE
  2.                Vier GIGABYTE im Real Mode des 80386 adressieren
  3.                          (aus der c't 1/90 S.212ff)
  4.  
  5. Das Programm FASTMOVE klinkt sich in den Interrupt 15h ein und reicht alle 
  6. BIOS-Aufrufe weiter, mit Ausnahme der MoveBlock-Funktion. Wenn diese Funktion
  7. aufgerufen wird, liest das Programm die Quell- sowie Zieladresse aus den durch
  8. ES:SI angegebenen Deskriptoren aus und kopiert die Daten dann einfach via MOVS.
  9. Die etwas ungew÷hnliche vollstΣndige Angabe von
  10.                    'MOVS DWORD PTR [ESI],DWORD PTR [EDI]'
  11. ist notwendig, damit TASM nicht nur das 32-Bit-PrΣfix 66h, sondern auch noch
  12. das 'address size prefix' 67h ausgibt, das auf 32-Bit-Adressierung umschaltet.
  13. (Was sich in keiner Dokumentation findet: auch der ZΣhler CX wird auf die volle
  14. Breite von 32 Bit, ECX, umgeschaltet.)
  15. WΣhrend der Installationsphase des Programmes FASTMOVE wird die Adressleitung 
  16. A20 freigegeben und bleibt dann auch weiterhin mit dem Prozessor verbunden. Das
  17. ist v÷llig unproblematisch, denn eine Software, die den 'wrap around' ben÷tigt
  18. geh÷rt ins RaritΣtenkabinett. Auch gibt es so gut wie keinerlei Software (au▀er
  19. dem alten INT 15h), die am A20 Gate 'rumprogrammiert, so da▀ die neue BlockMove
  20. Routine nicht jedesmal - unter UmstΣnden zeitraubend - Gate A20 aufs neue frei-
  21. schalten mu▀. Gegebenenfalls kann man an der bezeichneten Stelle ein 
  22.                         CALL GATE_A20_EIN
  23. einfⁿgen.
  24. Weiterhin lΣ▀t der INT 15h natⁿrlich A20 auch nach Abschlu▀ unberⁿhrt, was ein
  25. gro▀er Vorteil gegenⁿber der ersetzten Routine ist; denn nun kann man auch TSR's
  26. sicher im HiMem (Speicherbereich zwischen 100000h und 10FFF0h) unterbringen. 
  27. Sollte beim Umschaltversuch von Gate A20 der Tastaturprozessor des AT aus irgend-
  28. welchen Grⁿnden nicht reagieren, so bricht das Programm mit einer Fehlermeldung
  29. und ohne Installation ab.
  30. Assembliert wird das Programm mit
  31.         TASM:   TASM FASTMOVE
  32.                 TLINK FASTMOVE /X/T
  33.  
  34.         MASM:   MASM FASTMOVE
  35.                 LINK FASTMOVE
  36.                 EXE2BIN FASTMOVE.EXE FASTMOVE.COM
  37.  
  38. Neben dem schnellen Schieben erm÷glicht FASTMOVE den Programmierern auch den
  39. direkten Speicherzugriff in die 4 GByte-Welt hinein - und zwar wundersch÷n li-
  40. near (nach dem Motto: 'Weg mit den Segmenten'). Eigentlich brΣuchte man dazu 
  41. nicht einmal den neuen INT 15h, sondern nur die Uminitialisierung der Deskrip-
  42. tor-Caches und die Freigabe der A20, was das Programm auf wenige Zeilen schrump-
  43. fen lie▀e. Es wΣre dann nicht einmal n÷tig, es resident zu laden. Der alte INT
  44. 15h wⁿrde jedoch die A20 wieder sperren, sobald die BlockMove-Routine aufgeru-
  45. fen wird (z.B. bei Benutzung einer RAM-Disk im extended Memory). Dadurch bekΣme
  46. man unsch÷ne L÷cher in den linearen Adre▀bereich hinein. Folglich ist es durch-
  47. aus sinnvoll, den INT 15h zu Σndern, um die A20 dauerhaft freizugeben. Das fun-
  48. ktioniert aber nur, wenn man keine Software geladen hat, die selber an der A20
  49. herumprogrammieren, wie z.B. HMS.
  50. In Turbo Pascal 4.0 ... ist die lineare Adressierung dank dews Datentypes 
  51. 'longint' als Index recht einfach und sehr schnell, wenige Zeilen Inline-Code
  52. (als zeitsparende Makros programmiert) reichen aus. Die vorgestellte Unit
  53. NOLIMIT liefert den 32-Bit-Ersatz fⁿr MEM und MEMW zum einen als Funktion
  54. GETMEMB/W und als Prozedur SETMEMB/W. Darⁿber hinaus kennt sie 'Peek' und
  55. 'Poke' fⁿr 32-Bit-Daten: SET/GETMEML.
  56.  
  57.