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