GEBRUIKSAANWIJZING BEDITOR

         Beditor is een editor met toetsbesturing voor het
         Forth-systeem van Laxen en Perry voor MS-DOS computers.
         De ingebouwde editor van Laxen en Perry werkt met
         commando's die onderaan het scherm worden gegeven. Bij
         deze betere editor kunnen we rechtstreeks in de tekst
         typen, zoals dat bij alle moderne tekstverwerkers
         gebruikelijk is.

         Laxen en Perry Forth

         Het Forth-programmeersysteem van Laxen en Perry is
         zogenaamde Public Domain software. In Nederland wordt
         het onder andere verspreid door de IBM PC
         gebruikersgroep. Het geheel beslaat twee diskettes. Het
         belangrijkste op die diskettes is de file F83.COM. De
         overige files laten zien, hoe F83 in elkaar zit en
         bieden de mogelijkheid een gewijzigde versie op te
         bouwen. In het vervolg nemen we aan dat F83.COM op de a:
         diskette staat, terwijl onze betere editor, BEDITOR.BLK,
         zich op b: bevindt. Iedereen die enige kennis heeft van
         MS-DOS, zal weten welke veranderingen moeten worden
         aangebracht voor andere situaties.

         Beditor laden

         We starten F83 met het volgende commando:
           A>f83 b:beditor.blk 
         Er verschijnt:
           8086 Forth 83 Model
           Version 2.1.0 Modified 01Jun84
         We voegen nu de mogelijkheden van onze Beditor toe aan
         F83 door te typen:
           1 load 
         De file b:beditor.blk, opgegeven bij het MS-DOS
         startcommando boven, wordt nu verwerkt. Het systeem
         geeft even later aan dat het laden klaar is, door te
         zeggen:
           ok

         Extra commando's

         Welke commando's in Forth(-83) ter beschikking staan (in
         de huidige vocabulary), kunnen we te zien krijgen met
         het commando:
           words 
         Na het laden van de Beditor geeft dit commando als
         antwoord (de lijst kan worden afgebroken met een
         willekeurige toets):
           BED   BEDIT   INITIALEN   LAATSTE-SCHERM   EMPTY
           MARK   HELLO  ------  ok
         De eerste vier woorden van deze lijst zijn de extra
         commando's die Beditor heeft toegevoegd. LAATSTE-SCHERM
         en INITIALEN onderscheiden zich, doordat ze
         Nederlandstalig zijn; BEDIT en BED komen in de plaats
         van de commando's EDIT en ED van de standaard editor.

         Het is altijd goed te weten, hoe we een programma moeten
         stoppen. De editor kent het standaard afsluitingswoord
         DONE. Vanuit Forth terug naar MS-DOS gaat vervolgens met
         BYE.

         Programmafiles bij F83

         Programmafiles hebben bij Laxen en Perry Forth een
         wat bijzondere opbouw, waardoor ze niet met gewone
         tekstverwerkers kunnen worden bewerkt. Iedere file
         bestaat uit een geheel aantal blokken (vandaar het
         achtervoegsel .BLK). Ieder blok is 1024 tekens (1K)
         lang, te weten 16 regels van 64 tekens. Iedere regel is
         totaan de 64e positie opgevuld met spaties; er zijn geen
         returntekens opgeslagen op het einde van de regels.

         De regels binnen een blok zijn genummerd van 0 tot en
         met 15 (decimaal). De eerste regel van een blok bevat
         gewoonlijk een opschrift. Die regel begint met een
         omgekeerde breukstreep \, die aangeeft dat de rest van
         de regel commentaar is. Een spatie achter de \ is
         noodzakelijk. Op het einde van de eerste regel staat het
         zogeheten stempel. Dit bestaat uit de datum gevolgd door
         de drie initialen van degene die het blok bewerkt
         heeft. Iedere keer dat een blok veranderd is, vernieuwt
         de editor het stempel.

         Het commando INITIALEN

         De datum kan onze Beditor bij MS-DOS ophalen. Wanneer
         een blok bewerkt wordt door iemand die niet mijn
         initialen pvt heeft, moet die iemand eerst zijn eigen
         initialen opgeven. Bent u Ronald Reagan of Rob Rutten,
         dan is voor u de opdracht:
           initialen "rr" 
         Het is mogelijk de initialen al in b:beditor.blk te
         veranderen, waarna een dergelijk commando niet meer
         nodig is. Daarover later.

         Forth commando's kunnen naar believen in hoofdletters of
         in kleine letters worden ingetypt. Binnen de
         aanhalingstekens worden hier hoofd- en kleine letters
         overgenomen op de manier zoals we ze opgeven.

         Files openen

         In Laxen en Perry Forth is in beginsel slechts ‚‚n file
         tegelijk open. Bij het binnenkomen is dat de file die in
         de MS-DOS commandoregel is opgegeven achter F83. Alle
         file-opdrachten hebben betrekking op die file.

         We kunnen van file veranderen met een opdracht
           open a:utility.blk 
         Utility.blk is een van de files op de diskette waarop
         F83.COM wordt geleverd. (Gebruik liever niet de
         originelen maar kopie‰n!) Wie een vaste schijf heeft,
         moet bedenken dat F83 geen onderdirectories kent. Op de
         vaste schijf is alleen de standaarddirectory van het
         moment bereikbaar.

         Stel dat we het een en ander gedaan hebben met
         utility.blk en nu b:beditor.blk willen bekijken. Dan
         doen we:
           open b:beditor.blk 
         Terug naar utility.blk kunnen we vervolgens met alleen
           a:utility.blk 
         Het woord open is niet meer nodig. Dit geldt slechts
         bij die files die eerder wel een keer het woord open
         voor zich gehad hebben. De file die we met de
         commandoregel hadden meegegeven, behoort niet meteen tot
         die files!

         Een file ingaan

         Stel er is een file open. We kunnen dan met onze Beditor
         die file gaan bekijken of bewerken door te zeggen:
           12 bedit 
         Nu verschijnt blok 12 (in principe decimaal) van de
         file op het scherm, met de cursor erin. We kunnen dit
         blok (of scherm) 12 wijzigen door gewoon toetsen aan te
         slaan, op de manier zoals bij allerlei tekstverwerkers
         gebruikelijk is. Dat is heel wat handiger dan bij de
         oorspronkelijke editor van Laxen en Perry Forth, die
         bijna alleen gebruik maakt van commandowoorden onderaan
         het scherm!

         Het woord LAATSTE-SCHERM is bedacht om het laatste blok
         van een file te kunnen editen, zonder dat we het nummer
         daarvan hoeven te kennen. Als volgt:
           laatste-scherm bedit 
         Het laatste scherm op drie na kunnen we in de Beditor
         halen met
           laatste-scherm 3 - bedit 

         De Beditor verlaten

         We kunnen uit een scherm ontsnappen door op de
         escapetoets te drukken. Onderaan het scherm zijn dan de
         aangewezen commando's DONE om het bewerken van de file
         af te sluiten en BYE om vervolgens terug te keren naar
         MS-DOS ( naar A> ).

         Diskette bijwerken

         De diskettetoegang van Laxen en Perry Forth is zo
         opgezet dat vier schermen uit een file in het geheugen
         aanwezig zijn. Deze kunnen dus verschijnen zonder
         verder contact met het diskettestation. Wanneer
         wijzigingen zijn aangebracht, wordt de diskette
         automatisch bijgewerkt. Er is geen save-opdracht die we
         zelf moeten geven. Voor wie wel een save via menselijk
         ingrijpen gewend is, lijkt die werkwijze misschien
         gevaarlijk. Allerlei onrijpe wijzigingen worden meteen
         op de diskette ingevroren. In de praktijk blijken
         hiermee echter geen grote moeilijkheden te ontstaan. Het
         woord DONE, waarmee we afscheid nemen van de editor,
         schrijft de blokken weg, die nog niet automatisch waren
         weggeschreven.

         In de dir-lijst heeft een blokkenfile in het algemeen
         een te oude datum en tijd. De datum en de tijd van de
         file als geheel worden namelijk alleen bijgewerkt bij
         een wijziging in de lengte van de file, niet wanneer
         enkel binnen blokken dingen veranderd zijn.

         De rol van BED

         Wanneer we onderaan het scherm staan, maar toch
         eigenlijk geen DONE willen, dan is BED de manier om
         terug te gaan naar het laatstbekeken scherm. Er hoeft
         dan geen schermnummer te worden opgegeven, bij BEDIT
         moet dat wel.

         Wanneer met succes de VIEW opdracht wordt gebruikt om de
         programmatekst van een bepaald woord op te sporen,
         kunnen we het betreffende blok ook met BED binnengaan.
         Het gebruik van de Beditor in dit geval is handig om te
         bladeren en voor het bekijken van het zogeheten
         schaduwscherm, dat toelichting geeft op de woorden in de
         programmatekst. Over die mogelijkheden aanstonds meer.

         Zelf nieuwe files maken

         Om te beginnen kunnen we de Beditor uitproberen op
         b:beditor.blk zelf en op de programmafiles van het Laxen
         en Perry systeem. Werk met kopie‰n van de diskettes om
         de originele exemplaren van de files te beschermen tegen
         bedoelde en onbedoelde veranderingen.

         Wanneer we zelf aan een nieuwe programmafile willen
         beginnen, moeten we die eerst aanmaken in de vereiste
         blokvorm. Daarvoor is er de volgende Forth opdracht:
           2 create-file b:mnprgm.blk
         Deze maakt op de b: diskette een nieuwe file aan met de
         naam mnprgm.blk en een lengte van twee blokken. Langer
         hoeft niet, want de Beditor kent heel handige manieren
         om de lengte te vergroten zodra dat nodig is.

         De file van twee blokken kent een scherm 0 en een scherm
         1. Het scherm 0 is volledig gereserveerd voor
         commentaar: een inleiding over het programma dat gaat
         volgen. Scherm 1 is het eerste scherm met werkelijke
         programmatekst. Pas vanaf scherm 1 mag geladen worden.
         Een opdracht '0 load' kan en mag nooit.

         Onze nieuwe file kunnen we binnengaan met '0 bedit' of
         met '1 bedit', al naar gelang.

         Welke toetsen?

         Wanneer we met 'nummer BEDIT' (of later na BED) in een
         scherm zijn beland, werken in de eerste plaats alle
         lettertoetsen, cijfertoetsen, leestekens en de
         spatiebalk. Deze zetten gewoon hun betreffende teken in
         de tekst. Verder zijn tien functietoetsen actief,
         evenals de toetsen voor cursorverplaatsing, Backspace,
         Del en Ins. Met Esc komen we weer onderaan het scherm
         voor het geven van opdrachten in commandovorm.

         Cursorverplaatsing

         De vier pijltjestoetsen voor de cursor werken op de
         gebruikelijke manier. De Home toets stuurt de cursor
         naar het begin van de huidige regel. De End toets zet de
         cursor achter het laatste echte teken van de huidige
         regel. In de bovenste regel wordt daarbij het stempel
         buiten beschouwing gelaten. Bij verlaten van een blok
         wordt het stempelgedeelte van regel 0 vanzelf vernieuwd,
         wanneer in het blok wijzigingen zijn aangebracht.
         Terwijl het stempel automatisch wordt bijgewerkt, blijft
         het plaatsen van de omgekeerde breukstreep \ aan het
         begin van regel 0 overigens onze eigen
         verantwoordelijkheid.

         Ctrl-PgUp brengt de cursor naar de bovenste regel.
         Ctrl-PgDn brengt de cursor naar de onderste regel.
         Hierbij blijft de cursor zijn positie binnen de regel
         behouden, hij gaat niet naar voren of naar achteren.

         De returntoets brengt de cursor naar het begin van de
         volgende regel.

         Overal geldt dat de cursor blijft steken voor de randen
         van het scherm. In regel 0 kan de cursor niet het
         stempel worden binnengebracht. Op het einde van een
         regel wordt niet automatisch doorgeschoven naar de
         volgende regel. Het gaat hier om een editor voor Forth
         programma's, niet om een tekstverwerker voor creatief
         schrijven!

         Bladeren

         Met de toets PgUp gaan we naar het vorige scherm. Scherm
         0 heeft geen vorig scherm en dan doet deze toets niets.
         PgDn brengt ons naar het volgende scherm. Bevonden we
         ons in het laatste scherm, dan wordt een nieuw scherm
         toegevoegd. Voor toevoegen achteraan hoeven we dus geen
         commandowoord meer te gebruiken! Wanneer we met PgDn
         voorbij het laatste scherm bladeren, weerklinkt een
         piepje. We zijn dan gewaarschuwd, dat verderop geen
         informatie te lezen valt en dat we een leeg scherm
         toevoegen (wat we natuurlijk niet onbeperkt zullen
         willen doen). Een nieuw ontstaan scherm kan meteen weer
         verwijderd worden met  . De manier om
         middenin een file een scherm vol ruimte te scheppen is
         functietoets 3.

         Wanneer we bladeren, behoudt de cursor zijn positie. Hij
         wordt dus niet bovenin vooraan het scherm gezet. De
         reden daarvoor is dat we vaak vooruit of
         achteruit zullen bladeren om alleen iets te bekijken,
         niet om iets te veranderen. Als we dan terugbladeren
         naar het oude scherm, staan we nog steeds op de plaats
         waar we aan het typen waren en kunnen we daar meteen
         doorgaan.

         Tussenvoegen en vervangen

         Standaard verdwijnt oude tekst achter tekens die we
         nieuw intypen. Willen we nieuwe tekst tussen oude tekst
         voegen, dan drukken we eenmaal op de Ins-toets. Wat we
         vervolgens intypen, wordt tussengevoegd voor het teken
         waarop de cursor staat. De rest van de regel schuift
         naar achteren. Hierbij gaan tekens die voorbij de 64ste
         positie komen, verloren. Is dit een probleem, dan is de
         oplossing te vinden in het splitsen van de regel. Dit
         gaat met functietoets 8.

         Wanneer we met de Ins-toets zijn overgegaan naar de
         stand 'tussenvoegen', vertoont de cursor zich als
         blokje. Wanneer we nogmaals op Ins drukken, wordt de
         cursor weer een streepje. Wat we dan typen, wist weer
         automatisch de oude tekst.

         Tekens wissen

         Wanneer we iets willen wissen, dan zijn daar
         verschillende manieren voor. Het teken waarop de cursor
         staat, verdwijnt bij een druk op de Del-toets. Het teken
         voorafgaand aan de cursor verdwijnt met de
         Backspace-toets. In beide gevallen schuift het
         rechter gedeelte van de regel naar links op om het gat
         te vullen. Door de Del ingedrukt te houden, kunnen we
         tekens rechts van de cursor opeten; Backspace eet een
         regel naar links op. Bij ingedrukt houden van deze
         toetsen past de regel op het scherm zich niet snel
         genoeg aan: er kunnen nog steeds tekens aan het
         verdwijnen zijn, wanneer we de toets al weer losgelaten
         hebben. Let dus op dat niet teveel wordt gewist! Op
         snellere computers is dit verschijnsel er niet.

         Spaties over oude tekst heentypen is ook een vorm van
         wissen. Grotere stukken tekst ineens kunnen we wissen
         met de functietoetsen 4, 6 en 7. We behandelen nu de
         funcietoetsen stuk voor stuk.

         F1 schaduwscherm

         Bij de programmafiles van Laxen en Perry is alleen de
         eerste helft voor de computer bestemd. De tweede helft
         bevat toelichting voor de menselijke lezer. Dit is zo
         gedaan dat bij ieder scherm in de eerste helft een
         zogeheten schaduwscherm hoort in de tweede helft (en
         omgekeerd). Wanneer we binnen de Beditor op functietoets
         1 drukken, gaan we over naar het schaduwscherm. Nogmaals
         drukken brengt ons weer terug bij het oorspronkelijke
         scherm.

         De programmafile van de Beditor zelf is niet opgebouwd
         met schaduwschermen: alle ruim veertig schermen zijn
         laadbaar programma. Toch kan F1 in een dergelijke file
         nog enig nut hebben. Drukken we op F1 in de eerste helft
         van de file, dan springen we een halve file vooruit.
         Drukken we op F1 in de tweede helft, dan gaan we een
         halve file achteruit. Grote sprongen gaan zo handiger
         dan met PgDn en PgUp. Een meer verfijnde manier om grote
         sprongen te maken is F2.

         In veel programma's is F1 de helptoets. Hier ook, al
         gaat het dan om hulp bij de file die bewerkt wordt, en
         niet om hulp bij de editor.

         F1 is de enige functietoets die aansluit bij het systeem
         van schaduwschermen. De toetsen die nieuwe schermen
         bijmaken, maken bijvoorbeeld geen schaduwschermen bij.
         Wanneer iemand zo gecharmeerd zou zijn van
         schaduwschermen, dat hij zijn eigen programma's ervan
         zou willen voorzien, dan is het het beste te wachten
         totdat het programma zelf helemaal klaar is om pas dan
         op het einde de commentaarschermen te gaan maken. F1
         heeft pas de goede werking op het moment dat de file zo
         is uitgebreid, dat voor ieder programmascherm ook een
         commentaarscherm is gereserveerd.

         F2 naar een ander scherm

         Deze toets is een aanvulling op de bladertoetsen PgUp,
         PgDn en F1. Wanneer we op F2 gedrukt hebben, dienen we
         onze aandacht te richten op de onderkant van het scherm.
         We moeten ervoor zorgen dat daar het schermnummer komt
         te staan, waar we naartoe willen. We verhogen het
         aanwezige nummer met de toets cursor omhoog en verlagen
         het met cursor omlaag. Wanneer de gewenste waarde
         bereikt is, drukken we op de returntoets, waarna de
         sprong wordt uitgevoerd. Met F2 komen we nooit verder
         dan het huidige laatste scherm.

         F3 aantal schermen uitbreiden

         Functietoets 3 komt van pas, wanneer we een aanzienlijke
         hoeveelheid extra ruimte nodig hebben. Na indrukken van
         F3 verschijnt onderaan het scherm het getal 1.
         Accepteren we dat getal door op de returntoets te
         drukken, dan wordt 1 extra scherm bijgemaakt direct
         achter het scherm waarin we ons bevonden. De gang van
         zaken hierbij is als volgt. Een kopie van het werkscherm
         wordt neergezet op het volgende schermnummer. Wat daar
         eerst stond, en de hele rest van de file, schuift een
         scherm op naar achteren. De filelengte neemt zo met 1
         scherm toe.

         Er staat nu een tweede exemplaar van het werkscherm
         op het scherm na het werkscherm. Of we het eerste of het
         tweede exemplaar als vrije ruimte beschouwen, hangt af
         van onze programmeerbedoelingen en de manier waarop
         Forth die indamt.

         Het getal dat na indrukken van F3 onderaan het scherm
         staat, kunnen we veranderen op de manier beschreven bij
         F2. Terugbrengen tot nul stelt ons in staat de F3
         opdracht zonder kleerscheuren te verlaten. Wanneer we op
         de returntoets drukken bij een waarde groter dan 1, zeg
         bij een getal x, dan wordt een kopie van het huidige
         werkscherm en van de hele rest van de file x schermen
         naar achteren neergezet. Gevolg is in feite dat we x
         vrije schermen tot onze beschikking krijgen op de plaats
         van het werkscherm.

         Na gebruik van F3 staan een of meer schermen dubbel in
         de file. Worden die schermen niet meteen ingevuld, dan
         is het goed regel 0 te voorzien van het commentaar
         \ vrij. De spatie achter de \ is onontbeerlijk. Om te
         voorkomen dat een load opdracht niet goed verloopt,
         moeten de vrijgekomen schermen vooraan regel 1 worden
         voorzien van de doorverwijsopdracht -->

         Omdat dat nogal gevaarlijk zou zijn, is er geen toets om
         een scherm ineens blanco te maken. Wissen kan door een
         aantal malen F6 (vooraan de regels), F7 of F9 toe te
         passen. (Bij de laatste toets duwen we de inhoud van het
         blok aan de onderkant weg.) Een andere manier is via de
         escapetoets terug te keren naar de oude editor. Onderaan
         het scherm geven we dan het commandowoord WIPE, waarna
         we met BED het scherm weer binnengaan om een \ en een
         --> aan te brengen.

         De mogelijkheden van F3 zijn zeer groot. Zo is het
         mogelijk middenin een scherm aanzienlijk meer ruimte te
         krijgen door dat scherm via F3 te verdubbelen. We hebben
         dan de onderste helft van het eerste exemplaar en de
         bovenste helft van het tweede exemplaar als vrije ruimte
         te beschikking.

         F4 schermen vernietigen

         Met de toets F4 kunnen we schermen laten verdwijnen.
         Onderaan het scherm moeten we het aantal schermen
         aangeven, dat we kwijt willen. Het wijzigen van dat
         getal gaat weer op dezelfde manier als beschreven is bij
         de toets F2. Na een druk op de returntoets verdwijnt het
         huidige scherm en eventueel volgende schermen. Het is
         mogelijk uit de F4 opdracht te ontsnappen door het
         aantal schermen op nul te zetten.

         F5 regel verdubbelen

         Met functietoets 5 wordt een kopie van de regel waarin
         de cursor staat, onder die regel tussengevoegd. De
         overige regels van het blok schuiven een regel naar
         beneden, waarbij de laatste regel verloren gaat.

         F6 wissen vanaf cursor

         Functietoets 6 wist de huidige regel te beginnen met de
         positie waarop de cursor staat.

         F7 verwijderen regel

         Functietoets 7 verwijdert de hele regel waarin de cursor
         staat. De regels eronder schuiven een regel naar boven.

         F8 splitsen op cursor

         Functietoets 8 maakt een nieuwe regel onder de huidige.
         Het rechterstuk van de huidige regel, te beginnen met
         het teken op de positie van de cursor, wordt
         overgebracht naar die regel. De regels onder de cursor
         schuiven een regel naar beneden. F8 is nuttig wanneer
         ergens meer ingevoegd moet worden dan waarvoor op die
         regel plaats is.

         F9 nieuwe regel toevoegen

         Functietoets 9 maakt een nieuwe, lege regel bij onder de
         cursor. De tekst onder de cursor schuift een regel naar
         beneden. De cursor komt aan het begin van de nieuwe
         regel te staan.

         F10 samenvoegen met volgende regel

         De regel onder de cursor wordt op de huidige regel
         neergezet. Hiervoor worden de spaties gebruikt achter
         het laatste echte teken van de huidige regel. Regels
         verder naar onderen schuiven een regel omhoog. Is op
         huidige regel onvoldoende plaats, dan gaan tekens
         verloren.

         Zoeken

         Veel is mogelijk met de toetsbesturing van de Beditor,
         maar niet alles. Willen we in een file een bepaalde
         tekst opsporen, dan moeten we dat nog steeds doen via de
         oude editor. Stel we zijn op zoek naar de tekst '11 -'.
         We moeten dan eerst een blok editen of bediten dat zeker
         voor de plaats staat, waar we '11 -' willen opsporen.
         Spring nu zonodig naar onderaan het scherm met de
         escapetoets. Geef daar de opdracht:
           30 s 11 -
         De editor gaat nu de zoektekst '11 -' opsporen, te
         beginnen op de cursorpositie, maximaal doorgaand tot en
         met scherm 30. Wanneer de zoektekst gevonden is, kunnen
         we het betreffende scherm binnengaan met de bed
         opdracht. Willen we het volgende voorkomen van de
         zoektekst opsporen, dan geven we onderaan het scherm:
           30 s
         Zolang we dezelfde zoektekst willen gebruiken, hoeven we
         die niet opnieuw op te geven. De mogelijkheid
           laatste-scherm s zoektekst
         komt ook vaak van pas.

         Wie goed kijkt, ziet dat de cursor na een succesrijke
         opsporingsactie achter het gezochte komt te staan. Het
         is bij zoeken niet echt nodig het scherm binnen te gaan,
         wanneer de zoektekst vervangen moet worden. Onderin
         kunnen we het commando
           r 10 -
         geven, wanneer we de zoektekst willen vervangen door '10
         -'. Bij een volgende s-opdracht moeten we nu wel opnieuw
         de zoektekst opgeven, want die gaat verloren bij de
         r-opdracht.

         Mogelijke problemen met de cursorgrootte

         Het is de bedoeling dat in de stand 'vervangen' de
         cursor zich voordoet als een knipperend onderstrepinkje
         en in de stand 'tussenvoegen' als een knipperend blokje.
         (Het omschakelen hiertussen gebeurt, zoals gezegd, met
         de Ins-toets.)

         We moeten ons iedere regel van het scherm voorstellen
         als een aantal lijnen boven elkaar. Bij een grofmazig
         scherm bestaat een regel uit minder lijnen dan bij een
         fijnmazig scherm. De bovenste lijn draagt het nummer
         nul. De hoogte van de cursor wordt vastgelegd in termen
         van: hij moet reiken van lijn nummer zoveel tot lijn
         nummer zoveel.

         De streepjescursor en de blokjescursor hebben hun
         onderkant op dezelfde lijn. Het lijnnummer daarvan is
         vastgelegd in de variabele cursorbodem. Bij een grof
         scherm krijgt cursorbodem een lagere waarde dan bij een
         fijn scherm.

         De lijn tot welke de cursor in streepjesgedaante naar
         boven moet reiken, heeft het nummer vastgelegd in de
         variabele streepjestop. De lijn waartoe de cursor in
         zijn blokjesvorm reikt, heeft het nummer dat zich
         bevindt in de variabele blokjetop. Streepjetop is
         kleiner dan cursorbodem en blokjetop is weer kleiner dan
         streepjetop.

         Forth kan zelf nagaan of het beeldscherm grofmazig dan
         wel fijnmazig is. Aan de hand van die uitkomst worden
         waarden toegekend aan de drie variabelen. Hoe fijnmazig
         of hoe grofmazig het scherm van een bepaalde computer
         precies is, is echter niet na te gaan. Het kan daarom
         voorkomen dat de waarden die worden toegekend, voor
         bepaalde schermen niet goed zijn. De ongelukkige
         eigenaars van dergelijke schermen kunnen de waarden van
         de variabelen aanpassen in de regels 8 tot en met 13 van
         scherm 2 van b:beditor.blk. Bedenk dat op een bepaalde
         computer ofwel het bovenste drietal, ofwel het onderste
         drietal wordt gebruikt. Veranderen van het verkeerde
         drietal heeft geen effect. Met een beetje uitproberen
         zou op iedere computer de cursor in bevredigende vormen
         te gieten moeten zijn. Nieuwe waarden treden pas in
         werking, wanneer b:beditor.blk bij een volgende keer
         opnieuw geladen is.

   Scr # 2         B:BEDITOR.BLK
 0 \ variabelen voor cursorgrootte                       29okt87pvt 0
 1                                                                  1
 2 variable cursorbodem ( 12 voor mono, 7 voor cga )                2
 3 variable streepjetop ( 11 voor mono, 6 voor cga )                3
 4 variable blokjetop   (  5 voor mono, 3 voor cga )                4
 5                                                                  5
 6 : cursorafmetingen (s -- )                                       6
 7   schermsoort 255 and 7 = ( ga na mono of cga )                  7
 8   if ( mono, fijnmazig ) 12 cursorbodem !                        8
 9                          11 streepjetop !                        9
