• No results found

Dit programma is, wat betreft de modulus-berekening, geheel overgenomen in de subrou-tine SBMAC, die al behandeld is bij de wijzigingen in BWRK.

4.3 Samenvoeging tot ´ e´ en geheel

Het programma is nu gesegmenteerd, omdat het te groot werd om in het geheugen te kunnen draaien. De herhalingslus bleek hierbij klein genoeg om er ´e´en segment van te kunnen maken. Het programma bestaat uit de volgende delen ( zie ook Appendix C ) : SHIM Het hoofdprogramma, dat de verschillende segmenten aanroept en de initialisatie

doet bij de eerste aanroep van het programma.

SBGIN Het eerste segment, dat de aanroepparameters van het SHIM-programma ver-werkt. Bovendien stelt het de instelvragen en verwerkt het de gegeven antwoorden.

Tenslotte wordt er alvast een kleine voorbereiding gedaan voor het plotten, die in ieder geval gedaan moet worden, indien er een plot gewenst is.

SVRBR Het tweede segment, dat de voorbereiding voor het meten, plotten, bewerken en het gebruik van de toetsen verzorgt. Hierin wordt derhalve o.a. het programma SASC gestart en de subroutine BSTRT aangeroepen.

SLOOP Het derde segment, dat ofwel de subroutine voor het automatisch shimmen aanroept, ofwel de herhalingslus met het meten, bewerken en plotten verzorgt. Bij het automatisch shimmen wordt ook enkele malen een slag van de herhalingslus aangeroepen.

SEIND Het laatste segment, dat ervoor zorgt, dat het programma op een nette manier afsluit en de vraag of men geheel wil stoppen stelt. Als men wil stoppen wacht dit segment, alle parameters bewarend, op een volgende aanroep, waarna het pro-gramma SHIM het segment SBGIN weer start om de aanroep te verwerken.

De benodigde delen van de bestaande programmatuur zijn zodanig ge¨ımplementeerd, dat de herhalingslus van het programma zo kort mogelijk is geworden. Vanwege deze reden is van de herhalingslus ´e´en segment zonder aanroepen van andere segmenten of programma’s gemaakt, omdat een aanroep van een segment of een programma circa 0,2 s extra aan tijd in beslag neemt t.o.v. het aanroepen van een subroutine.

Om het geheugengebruik te beperken is er een maximum van 1024 punten gemaakt voor het aantal bemonsterpunten. Bovendien is het gebruik van EMA nu niet meer nodig.

Na de toevoeging van de subroutine voor het automatisch shimmen neemt het pro-gramma SHIM de maximale geheugenruimte in beslag, die voor ´e´en programma beschik-baar is. Dit komt, omdat deze subroutine nog niet over de verschillende segmenten verdeeld is en daardoor het segment SLOOP onnodig groot heeft gemaakt. Hierdoor heeft men in het segment SLOOP op dit moment niet veel ruimte meer om nieuwe dingen toe te voegen.

4.4 Toevoegingen

De volgende subroutine’s zijn ontwikkeld om verschillende punten van het shimprogramma te gaan verzorgen :

STELVRAGEN In het segment SBGIN zijn instelvragen nodig, die door deze tine worden gesteld. De subroutine is in Pascal/1000 geschreven. De andere subrou-tine’s zijn vnl. in Fortran/1000 geschreven.

VRAAG De subroutine STELVRAGEN gebruikt deze subroutine om vragen te stellen.

Er wordt net zo lang een toets ingelezen, totdat de toets bij de meegegeven mogeli-jke antwoorden voorkomt. Met <Return> wordt het antwoord het achter de vraag aangegeven karakter. Voor de vragen over de defaultantwoorden en het geheel stop-pen wordt de subroutine ook los aangeroestop-pen in resp. de segmenten SBGIN en SEIND. Ook deze subroutine is in Pascal/1000 geschreven.

RDEXT Deze subroutine wordt aangeroepen, als er voor gekozen is om voor de verticale of horizontale schaling een eigen schaling in te geven en leest deze dan in. Dit gebeurt in de voorbereiding voor het plotten in segment SVRBR.

AUTSH Door Johan van der Molen was reeds een voorlopig programma gemaakt, dat de instellingen voor de shim- en gradi¨entspoelen weergeeft op het beeldscherm, waarmee

een automatisch shimprogramma itereert tot een optimale shimstand. Van dit pro-gramma is een subroutine gemaakt welke een van de berekende parameters kan nemen om te optimaliseren. Het gebruikt niet de herhalingslus, maar roept steeds afzonderlijk een nieuwe meet- en bewerkslag aan. De uiteindelijke versie van het automatisch shimmen zal later deze versie vervangen.

MTSLG Hierin wordt het experiment verricht, de data voorbewerkt, waarna de para-meters berekend worden, een plot van het spectrum gemaakt en de toetsen van de SASC verwerkt. Bij dit alles wordt rekening gehouden met de antwoorden op de instelvragen.

SPPAR wordt elke slag van de herhalingslus aangeroepen. De subroutine berekent de parameters T2, het oppervlak onder de tijdkromme, de maximum en eventueel de minimum amplitude in het spectrum en het linker en rechter halfwaardepunt daarin.

WRPAR wordt elke slag van de herhalingslus aangeroepen, als men de parameters op het beeldscherm weergegeven wil hebben. Deze subroutine schrijft de omschri-jvende tekst van de parameters en de waarden voor de parameters op de toegewezen plek op het beeldscherm. Hij wordt alleen de eerste maal aangeroepen, als dit di-ent te gebeuren, opdat de omschrijvingen niet steeds opnieuw op het beeldscherm geschreven worden.

WRVAL De volgende keren, dat er parameters op het beeldscherm dienen te verschij-nen, wordt deze subroutine aangeroepen, die alleen de berekende waarde voor de parameters op het beeldscherm zet.

SPLOT De subroutine voor het plotten. Ook deze wordt elke keer, dat er een nieuw spectrum bekend is, aangeroepen. Indien nodig wordt hierin de y-as geschaald. Ver-volgens worden eventueel de oude y-as en x-as weggehaald, waarna, als die bestaat, ook de plot van twee slagen van de herhalingslus terug wordt verwijderd. Vervolgens worden eventueel de nieuwe y-as en x-as getekend. Ook de plot van het nieuwe spec-trum volgt hier. Tenslotte worden de nieuwe punten en de punten van de vorige keer en twee keer terug in het geheugen bewaard met hun bijbehorende x- en y-schaling.

SBLVT Deze subroutine leest eventueel ingedrukte toetsen van de SASC in en verwerkt ze op de per toets vereiste manier, zoals in hoofdstuk 3 beschreven staat.