Shadow RAM (Acorn)

Shadow RAM , på mikrodatorerna Acorn BBC Micro , Master-serien och Acorn Electron är namnet på en speciell rambuffertimplementering för att frigöra huvudminne för användning av programkod och data. Vissa implementeringar av skugg-RAM tillåter också dubbelbuffrad grafik.

Bakgrund

BBC Micro, Master-serien och Electron-maskinerna använder 8-bitars 6502- och 65C102- processorer med ett 16-bitars adressutrymme. Det här adressutrymmet är uppdelat i 32 KB RAM (0x0000 till 0x7FFF), 16 KB sidleds " paged " adressutrymme (0x8000 till 0xBFFF) och 16 KB operativsystemutrymme (0xC000 till 0xFFFF). Video- eller skärmminne allokeras vanligtvis från 0x7FFF nedåt efter behov, och upptar så lite som 1 KB för text-TV- läge 7 (och därmed regionen från 0x7C00 till 0x7FFF), eller så mycket som 20 KB för lägena 0-2 (och därmed regionen från 0x3000 till 0x7FFF). Således kan skärmminne därför uppta en avsevärd del av det tillgängliga direktadresserade 32 KB RAM-minnet.

Översikt

Shadow RAM är ett block av RAM som kan anses ligga parallellt med den normala minneskartan och nås av systemet endast under vissa förhållanden. När skugg-RAM är aktiverat blir minnesområdet som normalt används för skärmminne tillgängligt för BASIC-programanvändning och för applikationer som använder officiellt dokumenterade operativsystemgränssnitt. Givet det maximala kravet på 20 KB för skärmminne med de berörda systemen, är mängden skugg-RAM normalt 20 KB.

Shadow RAM monterades som standard på BBC Micro Model B+ och BBC Master-serien, men var en valfri funktion som tillhandahålls av tredjepartsexpansioner på tidigare BBC Micro-system och Acorn Electron. Aries-B20-produkten, som ursprungligen såldes av Cambridge Computer Consultants, erbjöd 20 KB skugg-RAM för BBC Model B, vilket på ett transparent sätt avledde icke-framebuffer-åtkomster till skugg-RAM för adresser i 20 KB videominne.

I system baserade på BBC Model B+, som Acorn Cambridge Workstation , kontrollerar ett programmerbar array logic (PAL)-chip åtkomst till minne och exponerar skärmminnet för CPU:n genom att omdirigera minnesåtkomster till lämpliga minnesplatser. När skuggläget är aktiverat övervakar PAL-chippet adresserna till instruktioner som hämtas av CPU:n, och där sådana instruktioner har hämtats från ett minnesintervall från 0xA000 till 0xAFFF eller från 0xC000 till 0xDFFF, anses de vara en del av bildskärmen drivrutiner som kan komma åt skärmminnet.

Följaktligen anses alla minnesåtkomster som utförs av instruktioner hämtade från dessa bildskärmsdrivrutiner som sedan åtkomst till minne i intervallet 0x3000 till 0x7FFF ha åtkomst till skärmminnet, och PAL-chippet bekräftar en signal för att välja "skugga" 20 KB minnesbank för sådana instruktioner så att de kan läsa från eller skriva till skärmen. Alla andra RAM-åtkomster i skuggläge riktas mot en sammanhängande region av RAM från 0x0000 till 0x7FFF (och potentiellt upp till 0xAFFF, om den är exponerad) som inte är värd för skärmminnet. Under tiden, i icke-skugg- eller "normalt" läge, är samma angränsande region värd för skärmminnet, vilket är konventionen i den traditionella BBC Micro-arkitekturen, och skuggminnet är inte tillgängligt.

BBC Master Implementation

Till skillnad från expansionskorten för tidigare system tillåter BBC Master implementeringen av shadow RAM valet av antingen skuggminne eller huvudminne för användning som skärmminne, detta görs via Access Control Register. Genom att växla mellan huvud- och skuggminne på alternativa bildrutor kunde dubbelbuffrad video användas. Acorn gav ett demonstrationsprogram i BASIC som visar rullande molnanimation med och utan dubbelbuffring. Tv-spelet Firetrack skulle också använda dubbelbuffring om shadow RAM var närvarande.

På BBC Master (och även BBC Model B+) aktiveras shadow RAM genom att ställa in den mest signifikanta biten av minneslägesnumret. Till exempel, för att använda läge 1 med shadow RAM aktiverat, väljs läge 129 (128 kombinerat med 1).

En annan betydande skillnad mellan Master-implementeringen av shadow RAM och tidigare implementeringar som också erbjuder 32 KB skugg-RAM är allokeringen av de extra 12 KB utöver de 20 KB som skuggar skärmminnet. Istället för att detta minne upptar en enda region från 0x8000 till 0xAFFF i sidleds RAM-utrymme, som det gör med Aries-B32-produkten och BBC Model B+, upptar det istället två regioner i Mastern som "privat RAM": en 4 KB-region från 0x8000 till 0x8FFF med funktionstangentdefinitioner, arbetsyta för operativsystemet och tecken- och teckensnittsdefinitioner; en 8 KB-region från 0xC000 till 0xDFFF som innehåller sökt (sidleds) ROM och operativsystems arbetsyta. Således kunde Mastern stödja omdefiniering av teckenuppsättningar och att allokera minne till arkiveringssystem utan att mängden tillgängligt användar-RAM minskade.

Ytterligare förbättringar

Efterföljande produkter utökade skugg-RAM-minnet med ytterligare RAM-minne som kunde användas för andra ändamål. Till exempel tillät Aries-B32-produkten skugg/sidledes RAM-kombinationer av 20 KB/12 KB och 16KB/16KB, eller användningen av 32 KB RAM som två sidleds RAM-banker. Slogger Master RAM Board erbjöd en 32K RAM-lösning för Acorn Electron tillsammans med en "turbo mode" förbättring.

Patenttvist

En tvist uppstod mellan formgivarna av Aries-B20 shadow RAM-kortet (Aries Computers Limited) och två andra företag som erbjuder liknande produkter, Raven Micro Products och Watford Electronics, angående det påstådda intrånget i patent GB2137382A som beskriver tekniker som används vid designen av Aries -B20-bräda. De inblandade produkterna var Raven Micro Products (Raven-20) och Watford Electronics (32K RAM Expansion Board). Till slut, 1986, förvärvade Watford Electronics Aries Computers i en "femfigursaffär" inklusive de inblandade patenten, och Watford sålde därefter Aries produkter tillsammans med företagets egna.