10                           5 blokjetop   !                        10
11   else ( cga, grofmazig ) 7 cursorbodem !                        11
12                           6 streepjetop !                        12
13                           3 blokjetop   !                        13
14   then                                                           14
15 ; cursorafmetingen ( voer definitie meteen uit ) -->             15

         Het zou kunnen zijn dat afwijkende schermen ook
         problemen hebben met het onzichtbaar maken van de
         cursor. Dit wordt gedaan door het woord cursor-weg in
         blok 5. Zonodig de getallen 32 in de regels 3 en 4 daar
         vervangen door grotere getallen.

         Problemen met de schermafdruk

         Het is voorgekomen dat de Beditor plat ging, wanneer met
         de cursor in een blok werd gedrukt op de toets waarmee
         de tekst op het scherm naar de printer wordt gestuurd.
         Van dit probleem kennen we geen oorzaak of oplossing.
         Het probleem is te omzeilen door eerst de cursor met de
         escapetoets onderaan het scherm te zetten.

         Initialen veranderen in b:beditor.blk

         De initialen van de gebruiker, die gebruikt worden voor
         het stempel, liggen vast in scherm 41 (decimaal) van
         b:beditor.blk.

Scr # 41         B:BEDITOR.BLK
  0 \ initialen voor stempel                              02dec87pvt
  1
  2 forth definitions ( zo zijn de woorden initialen, bedit en )
  3                   ( bed te allen tijde toegankelijk )
  4
  5 : initialen (s -- ) ( erachter: "pvt" )
  6    [ editor ] id 7 + 3 blank ( oude initialen weg )
  7    ascii " word count ( van, lengte ) id 7 + ( naar )
  8    swap ( van, naar, lengte ) 3 min ( maximaal 3 ) cmove
  9 ;
 10 initialen "pvt"
 11 -->
 12 Het is de bedoeling dat het commando initialen "xyz" wordt
 13 gegeven voordat de schermvullende editor in werking wordt
 14 gesteld. Slimme mensen veranderen eens en voor al de
 15 initialen op dit scherm in hun eigen initialen.

         Wanneer u Nelie Smit-Kroes heet, verander dan regel 10
         in:

         initialen "nsk"

         Het is dan in het vervolg niet meer nodig na de opdracht
         '1 load' nog de opdracht 'initialen "nsk"' te geven.


         De Beditor inbouwen in Forth

         We kunnen de Beditor vast inbouwen in onze Forth,
         waardoor '1 load' niet meer nodig is en we de tijd van
         het laden besparen. We nemen aan dat we onze nieuwe
         Forth b:f83bedit.com willen noemen. Dan gaat het als
         volgt:

