Skip to content

Latest commit

 

History

History
76 lines (57 loc) · 3.61 KB

turbo_pascal_patch.md

File metadata and controls

76 lines (57 loc) · 3.61 KB
                 T P A T C H   1 . 1 
                                               
      
      Nieuw in deze versie: aanpassing heap adres
      
      TPATCH  patcht Turbo Pascal 3.0A MSX programma's automatisch 
      voor het  gebruik met  de MST  Memory Manager.  MemMan TSR's 
      functioneren  alleen  correct  als  de  stackpointer in  RAM 
      pagina  3 staat.  Turbo Pascal  zet echter  zelf een  lokale 
      stack op,  waarbij de  stackpointer in pagina 1 of 0 terecht 
      kan komen. Dat kan tot een crash leiden.
      
      Het   is   weliswaar   mogelijk   met   een   debugger   het 
      stackpointer-adres in TP-programma's aan te passen, maar dat 
      neemt  veel  tijd  in beslag.  Daarom is  TPATCH geschreven. 
      TPATCH  zet de stackpointer van het TP-programma automatisch 
      op het default adres (0C500H in de distributie-versie) of op 
      een adres  dat als parameter in de commandline opgegeven is. 
      Versie 1.1 van TPATCH past bovendien de heap-pointer aan.
      
      
      Turbo Pascal deelt programma's als volgt in:
      
      00100H   Start runtime
      020EAH   Start programma
      0xxxxH   Ruimte voor stack & heap
      0yyyyH   Start data
      0zzzzH   Eindadres programma
      
      Na het gebruik van TPATCH ziet de indeling er als volgt uit:
      
      00100H   Start runtime
      020EAH   Start programma
      0xxxxH   Loze ruimte (zo klein mogelijk houden)
      0yyyyH   Start data
      0zzzzH   Eindadres programma
      0zzzzH+1 Ruimte voor stack & heap
      0ssssH   Opgegeven top van de stack
      
      
      Doordat  het  heap-adres  in  de  vorige  versie  niet  werd 
      veranderd, gaf de MAXAVAIL functie verkeerde resultaten. Die 
      functie geeft  namelijk het verschil weer tussen de adressen 
      waar  stackpointer en  heappointer zich  bevinden. Wordt  de 
      stackpointer BOVEN het programmagedeelte geplaatst, dan ziet 
      MAXAVAIL veel  meer ruimte  dan er  is, en kan programmacode 
      overschreven  worden.
      
      De ruimte die voorheen voor heap en stack gereserveerd werd, 
      dient  nu zo  klein mogelijk  gemaakt te worden, door in het 
      compiler-Options menu van Turbo Pascal het eindadres zo laag 
      mogelijk  te  zetten  (zodat  nog nät  geen memory  overflow 
      ontstaat). Een  bijkomend voordeel  is dat  de uiteindelijke 
      COM-file die Turbo Pascal aanmaakt kleiner wordt.
      
      Houd er  bij het  programmeren verder  rekening mee,  dat de 
      heap   en  stack   voldoende  ruimte   moeten  hebben.  Maak 
      programma's  niet   te  groot.   Overlays  gebruiken   extra 
      heapruimte.
      
      
      Het gebruik van TPATCH:
      
              TPATCH FILENAAM[.COM] [hhhh]
      
      Vul  voor  de  hhhh  het  (hexadecimale)  adres  in  waar de 
      stackpointer  op  moet  komen  te  staan.  Wordt  alleen  de 
      filenaam opgegeven, dan zet TPATCH de stackpointer op $C500. 
      Die zgn.  'default' waarde  is aan  te passen  door met  een 
      debugger  of disk-editor (eenmalig) het programma TPATCH.COM 
      aan  te  passen. Op  de adressen  $102 en  $103 (START+2  en 
      START+3)  staat  nu:  00  C5, zijnde  $C500 in  hexadecimale 
      notatie (LSB,MSB). Dat kan naar believen veranderd worden.
      
                                                    Pierre Gielen