File : MM24INTR.TXT (c) MST Datum: 19 september 1992 Door : Ries Vriend / Ramon van der Winkel / Robbert Wethmar ----------------------------------------------------------- Deze tekst bevat een uitleg over de functies en het gebruik van MemMan. Voor meer informatie over de interne werking verwijzen we naar het bestand MM24SPEC.TXT, dat ook met MemMan meegeleverd wordt. Dat bestand staat boordevol voor programmeurs zeer waardevolle informatie. Als gebruiker van MemMan zult u er echter weinig nuttigs vinden. Inhoud ------ De bestanden Het configureren Het installeren MemMan automatisch intalleren Terminate and Stay Resident programma's TSR's laden TSR's bekijken TSR's verwijderen MemMan BASIC-statements MST's MemMan 2, de MSX Memory Manager ===================================== Begin 1990 riep MSX Computer Magazine voor het eerst de beste MSX programmeurs van Nederland bij elkaar met de bedoeling de MSX wereld nieuw leven in te blazen. De programmeursgroep maakte kennis en er werden ideeen uitgewisseld. Er bleek behoefte aan een Memory Mana- ger, een programma dat het geheugen van de MSX beheert. Met de Memory Manager worden twee doelen nagestreefd: 1) Het zoeken en gebruiken van geheugen wordt eenvoudiger. Het zoeken wordt door MemMan gedaan terwijl het gebruik van geheugen zoveel mogelijk wordt losgekoppeld van de configu- ratie: `oude' uitbreidingen, een, twee of meer mappers, MemMan heeft er geen moeite mee. 2) Het wordt mogelijk meerdere programma's tegelijkertijd in het geheugen te laden zonder dat ze elkaar in de weg zitten. Hierbij wordt gedacht aan RAMdisk's, printerbuffers en op de achtergrond werkende programma's. Met versie 1 van MemMan - ge‹ntroduceerd op 9 september 1990 - is de eerste doelstelling bereikt. Nu is de tweede doelstelling ook be- reikt. MemMan versie 2 kan meerdere programma's `ergens' in het geheugen laden laten werken, zonder dat ze van elkaar last hebben. Op andere computer merken was deze techniek al langer bekend. Dergelijke programma's worden daar TSR's genoemd, vandaar ook hier: Terminate and Stay Resident programma's. Hopelijk zullen nog meer programma's van MemMan gebruik gaan maken en bestaande programma's voor MemMan worden aangepast. Een direct voordeel is dat het programma dan ook direct met bijvoorbeeld 64 kB modules en zelfs met meerdere memory mappers kan werken, iets dat de meeste bestaande programma's niet of niet goed doen. MemMan versie 2 zal net als de eerste versie als Public Domain de wereld in gestuurd worden. Dat wil zeggen dat iedereen vrij van MemMan gebruik mag maken. Het is zelfs toegestaan MemMan als onder- deel van een commercieel pakket te verkopen. Alleen zo kan het programma uitgroeien tot een aanvulling op de MSX standaard. Er zullen twee pakketten uitgebracht worden. De eerst is voor de gebrui- ker van MemMan. Dit pakket zal MemMan en een aantal tools voor de TSR's bevatten. Het tweede pakket bevat ontwikkel tools en technische documentatie over het programmeren van TSR's. Dit laatste pakket is geen Public Domain. Aan MemMan werkten en dachten mee: Ramon van der Winkel Ries Vriend Robbert Wethmar Paul te Bokkel Markus The en een aantal anderen die met hun opbouwende kritiek MemMan hielpen worden tot wat het is. De bestanden ------------ MEMMAN.COM Dit bestand bevat MemMan zelf, het kan ingeladen worden vanaf de DOS prompt, door MEMMAN in te typen. Intern is dit bestand gelijk aan MEMMAN.BIN, alleen de manier van laden is anders. MEMMAN.BIN Dit bestand bevat MemMan zelf, het kan ingeladen worden vanuit BASIC door BLOAD "MEMMAN.BIN",R in te typen. Intern is dit bestand gelijk aan MEMMAN.COM, alleen de manier van laden is anders. TL.COM De TSR Loader. Met TL kunnen TSR's vanuit DOS in het geheugen geladen worden. Vanuit BASIC kunnen TSR's geladen worden met CMD TL. TV.COM De TSR Viewer. Met TV kan vanuit DOS een overzicht van de in het geheugen aanwezige TSR's en hun volledige namen (TSR ID's) op het scherm gezet worden. Vanuit BASIC is er voor dat doel CMD TV. De TSR ID's zijn onder andere nodig om een TSR te kunnen verwijderen met TK TK.COM De TSR Killer. Met TK kunnen TSR's vanuit DOS uit het geheugen verwijderd worden. Vanuit BASIC kunnen TSR's verwijderd worden met CMD TK. De benodigde naam van de TSR kan met TV achterhaald worden. CFGMMAN.COM Het configuratieprogramma voor MemMan. Met CFGMMAN kunnen MEMMAN.COM en MEMMAN.BIN vanuit DOS geconfigu- reerd worden. Zo is het bijvoorbeeld mogelijk een commando na het laden automatisch uit te laten voeren. MM24SPEC.TXT De specificaties van MemMan 2.4, informatie voor pro- grammeurs. Voor gebruikers is hooguit het deel met veranderingen in de laatste versie interessant. MM24INTR.TXT Een introductie van MemMan 2.4, voor wie MemMan gebruikt of met MemMan toepassingen wil werken. In dit bestand staat alle noodzakelijke informatie, alleen niets over de interne werking van MemMan. TV.BAS Een voorbeeld van het gebruik van de ingebouwde TSR commando's in BASIC. Geen wezenlijk onderdeel van MemMan. BK.COM De bestandskopieerder die van MemMan gebruik maakt, geen wezenlijk onderdeel van MemMan. BK-MAN.TXT De handleiding bij BK.COM, geen wezenlijk onderdeel van MemMan. overigen Verder worden met MemMan een aantal voorbeeld TSR's (CAPS.TSR en COLOR.TSR) meegeleverd. Ze zijn als illu- stratie en voorbeeld bedoeld en zijn geen wezenlijk onderdeel van MemMan. Het configureren ---------------- MemMan is er in twee versies: een .BIN en een .COM file. Het zal duidelijk zijn dat de .BIN versie vanuit BASIC met een BLOAD"MEM- MAN.BIN",R instructie geladen kan worden, terwijl de .COM vanuit MSXDOS gestart kan worden door simpelweg MEMMAN in te tikken. Beide versies keren na het laden - via een zogenaamde `warm boot' - automa- tisch terug naar BASIC. Als de .COM versie vanuit MSXDOS opgestart wordt, dan kan een commandline als argument meegegeven worden. Zo'n command line bevat commando's welke uitgevoerd zullen worden alsof ze ingetikt zijn. Een Return kan met het @ teken worden opgegeven. Er kunnen meerdere @ tekens in de commandline worden opgegeven, zodat meerdere commando's na elkaar uitgevoerd kunnen worden. Bijvoorbeeld: A>MEMMAN _SYSTEM@TL CAPS@ Na het opstarten van MEMMAN zal naar MSXDOS teruggekeerd worden en de TSR "CAPS" ingeladen worden. Met behulp van CFGMMAN is het mogelijk een aantal instellingen van MemMan en een default commandline op te geven. CFGMMAN.COM kan zowel de .COM als de .BIN versie configureren. Met betrekking tot de TSR's kunnen de volgende instellingen veranderd worden: - Default command line Hier kan de standaard commando-regel ingevoerd worden. Deze comman- do-regel wordt uitgevoerd nadat MemMan ge‹nstalleerd is. Na het laden van de .BIN versie van MemMan wordt altijd de standaard comman- do-regel uitgevoerd. De standaard commando-regel wordt niet uitge- voerd indien MemMan vanuit DOS opgestart wordt met een commando regel als argument. Na foutmeldingen van MemMan wordt geen commando regel uitgevoerd. - Heap grootte Sommige TSR programma's hebben extra geheugen nodig in geheugen pagina 3, waar ze normaal gesproken geen toegang toe hebben. De heap is een stuk geheugen in pagina 3 dat wel voor TSR's toegankelijk is. Wanneer een TSR meldt dat er te weinig heap geheugen beschikbaar is dient deze waarde verhoogd te worden. Meestal zal het toevoegen van 100 extra bytes heap-geheugen de problemen uit de wereld helpen. Wanneer een TSR meer heap-ruimte nodig heeft dient de handleiding dat te vermelden. Elke verandering van de heap-grootte heeft slechts effect na het opnieuw laden van MemMan. - Maximum aantal TSR's dat tegelijk aanwezig kan zijn Het aantal TSR's dat onder MemMan 2 geladen kan worden is beperkt. Wanneer de TSR Loader (TL) de melding `TSR Table Full' geeft dient deze waarde verhoogd te worden. - Maximum aantal hooks dat tegelijk afgebogen kan zijn Het aantal hooks dat door alle in het geheugen aanwezige TSR's kan worden afgebogen is beperkt. Wanneer de TSR Loader de melding `Hook Table Full' geeft dient deze waarde verhoogd te worden. - Recursiediepte Wanneer TSR's elkaar of zichzelf te vaak aanroepen zal het systeem op een gegeven moment vastlopen. Door de maximale recursiediepte te verhogen kunnen deze problemen voorkomen worden. TSR's die zichzelf aanroepen dienen dat - met de benodigde recursiediepte - te vermel- den in de handleiding. Het installeren --------------- Om MemMem vanuit MSX-DOS te laden is het intikken van `MEMMAN' achter de `>'-prompt voldoende. Vanuit BASIC dient het commando BLOAD "MEMMAN.BIN",R ingevoerd te worden. Na de installatie van MemMan wordt in beide gevallen BASIC gestart, waarna de standaard commando regel uitgevoerd wordt, zoals opgegeven in het configuratie programma CFGMMAN. De standaard commando-regel wordt niet uitgevoerd indien MemMan vanuit DOS gestart wordt met een vervangende commando-regel als argument. Versie 2 van MemMan neemt behalve een stuk BASIC-geheugen ook een 16 kB segment in beslag. Hierdoor blijft er onder BASIC en MSXDOS zoveel mogelijk geheugen beschikbaar. De ruimte die in het 16 kB segment over is wordt indien mogelijk gebruikt om TSR's in onder te brengen. De hoeveelheid BASIC-geheugen die MemMan gebruikt kan be‹nvloed worden door middel van het configuratieprogramma CFGMMAN. Wanneer MemMan onder DOS2 ge‹nstalleerd wordt blijven alle segmenten - behalve die ene die MemMan zelf nodig heeft - ook voor DOS2 be- schikbaar. Het is dus zonder meer mogelijk eerst MemMan te instal- leren en daarna een DOS2 RAMdisk. Alvorens zichzelf in het RAM te nestelen controleert MemMan natuur- lijk of er al een versie van MemMan aanwezig is. In dat laatste geval verschijnen de info-regels, aangevuld met de mededeling dat MemMan reeds ge‹nstalleerd is. Verder gebeurt er niets. De commando- regel wordt gewoon uitgevoerd. MemMan automatisch intalleren ----------------------------- Net als elk willekeurig ander programma kan MemMan in AUTOEXEC.BAS of .BAT opgenomen worden. Er is echter ‚‚n `probleem': bij het installe- ren van MemMan wordt een `warm boot' uitgevoerd waarna de computer in MSX BASIC terecht komt. Daardoor stopt de uitvoering van de AUTOEXEC. Gelukkig is er een eenvoudige en afdoende oplossing voor dit pro- bleem. De truuk is dat het met CFGMMAN mogelijk is een `command line' in MemMan in te stellen. Deze command line wordt uitgevoerd onmiddellijk nadat MemMan geinstalleerd is. Het eerste commando in de command line moet dan ook een MSX BASIC commando zijn. Wie onder DOS werkt, zal over het algemeen uit AUTOEXEC.BAT MemMan installeren door MEMMAN.COM uit te voeren. Wanneer er vervolgens nog andere zaken geinstalleerd moeten worden - bijvoorbeeld een reeks TSR's - dient de command line er als volgt uit te zien: CALL SYSTEM@GOON@ Hierin staan de apestaartjes (@) voor Return, en is GOON de naam van een batchfile dat na de installatie van MemMan uitgevoerd zal worden. In GOON.BAT kunnen dan volgende uit te voeren commando's opgenomen worden. Wanneer het bijvoorbeeld de bedoeling is TED te starten met een printerbuffer van 48 kB: TL PB PRINT /i48 TED natuurlijk moeten hiervoor wel de bestanden TL.COM, PRINT.COM en TED.COM op de disk aanwezig zijn. Wie onder Basic werkt zal na de installatie van MemMan vaak nog wat TSR's willen installeren. Ook hier kan dat prima door na MemMan automatisch een tweede BASIC programma uit te laten voeren, door als command line in te stellen: RUN "GOON.BAS" Waarna GOON.BAS er bijvoorbeeld kan uitzien als: 10 CMD TL ("TRACER",t) 20 CMD TL ("PB",t) 30 NEW Om bijvoorbeeld de TSR's TRACER.TSR en PB.TSR automatisch in te laden waarna er in BASIC geprogrammeerd kan worden. Natuurlijk is het ook mogelijk in regel 30 en verder nog andere TSR's te laden, een pro- gramma te starten of bijvoorbeeld de gebruiker te vragen welke TSR's er al dan niet geladen moeten worden... Wie slechts in een enkele TSR geinteresseerd is kan het natuurlijk ook zonder GOON.BAT of GOON.BAS doen. Ook het laden van TSR's uit de command line van MemMan is geen enkel probleem. _SYSTEM@TL PB@TED@ Bovenstaande commandline gaat na het laden van MemMan terug naar DOS, laadt de printerbuffer en start de tekstverwerker TED. Hiervoor is TL.COM nodig, maar het kan ook eenvoudig zonder: CMD TL("PB",T)@_SYSTEM@TED@ Nu wordt PB uit BASIC geladen door middel van MemMan's CMD comman- do's. Dat gaat iets sneller omdat TL.COM niet eerst geladen hoeft te worden. Terminate and Stay Resident programma's --------------------------------------- Gewoonlijk zal een programma na uitvoering niet in het geheugen achterblijven. Programma's die dat wel doen worden aangeduid met de afkorting TSR: Terminate and Stay Resident. Voorbeelden van derge- lijke programma's zijn: printerbuffers en RAMdisks. Maar ook andere toepassingen, zoals een rekenmachine of een kalender die met een enkele toetsdruk opgeroepen kan worden zijn denkbaar. In het verleden zijn TSR's voor de MSX een tamelijk zeldzaam ver- schijnsel geweest. Het probleem was namelijk dat het geheugen dat de TSR gebruikt ook door andere programma's gebruikt kan worden. Er zijn in een standaard MSX machine geen mogelijkheden om een stuk geheugen voor een TSR te reserveren. Dit probleem wordt door MemMan uit de wereld geholpen. MemMan beheert het geheugen en zorgt er voor dat er geen geheugenconflicten optreden. Dankzij MemMan is het mogelijk meerdere TSR's tegelijk in het geheu- gen te hebben, waarbij elke TSR maximaal 16 kB groot kan zijn. Op de standaard MSX is het laden van meer dan ‚‚n TSR al lastig en alleen mogelijk als de TSR niet al te groot is. Met de invoering van MemMan 2 krijgt de MSX betere TSR mogelijkheden dan de alom gewaardeerde PC. Bovendien doen ze niet onder voor de `Desktop Accesoires' zoals die op de Macintosh en de Atari ST gebruikt worden. Bij MemMan worden twee eenvoudige voorbeeld TSR's geleverd. Ze doen weinig zinvols, maar demonstreren wel degelijk de kracht vn Termina- te and Stay Resident programma's. De voorbeelden zijn CAPS.TSR en COLOR.TSR. De eerste laat het Caps lampje knipperen, de tweede maakt dat het Basic commando CMD COLOR de voor- en achtergrondkleur van het scherm verwisseld. In de toekomst zullen er echter meer en meer TSR's verschijnen, met mogelijkheden waar de MSX gebruiker tot voor kort alleen maar van kon dromen. TSR's laden ----------- TSR programma's zijn te herkennen aan de extensie van de bestands- naam: ze eindigen op .TSR. Deze files bevatten naast de eigenlijke programmacode ook alle informatie die nodig is om de TSR goed in het geheugen te installeren. Om bijvoorbeeld de demonstratie TSR `CAPS' - die overigens niets anders doet dan het Caps lampje laten knipperen - te laden moet onder MSX-DOS ingetikt worden: TL CAPS Er mogen meerdere TSR-bestandsspecificaties achter elkaar worden opgegeven. Indien MSX-DOS2 gebruikt wordt, mag ook de subdirectory worden opgegeven, waaruit de TSR geladen moet worden. Bijvoorbeeld, door middel van het volgende commando worden zowel de TSR `CAPS' ingeladen, als ook alle TSR's waarvan de bestandsnaam begint met `DEMO'. TL CAPS DEMO* `TL' betekent `TSR-Load', het is het programma dat de TSR laadt en in het geheugen plaatst. Ook onder BASIC is een versie van TSR-Load beschikbaar, zie hiervoor het hoofdstuk `MemMan BASIC statements'. Zodra TL de TSR in het geheugen geinstalleerd heeft zal het program- ma actief worden. In bovenstaand voorbeeld wil dat zeggen dat het CAPS lampje zal gaan knipperen en bij iedere toetsaanslag het casset- terelais aan of uit geschakeld wordt. TL is een slim programma. Zolang er in het MemMan segment nog ruimte is voor TSR's zullen ze daar geplaatst worden. Alleen als dat ook echt nodig is wordt een nieuw segment gebruikt, dat voor overige toepassingen dan onbereikbaar gemaakt wordt. Dat gebeurt bijvoor- beeld als er een uitzonderlijk groot TSR programma wordt geladen. Wanneer er vervolgens weer een kleinere wordt geladen zal TL eerst alle bestaande TSR segmenten aflopen om te zien of er ergens nog ruimte is. De volgorde waarin de TSR's geladen worden zal dan ook geen invloed hebben op het geheugengebruik. Onder MSXDOS2 zal TL bij het inladen van TSR's ook gebruik maken van het environment item `TL' om te achterhalen waar de TSR's staan. Harddisk bezitters hoeven slechts een `SET TL=A:\TSRS' in hun AUTO- EXEC.BAT op te nemen en alle TSR's in de subdirectory A:\TSRS zijn ten aller tijde bereikbaar voor TL. Het opgeven van een pad is dan niet meer nodig. TSR's bekijken -------------- Het is ten aller tijde mogelijk te kijken welke TSR's er op dit moment in het geheugen actief zijn. Daartoe bevat het MemMan pakket de utility TV, TSR-View. Het gebruik is de eenvoud zelf: gewoon achter de DOS prompt intikken: TV Er zal een overzicht verschijnen van de op dit moment actieve TSR's, compleet met hun volledige naam. Deze naam moet voor iedere TSR uniek zijn, en zal dan ook vrijwel altijd de initialen van de pro- grammeur bevatten. Deze naam is dus een andere dan de bestandsnaam! Het is deze volledige naam - het TSR ID - die nodig is als een TSR uit het geheugen verwijderd moet worden. Ook programma's die direct met TSR's samenwerken kunnen deze naam gebruiken om te zien of een TSR in het geheugen aanwezig is. Achter de namen van de TSR's meldt TV tevens in welk segment ze staan en welke hooks er afgebogen zijn. Dat laatste is eigenlijk alleen voor programmeurs van belang. In welk segment een TSR staat is echter ook in andere gevallen handig om te weten. Door alle TSR's uit een bepaald segment te verwijderen wordt dat segment namelijk weer vrijgegeven voor het gebruik door andere programma's. De enige uitzondering daarop is segment 0, waar behalve TSR's ook een groot deel van MemMan zelf staat. TSR's verwijderen ----------------- Zoals gezegd is het ook mogelijk TSR programma's weer uit het geheu- gen te verwijderen. Het benodigde programma heet TK, TSR-Kill. TK zorgt er voor dat een TSR netjes verwijderd wordt. Alle andere TSR's blijven vlekkeloos doorwerken, als de TSR als enige in een segment stond wordt dat segment weer vrijgegeven voor gebruik door overige toepassingen. Om bijvoorbeeld het het Caps lampje weer normaal te laten werken en het knipperen uit te schakelen is het verwijderen van de betrokken TSR voldoende. Daartoe tikt u: TK "MJVcapsblink" Hierbij dient de volledige naam van de TSR tussen aanhalingstekens opgegeven te worden. Er kunnen meerdere TSR's in ‚‚n keer worden verwijderd, door de namen achter elkaar in te voeren. Bijvoorbeeld: TK "TSR naam 1" "TSR naam 2" "TSR naam 3" TSR-Kill kan behalve geheugen weer vrijmaken voor gebruik, ook gebruikt worden om vastgelopen TSR's uit het geheugen te verwij- deren. Een TSR die om welke reden dan ook niet meer vlekkeloos functioneert zal met behulp van TK meestal nog wel verwijderd kunnen worden. Vervolgens kan de TSR met TL weer geladen worden, op dezelf- de manier als het opnieuw starten van gewone programma's nog wel eens wil helpen geldt dat ook voor TSR's. MemMan BASIC-statements ----------------------- Vanaf versie 2.3 bevat MemMan enkele statements en functies die vanuit MSX-BASIC toegepast kunnen worden. Hiertoe is MemMan van een systeem TSR voorzien, met de ID-naam "MST TsrUtils". Deze TSR heeft volgnummer 0 en kan niet door TSR-Kill verwijderd worden. Hieronder volgt een beschrijving van de beschikbare BASIC-instructies. De betekenis van de gebruikte symbolen is als volgt: [] Wat tussen vierkante haken staat mag worden weggelaten. <> Omschrijvingen van parameters staan tussen gehoekte haken. ()", Ronde haken moeten worden ingetikt, evenals leestekens en comma's. Commando: TSR-Load Syntax: CMD TL("",[T],[],[]) Soort: Statement Voorbeeld: CMD TL("PB") CMD TL("ALARM",T,,A) Functie: Laadt een TSR-bestand in het geheugen. =Naam van het TSR-bestand. Onder MSX-DOS2 mag een subdirectory worden opgegeven. T = Toon de intro-tekst van de TSR. = Naam van een string-variabele waarin de TSR ID-naam zal worden opgeslagen. = Variabele waarin een foutcode wordt opgeslagen. Indien deze variabele wordt weggelaten, zal in geval van laadfouten een standaard BASIC-foutmelding worden gegeven. De foutcodes zijn als volgt: 0 = TSR met succes ingeladen 1 = Installatie door de TSR afgebroken 2 = Structuurfout in TSR bestand 3 = TSR-tabel vol 4 = Hook-tabel vol 5 = Geen vrij MemMan segment 6 = Te weinig vrij BASIC werkgeheugen Commando: TSR-Kill Syntax: CMD TK("") Soort: Statement Voorbeeld: CMD TK("MJV printbuf") Functie: Verwijdert een TSR uit het geheugen. =Identificatienaam van de te verwijderen TSR. Deze naam kan worden opgevraagd door middel van TSR-View of Find-TSR. Commando: TSR-View Syntax: CMD TV Soort: Statement Functie: Toont een overzicht van de ID-namen van alle actieve TSR's. Commando: Find-TSR name Syntax: ATTR$ FT("") Soort: Functie Voorbeeld: IF ATTR$ FT("CAPS") THEN CMD TK("CAPS") Functie: Levert de waarde -1 indien de opgegeven TSR is ge‹n- talleerd, levert anders de waarde 0. =Identificatienaam van de TSR. Commando: Find-TSR number Syntax: ATTR$ FT() Soort: Functie Voorbeeld: N$ = ATTR$ FT(0) Functie: Levert de ID-naam van de TSR met het opgegeven volg- nummer. Indien het volgnummer groter is dan het aantal actieve TSR's, dan wordt een lege string met lengte 0 teruggeven. Commando: Help Syntax: CMD HELP Soort: Statement Voorbeeld: CMD HELP Functie: Geeft op het scherm informatie over alle aanwezige TSR's die CMD HELP ondersteunen. Dat zijn in ieder geval de altijd aanwezige TSR `MST TsrUtils' en bij- voorbeeld de Tracer. (Voor programmeurs: zie program- meurs tips en aanwijzingen in MM24SPEC.TXT) ** Einde **