|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 23808 (0x5d00) Types: TextFile Names: »difbog4«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦d7df738ed⟧ »difbog« └─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦d7df738ed⟧ »difbog« └─⟦this⟧
bog=set 200 bogproof=set 200 typeset machine.diablo proof.bogproof *pl 297,30,235,18,10* *pn 5,1* *lw 170* *lm45* *ld16* *ps* *sj* 4. Begrænsninger og udviklingstendenser i administrative mikrodatamatsystemer. ----------------------------------------- *rj* *nl1* Hovedparten af de mikrodatamatsystemer, der findes på markedet idag, er, når der sammenlignes med det mere traditionelle datamatmarked, for dårlige. Dette skyldes en alt for kort udviklingstid for både materiel og programmel, og når der samtidig hersker tumultagtige tilstande på markedet, kan førstegangskøberen nemt blive skuffet. Det er imidlertid hævet over enhver tvivl, at forholdene bliver bedre, og det må konstateres, at vi allerede nu er inde i en fase, hvor branchen bliver mere professionel til gavn for brugerne. *nl3* 4.1. Standardoperativsystemer.*nl1* ------------------------------*nl2* Det mest basale program i et datamatsystem er operativsystemet. Det er det program, der danner grænseflade (figur 2.11) til de øvrige programmer, der skal afvikles i maskinen. Operativsystemet ved alt om ind - og uddata, hvor mange og hvilke ydre enheder, der er tilsluttet, er der nogle særlige protokoller, der skal betjene de ydre enheder, osv. Operativsystemet danner grænsefladen mellem anvendelsesprogrammet der jo normalt er skrevet i et programmeringssprog og den enkelte mikrodatamatfabrikants måde at designe sin mikrodatamat på▶16◀. Operativsystemet varetager også forbindelsen mellem maskine og bruger, dvs afvikler programmer på kommando, sørger for at finde filer på baggrundslageret, ekkoer det brugeren taster ind på tastaturet op på skærmen og andre lignende grundlæggende funktioner. Operativsystemet skal også understøtte de højere programmeringssprog man nu benytter på sin maskine, dvs man kan ikke uden videre afvikle et ▶10◀Pascal program, hvis ikke operativsystemet er forberedt for det. *nl2* En vigtig forudsætning for udvikling og udbredelse af mikrodatamater er lave programmelpriser. Det skal være muligt at flytte anvendelsesprogrammer fra en maskine til en anden, og man skal kunne købe færdige programmer ude i byen. Dette kan kun lade sig gør, hvis maskinerne benytter det samme operativsystem. Det er altså vigtigt, at man til sin mikrodatamat kan købe et "standardoperativsystem". Der er dukket nogle operativsystemer op, som er ved at blive til en slags standarder og af disse kan især nævnes CP/M, MP/M, UNIX og Oasis. *nl2* *lt1,CP/M* Et af de mest udbredte operativsystemer er CP/M (Control Program Monitor), der blev udviklet af det amerikanske firma "Digital Research" og som specielt er beregnet for 8080 (Z80) baserede mikrodatamater. Selvom CP/M ikke yder faciliteter, der er kendte fra større datamater, yder det fuld støtte til diskettebehandling og indeholder diverse funktioner til hjælp i et 8 bit miljø, hvor det maksimale lager normalt er 64 k oktetter. Et typisk CP/M system fylder omkring 12 k oktetter, hvilket er yderst rimeligt i disse mindre mikrodatamater. CP/M er blevet en de facto standard for 8 bit mikrodatamater, og der kan leveres et utal af anvendelsesprogrammer fra mange forskellige leverandører, som kører ovenpå CP/M. *nl2* *lt1,MP/M* En videreudvikling af CP/M er MP/M, der i modsætning til CP/M er et flerbrugersystem og som kan håndtere store pladelagre (f.eks. Winchester lagre). MP/M er beregnet på at understøtte 16 bit mikrodatamater (8086), hvor der tillades et langt større indre lager. Programmer der kører under CP/M kan afvikles under MP/M hvis de bliver nyoversat til 8086 kode. Digital Research har udviklet et nyt operativsystem CP/NET, der tillader sammenkobling af datamater, der anvender CP/M eller MP/M. Her virker MP/M som et overordnet system, der giver brugere, der kører på hver sin mikrodatamat under CP/M, mulighed for at deles om kostbare eller knappe ressources, som f.eks. et stort pladelager eller en linieskriver. *nl2* *lt1,UNIX* Et operativsystem, der er udviklet til 16/32 bit maskiner, og som er ved at vinde stor udbredelse, er UNIX. Det er et flerbruger operativsystem udviklet af Bell Laboratories til minidatamater (PDP og VAX). Til langt de fleste 16 bit mikrodatamater er der implementeret UNIX, eller et UNIX lignende opeartivsystem, som kan afvikle programmer skrevet under UNIX. Et af hovedkriterierne ved designet af UNIX var, at det skal være meget brugervenligt og fleksibelt. UNIX har kommandoer til filmanipulation og programafvikling og tillader, at samtidigt kørende programmer kan udveksle data. *lt1,Ada* Det for tiden meget omtalte programmeringssprog Ada, der er sat i gang af det amerikanske forsvarsministerium vil muligvis komme til at fungere sammen med et UNIX lignende operativsystem, dvs den kommandosyntaks der tilbydes fra UNIX vil gå igen i Ada systemerne. Disse forhold sammenholdt med Bell Laboratories liberale licenspolitik vil nok medføre, at UNIX bliver meget udbredt i de næste år. *nl2* *lt1,Oasis* Et nyt operativsystem, der også er på vej til at vinde udbredelse, er Oasis, markedsført af det amerikanske firma "Phase One Systems". Oasis er specielt designet til Z80 baserede systemer, og er et flerbrugersystem, der indeholder en lang række faciliteter, man ellers normalt kun ser i langt større datamatsystemer. Det kan håndtere store pladelager, kan gemme og automatisk skrive data ud på en linieskriver, og indeholder en lang række funktioner, der hjælper brugeren, når han ikke ved/kan huske, hvad der nu skal gøres. Endvidere er der indbygget programmer til tekstredigering, der umiddelbart virker avancerede for så relativt lille et operativsystem. *nl2* *lt1,RMX/86* Ud over de ovenfornævnte operativsystemer, er der taget mange andre initiativer for at lette programmeludvikling og -afvikling. Det store amerikanske mikroprocessorkomponent firma Intel har udviklet et operativsystem RMX/86 hvori der er defineret en fast grænseflade mod maskinen, men uden at lægge sig fast på kommandosproget. Dette kan have stor betydning fremover, hvor mikrodatamater bliver mere og mere komplekse. Det er således muligt at betragte mikrodatamaten som en virtuel maskine, uden på hvilken man så kan opbygge brugersystemerne. Dette har også den fordel, at det senere bliver nemmere, at lægge en del af operativsystemet over i mikroprocessorkomponenten. *nl2* *lt1,UCSD-Pascal* Et andet initiativ er et Pascal system, der er udviklet på University of Califonia, San Diago (UCSD-Pascal). I dette system er sprogoversætter og operativsystem integrerede og indeholder alle nødvendige faciliteter til f.eks. diskettebehandling. Dette system er ikke umiddelbart kompatibelt med andre systemer (f.eks. de meget udbredte BASIC og COMAL systemer, der også indeholder en art operativsystem), men kan dog godt bringes til at fungere med CP/M. UCSD-Pascal er meget udbredt, hvilket bl.a. beror på, at systemet genererer en symbolsk kode (p-kode), som så igen fortolkes af et program i mikrodatamaten. Dette er en meget billig og relativ nem måde at få indført Pascal på for mikrodatamatfabrikanten, da denne kun skal betale en begrænset licensleje for Pascal systemet, og kan derved undgå betydelige udviklingsomkostninger. *nl2* MP/M, UNIX og Oasis er operativsystemer, der vil konkurere på det samme marked, og kun tiden vil vise, hvem der "vinder kampen". Det synes dog ret sikkert, at der i de kommende mikrodatamatsystemer vil være et eller andet "standard" operativsystem, der simpelthen er forudsætningen for at erhverve billige programmer. *nl3* *ps* 4.2. Begrænsninger.*nl1* -------------------*nl2* Både materiel - og programmelopbygningen af mikrodatamatsystemer til administrativt brug bærer præg af en kort udviklingsperiode, hvor man har lavet et produkt af standardkomponenters formåen, uden for stærk skelen til om det færdige produkt kan løse de ønskede opgaver. Man har med andre ord først lavet produktet, og derefter set sig om efter egnede markedsområder. Dette har kunnet lade sig gøre, fordi prisen på det færdige produkt, sammenlignet med det traditionelle datamatmarked, har været uhørt lav. *nl2* *lt1,indre lager* For materiellets vedkommende har mikroprocessorers formåen medført en række begrænsninger. De mest anvendte mikroprocessorer har kun 16 bit til at adressere det indre lager med dvs. det kan højst blive på 64 k oktetter. Dette er normalt rigeligt til mange tekniske anvendelser, men til administrativt brug kan det let medføre en uhensigtsmæssig programafvikling, da man her ofte opererer på mange data af gangen. Mikroprocessorerne har heller ikke *lt1,beskyttelse* indbygget automatisk beskyttelse af programmer og data, dvs fejlbehæftede brugerprogrammer kan komme til at ødelægge basis- programmerne. Dette er endnu værre i flerbrugersystemer, hvor der er mulighed for at en bruger ødelægger en andens program eller data. *nl2* *lt1,paritetskontrol* Mikrodatamatens indre lager er idag sjældent forsynet med paritetskontrol, eller hvad der ville have været endne bedre, automatisk rettelse af fejl. Dette sidste giver en væsentlig formindsket fejlhyppighed, men blot den mulighed, at maskinen selv kan stoppe ved fejl i lageret, forøger pålideligheden af det samlede system. *nl2* *lt1,max 5000* En anden væsentlig materielbegrænsning *lt1,varer* er størrelsen af baggrundslageret. På mange mikrodatamater kan der f.eks. højst tilsluttes to 8" diskettestationer a 1,2 M oktetter, og dette medfører f.eks. i et lagerstyringssystem, at det højst kan indeholde 5000 varer, uden nogen form for udvidelsesmuligheder. *nl2* *lt1,standardisering* Et af de virkeligt datamatiske *lt1,af disketter* fremskridt man forventer af mikrodatamatverdenen, er muligheden for at flytte programmer og data fra en type maskine til en anden. Dette hæmmes imidlertid af manglende standardisering af disketteformatteringen, selvom der gøres seriøse forsøg på at standardisere IBM formatteringen. På grund af disketternes begrænsede størrelse, udvises der megen opfindsomhed for at presse så mange data som muligt ned på pladen, men dette går udover standardiseringen og dermed flytbarheden fra en maskine til an anden. *nl2* *lt1,mikrodatamaten* Mikrodatamaternes muligheder *lt1,som terminal* for elektronisk at udveksle data med andre datamater, er idag ret så begrænset. Der kræves avanceret programmel og materiel, hvis det skal foregå efter moderne principper med udveksling af datapakker og denne teknik er endnu ikke nået til mikrodatamatverdenen. Det er på den anden side et område i rivende udvikling, så det varer nok ikke længe inden det kan fås. Det er idag muligt at anvende mikrodatamaterne som simple terminaler til en datamat, men det kan normalt ikke foregå samtidig med at den foretager andre opgaver. *nl2* *lt1,basisprogrammel* Basisprogrammellet i mikrodatamater *lt1,og disketter* lider af mange skavanker. Med basisprogrammel menes her i første omgang det programmel, der nødvendigvis må følge med maskinen, for at brugeren kan afvikle sine opgaver uden at skulle kende til en masse, for ham, uvæsentlige detaljer om hvordan f.eks. baggrundslageret fungerer. Dette basisprogrammel er sjældent generelt opbygget, forstået på den måde, at det ikke behøver at være det samme basisprogrammel, der anvendes til afvikling af f.eks. BASIC og Pascal programmer. Det vil ofte ikke være muligt at læse en diskette under Pascal systemet, hvis den er skrevet under BASIC systemet. I det hele taget er baggrundslagerbehandlingen et ømt punkt i mikrodatamater: Er baggrundslageret udnyttet effektiv, så der ikke er for meget spildplads; findes der et ordentligt katalogsystem, så man kan se hvad en diskette indeholder, hvor store filerne er, hvornår de er oprettet og hvornår de sidst er ændret og hvor meget plads der er tilbage på disketten; kan filerne udvides dynamisk eller er de låst fast på en bestemt størrelse; er det nemt og hurtigt at sikkerkedskopiere disketter og kan man nemt og overskueligt holde rede på de efterhånden mange disketter, man får erhvervet sig; osv. *nl2* *lt1,multi-* Som tidligere antydet er *lt1,programmering* er et andet ømt punkt i mikrodatamater muligheden for at afvikle flere opgaver parrallelt (multiprogrammering). Dette burde selvfølgelig være en forudsætning i flerbrugersystemer, men selv i enkelt- brugersystemer kan enhver se fordelen i, at f.eks. udskrift af fakturaer (der måske kan tage flere timer) kan ske samtidig med inddatering af ordrer. Multiprogrammering burde være standard i alle datamater, men er det sjældent. *nl2* *lt1,ydre enheder* Det er ikke kun basisprogrammellets understøttelse af baggrundslageret, der giver anledning til problemer; også betjeningen af andre ydre enheder volder vanskeligheder. Den gennemgående fejl er, at man ikke udnytter de muligheder for opdagelse og rettelse af fejl, som materiellet tilbyder. Som eksempel kan tages programmelunderstøttelsen af en *lt1,linieskriver* linieskriver. Denne er som regel i stand til at aflevere statusinformation om at den er løbet tør for papir, at den står i en tilstand for manuel betjening eller at den simpelthen er slukket. Er basisprogrammellet i stand til at opfange disse informationer og aflevere dem videre til anvendelsesprogrammerne. Hvad sker der med anvendelsesprogrammet, når der slukkes for linieskriveren? Fortsætter programmet med at udskrive fakturaer, som om intet var hændt. Medfører dette, at man må udskrive fakturaerne forfra, selvom der kun mangler et par enkelte? Der opdateres måske samtidig i databaserne, således at det bliver ret så besværligt at starte forfra. I så fald kan det medføre genstart med brug af sikkerhedsfiler, samt omkørsel af hele programserien. Enhver kan forestille sig hvilke krav dette må stille til ordenen i diskette systemet. *nl2* *lt1,anvendelses-* Anvendelsesprogrammet, som man køber i *lt1,programmer* en standardudgave lider ofte tilsvarende af en række skavanker. Med eksempel i et bogføringssystem er det ofte sådan, at virksomhedens navn og adresse kun kan ændres ved leverandørens hjælp. Bogføringsåret er ofte anbragt på systemdisketten i stedet for på datadisketten. Dette medfører, at programmerne ikke kan køre gammelt og nyt finansår skiftesvis, hvilket er helt nødvenigt først på året, hvor det nye regnskabsår er påbegyndt, men det gamle endnu ikke afsluttet. Et bogføringsprogram skaber under kørslen selv nogle poster ud fra de indtastede transaktioner, f.eks. til momskontoen. Programmet kan typisk have den fejl, at det går ned midt under kørslen på grund af manglende plads på datadisketten. Man må da starte forfra ud fra sikkerhedskopier. *nl2* *lt1,dokumentation* Dette bliver ikke gjort bedre af, at dokumentationen ofte er meget mangelfuld. Brugervejledninger er tit det eneste der udleveres. Registeroversigt, registerindhold, databeskrivelser og kildeprogramtekst mangler. Man er således afhængig af, om leverandøren vil gennemføre ønskede programmelændringer. *nl3* *ps* 4.3. Udviklingstendenser.*nl1* -------------------------*nl2* *lt1,16/32 bit* På materielsiden sker der meget for tiden. *lt1,mikro-* Mange af de mangler *lt1,processorer* vi efterlyste i forrige afsnit er der chance for at afhjælpe, når der udvikles mikrodatamater på basis af den nyeste mikroprocessorteknologi. Det første skridt er at benytte de nye 16/32 bit mikroprocessorer som Motorolas MC68000, Zilogs Z8000 og Intels iAPX286, der alle indeholder værktøjer til opbygning af beskyttelsessystemer. Endvidere er der i instruktionssættet taget højde for, at de programmer, der skal afvikles i datamaterne er skrevet i et højere struktureret programmeringssprog, hvilket for brugeren vil resultere i en væsentlig større hastighed for kørslen▶16◀ af programmerne. *nl2* *lt1,stort lager* Materiellet hjælper også programmøren med udnyttelsen af det indre lager. Ikke alene er det muligt at adressere et stort fysisk lager, men det, at der kan opereres med logiske adresser og indførelsen af beskyttede lagersegmenter, gør, at det er ressourcemæssigt overkommeligt at indføre virtuelt lager og multiprogrammering. *nl2* *lt1,Winchester* Med hensyn til baggrundslageret vil Winchesterpladelagrene dominere i de nærmeste år. Man kan i dag købe en 5,25" Winchester på 10 M oktetter, der er fysisk kompatibel med diskettestationerne, og der er udviklet 3" Winchestere beregnet for installation i intelligente terminaler. Da det er nødvendigt at kunne sikkerhedskopiere disse pladelagre, er der udviklet kassettebåndstationer, der kan gemme 20 M oktetter på 5 minutter (der findes også Winchesterpladelagre med indbygget kassettebåndstation, beregnet til denne kopiering). *nl2* *lt1,boblelagre* Boblelagrernes fremtid er idag usikker og de anvendes kun ganske få steder. Boblelagerteknologien er stadig svær at håndtere, integrerede kredsløb til styring af lagrene er stadig ikke færdigudviklet, og dette sammenholdt med en høj pris pr. bit og Winchesterpladelagrenes popularitet, har foreløbig lagt boblelagrene på hylden. *nl2* *lt1,optisk* Den optiske hukommelse er på vej, *lt1,hukommelse* og vil på mange områder revolutionere edb-anvendelser. Den optiske hukommelse bygger på en teknologi, hvor data lagres og aflæses på en 12" glasplade ved hjælp af laserlys, en teknik, der også anvendes i de nyligt fremkomne grammofon - og videoplader. Skrivning foregår ved, at der "brændes" hul i pladen, dvs der kan kun skrives een gang samme sted på pladen. Der kan lagres 1 milliard oktetter på een plade, hvilket svarer til ca. 500.000 maskinskrevne A4 sider. Tilgangstider, overføringshastigheder, osv er nogenlunde som for et Winchester pladelager. En umiddelbar anvendelse i mikrodatamatanlæg kunne være sikkerhedskopiering af Winchesterlagre, i systemer, hvor mikrodatamaten anvendes i arkivformål, registrering af billeder, osv. Om den optiske hukommelse bliver udbredt i mikrodatamatanlæg, vil i høj grad afhænge af prisen, og her vil slægsskabet med den kommercielle videoplade trække i den rigtige retning. *nl2* *lt1,"subroutines"* Der er idag en tendens til, *lt1,"in silicon"* at på det tidspunkt, hvor man på markedet kan købe integrerede kredsløb, der indeholder de basisfunktioner, som man tidligere havde indeholdt i basisprogrammellet, først da bliver disse funktioner tilgængelige i mikrodatamater. Det er altså komponent- producenterne, der har overtaget en del af systemprogrammørernes rolle ("subroutines in silicon"). Et eksempel er tidligere nævnt, da den nye generation mikrodatamater forventes at være multiprogrammerede og have virtuelt lager. Et andet eksempel er det helt basale programmel en datamat skal forsynes med (en kerne eller en monitor), når den startes. I processorkomponentfirmaet Intels nyeste processorer er disse funktioner og en stor del operativsystemfunktioner indlagt i selve processoren. Producenten af mikrodatamaten kan altså ikke ændre i disse basale programmer, men må finde sig i at sådan er det. Til gengæld får mikrodatamaten funktioner, der tidligere var forbeholdt langt større og dyrere datamater, og på længere sigt giver det også sikkerhed mod fejl i basisprogrammellet. *nl2* *lt1,data-* Et tredie eksempel er datakommunikation. *lt1,kommunikation* Der er idag internationale standarder for, hvorledes man overfører blokke af data (pakker) fra en datamat til en anden (CCITT's X25 rekommandation), og implementeringen af disse standarder er i dag i vid udstrækning understøttet af integrerede kredsløb. Et sådant kredsløb, der tilkobles en mikroprocessor som en styreenhed, er i virkeligheden selv en mikrodatamat, der er programmeret til at varetage en del af de basisfuntioner, der er nødvendige for en sikker datakommunikation. Dette understreger yderligere, hvor dyrt og kompliceret det er at udvikle basisprogrammel; først når der er basis for en masseproduktion kommer det i mikrodatamater. Dette kan også ses i populariseringen af det automatiserede kontor, hvor ikke blot de enkelte kontorfunktioner automatiseres, men de kan også sammenkobles. Et sammenkoblingssystem, der trænger sig på er Ethernet, hvor det på simpel måde med et enkelt kabel er muligt at sammenkoble udstyr indenfor et geografisk begrænset område (lokalnet, op til et par kilometer). Det er højst sandsynligt, at Ethernet bliver en de - facto standard, da tre giganter inden for hvert sit område, nemlig Intel (komponenter), Xerox (kontorautomation) og Digital (minidatamater) er gået sammen om projektet. *nl2* *lt1,funktionelle* Mange af de ovenfor nævnte *lt1,sprog* nyudviklinger er med til at understøtte programmeringsprog, der er på et højere niveau end de almindelige højere programmeringssprog som Fortran, Pascal, Cobol, Algol, osv. Formålet med disse højniveausprog er, at almindelige brugere, der ikke er uddannet som programmører, skal kunne anvende dem i deres dagligdag. De skal være funktionsorienterede ikke generelle, som det tidligere *lt1,database* beskrevne bogholderisprog. Der er på det sidste blevet udviklet databasemaskiner, så det varer ikke længe inden man kan købe integrerede kredsløb, der kan administrere databaser, hvorefter der er en chance for at mikrodatamater kommer på højde med større datamater til administrativt brug. Programmeringsprog, ved hjælp af hvilke man hurtigt og nemt kan udfærdige rapporter og integrerede kredsløb til formattering af skærmbilleder har været kendt et stykke tid, så på et tidspunkt vil dette også kunne findes på mikrodatamater. *nl2* *lt1,tabelorienterede* Allerede idag er der en del *lt1,programprodukter* tabelorienterede værktøjer på markedet til mikrodatamater, som kører under operativsystemet CP/M, og det er afgjort en niche, som vil udvikle sig kraftigt i de kommende år. Der er to typer værktøjer. Den ene type er beregningsorienteret, som f.eks. Visicalc, den anden kartoteksorienteret. *nl2* *lt1,beregnings-* Det karakteristiske ved de *lt1,orienteret* beregningsorienterede er, at de danner en ramme, hvori brugeren nemt kan anbringe sine regneregler, og derved få programmet til at fungere helt efter sit individuelle behov. *lt1,kartoteks-* Det karakteristiske ved de kartoteksorienterede er, *lt1,orienteret* at brugeren på en enkelt måde og helt fleksibelt kan definere, hvilke felter skal indeholde hvad, samt hvilke ledetekster disse skal vise sig med på skærmen. Der er så i programpakken forberedt en række udskrifter, brugeren kan vælge at benytte på det individuelt designede kartotek. *nl2* Fælles for disse værktøjer er fleksibiliteten og den række af faciliteter, der stilles brugeren til rådighed. Ligeledes er produkterne godt beskrevet i en let tilgængelig brugervejledning, og er rimeligt billige. Produkterne bærer kort sagt præg af at være udviklet til et stort marked. *nl2* *lt1,brugsanvisning* På et punkt er mange billige mikrodatamater forud for deres større søskende, og det er med hensyn til den indlæringstid, der skal til for at kunne anvende anlægget. På større maskiner er der ofte en masse manualer, der skal læses igennem, før man kan komme igang, hvorimod mikrodatamater, lidt firkantet sagt, har indbygget brugsanvisning. Det vil nok være kendetegnende for mikrodatamater, at der vil blive lagt megen vægt på dette område, da netop det store marked af ukyndige, førstgangsbrugere er forudsætningen for videreudviklingen af mikrodatamater, hvis den lave pris skal bevares. *nl2* *ef* scope user bog scope user bogproof finisb ▶EOF◀