MP_FLAGS 1.0.0
==============

Beschreibung
------------

MP_FLAGS dient zur Vernderung des Speicherschutzes eines Programmes
unter MultiTOS. Es erfllt im Wesentlichen den gleichen Zweck, wie das 
zu MultiTOS gelieferte CHPROT.APP, welches meiner Meinung nicht nur ein 
wenig, sondern gnzlich unbrauchbar ist.

MP_FLAGS ist eine Kontrollfeld-Erweiterung - also einfach in den
CPX-Ordner geschoben und schon ist es (nach dem nchsten Booten, oder
nach dem neuladen der Erweiterungen) verwendbar.

MP_FLAGS ist mit Absicht klein und bescheiden gehalten, mgliche
Erweiterungen, wie z.B. das Einstellen aller Programmflags fehlen (das 
kann ja sowieso jedes 0815-Programm, also wieso den gleichen Krempel 
zweimal auf der Harddisk haben ?!?).


Hinweis
-------

Bei der Erstellung von MP_FLAGS und dieser Anleitung wurde mit grsster 
Sorgfalt vorgegangen. Trotzdem knnen Fehler nicht ausgeschlossen 
werden. Weder der Autor, Bruno Essmann, nocht Bermuda Software 
Publishing bernehmen irgendeine Haftung fr eventuell vorhandene 
Programm- oder Dokumentationsfehler sowie deren Folgen.

Copyright  1993, Bermuda Software Publishing.
MP_FLAGS darf frei kopiert und weitergegeben werden, unter der 
Bedingung, dass sowohl dieser Haftungsausschluss als auch die Copyright 
Notiz auf allen Kopien erhalten bleibt. Der Module Builder darf jedoch 
ohne schriftliche Genehmigung des Autoren nicht verkauft oder fr 
Gewinn vertrieben, oder anderer Software, welche verkauft oder fr 
Gewinn vertrieben wird beigelegt werden.

MP_FLAGS ist ein freeware Produkt. Die Bentzung von MP_FLAGS ist ohne 
irgendeine Registrationsgebhr gestattet.

MP_FLAGS ist kein kommerzielles Produkt von Bermuda Software 
Publishing. Wir knnen daher den typischen Servie fr kommerzielle 
Software unserer Firma, wie z.B. Telefon-Support, Mailings oder Upgrade 
Service nicht bieten.

Anwender, welche keinen Zugang zu elektronischen Quellen von Free- und 
Shareware Software haben, oder welche einfach sicherstellen wollen, 
dass sie die neueste Version des MP_FLAGS haben, knnen eine Kopie von
MP_FLAGS durch das Zusenden eines frankierten und an sich selbst 
adressierten Umschlages und einer 720K Diskette an die untenstehende
Adresse erhalten. Leute ausserhalb der Schweiz knnen einen
internationalen Rckantwortschein anstelle von schweizer Briefmarken 
beilegen (internationale Rckantwortscheine sind bei jeder Poststelle 
erhltlich). Bitte bentzen Sie dicke Umschlge, oder besser einen 
speziellen "disk mailer".

  Kontaktadresse:
  Bruno Essmann
  Bermuda Software Publishing
  Dbendorfstrasse 184/02
  CH-8051 Zrich

(Soviel zum obligatorischen Teil, der ja sowieso jedes Mal einfach 
hinenkopiert wird :-))


Die Speicherschutzflags
-----------------------

Private:
Nur der Prozess und das Betriebssystem knnen auf den Speicher des 
Programmes zugreifen, das gilt fr Lesen und Schreiben. Solche 
Programme sind also hervoragend vor usseren Einflssen abgeschirmt.

Global:
Der Speicher eines solchen Programmes ist berhaupt nicht geschtzt, 
alles und jeder kann sowohl lesend als auch schreibend darauf 
zugreifen. Natrlich knnen "wildgewordene" Applikationen ein Programm 
mit diesem Status auch leicht beschdigen, daher sollte dieses Flag nur 
dann gesetzt sein, wenn es unbedingt sein muss.

Super:
Im Supervisor-Mode kann auf diesen Speicher ungestraft zugegriffen 
werden, das gilt auch hier wieder fr Lesen und Schreiben. Super bietet 
ein wenig mehr Schutz als Global, da man davon ausgehen kann, dass 
Programme die im Supervisor-Modus laufen, eher wissen, was sie in dem 
Speicher anderer Programme treiben und nicht zufllig darin 
"herumschreiben".

Readable:
Hier drfen alle anderen lesend auf den Speicher des Programmes 
zugreifen. Schreiben ist weiterhin strikt verboten! Speziell ltere
Programme, die mit dem AV-Protokoll Parameter bergeben, knnen durch 
das Flag Readable zur ordnungsgemssen Mitarbeit unter MultiTOS mit 
Speicherschutz berredet werden.


Die Flags in der Datei
----------------------

Fr die wenigen Programmierer, die sich ein solches Tool noch nicht 
selbst geschrieben haben und dies sowieso noch tun werden:

Der Datei-Kopf eines 'Executables':

typedef struct
{
    WORD    ph_branch;      /* Jump zum Programmanfang == 0x601A */
    LONG    ph_tlen;        /* Lnge TEXT-Segment */
    LONG    ph_dlen;        /* Lnge DATA-Segment */
    LONG    ph_slen;        /* Lnge BSS-Segment */
    LONG    ph_res1;        /* Reserviert == 0L */
    LONG    ph_prgflags;    /* Die (interessanten) Programmflags */
    WORD    ph_absflag;     /* Relozierinfo-Flag */
} ProgramHeader;

Fr den geneigten Programmierer ist hier nur ph_prgflags interessant - 
und davon auch nur ein Nibble, doch sehen Sie selbst:

Bits     | Information
---------+--------------------------------------------------------------
       0 | 1 = Fastload-Flag
       1 | 1 = Program may load into alternative RAM
       2 | 1 = Malloc calls may be satisfied from alternative RAM
       3 | Reserved; must be 0
  4 -  7 | Default memory-protection mode: (Speicherschutzflags)
         | 0 = private, 1 = global, 2 = super, 3 = readable
  8 - 11 | Reserved; must be 0
      12 | Shared text bit (see atari docs for more information)
 13 - 27 | Reserved; must be 0
 28 - 31 | minimum amount of alternative RAM acceptable for program
         | to run (see atari docs for more information)

Tja, wie Sie sehen - einfach die Bits 4-7 auf den gewnschten Wert 
(0-3) setzen und schon ist der default mode schon gendert.