A>f83 b:beditor.blk  

8086 Forth 83 Model
Version 2.1.0 Modified 01Jun84
1 load  
initialen "nsk" ( zonodig )  
save-system b:f83bedit.com  
bye  
117 Pages
A>

         B:f83bedit komt nu in de plaats van f83. Stel op de b:
         diskette staat een blokkenfile redder.blk, die we
         willen bewerken. We kunnen de Forth met ingebouwde
         Beditor nu starten met:

A>b:f83bedit b:redder.blk  

8086 Forth 83 Model
Version 2.1.0 Modified 01Jun84
1 bedit  

         De opdracht '1 bedit' is nu dus onmiddellijk mogelijk.
         Zoals verwacht verschijnt blok 1 van b:redder.blk met de
         cursor erin.

         F83bedit.com heeft een lengte van bijna 30K tegen 26K
         voor de oorspronkelijke f83.com. De Beditor van ruim 40
         blokken heeft dus in vertaalde vorm een lengte van drie
         en een halve K. De praktische grens aan de lengte van
         een Forthsysteem is 64K, zodat het meevoeren van de
         Beditor geen noemenswaardige last is.




         copyright (c) 1987

         Pim van Tend
         Veldheimwg 8
         6871 CD  RENKUM
         08373 - 15358

         Een geldelijke bijdrage (bijvoorbeeld f.15,-) is welkom
         op postgiro 2748656.




etal, ofw