[abc80] Högupplösningsgrafik på ABC806
Erik Isaksson
exon at lysator.liu.se
Ons Jan 24 06:43:21 PST 2018
Man måste använda instruktionen OUT (C), r som också lägger ut
B-registret på de höga adressbitarna och används för att välja register.
Jag håller precis på att dokumentera funktionen i emulatorn, och kommit
ungefär så här långt:
Hi-Res Graphics
512x240 pixels, 2 bits/pixel, gives 30kBytes.
Visible 32k-page selected by HRC-reg bits 3—0, active 32k-page selected
by HRC-reg bits 7—4.
Bit
7
6
5
4
3
2
1
0
Page
Active Page 0—15
Visible Page 0—15
HRC-reg written using OUT 6,<val>.
Each nibble of video memory serves as an index into the palette
registers, which gives 4-bit color values for two pixels.
Bit
7
6
5
4
3
2
1
0
Pixels
0-1
2-3
Palette registers 0—15:
Bit
7
6
5
4
3
2
1
0
Color
P
B
G
R
P
B
G
R
Pixel
0
1
Palette registers are written using LD B,<idx>; LD C,7; LD r,<val>, OUT
(C),r
128k of Video Unit Memory (VUMEM) is available through one of three
mechanisms: 4k, 30k, or 32k paging.
4k-paging
Enabled by EME-bit in MISC-reg.
30k-paging
Enabled by executing code from 7800h—8000h (HR-opt). Active page
available at 0000h—7800h.
32k-paging
Enabled by DART chB DTR. Active page available at 0000h—8000h.
mvh Erik
On 2018-01-24 13:01, Andreas Gustafsson wrote:
> Inser nu att jag nog inte riktigt förstått mig på palett-systemet, jag
> kan sätta upp färgerna genom att skicka saker till port 7, men hur
> väljer man *vilket* av de 16 palette-entryna man vill påverka?
> Servicemanualen börjar nämna lite om det på sida 122 men hänvisar
> sedan "(se teknisk beskr.)" och någon sådan hittar jag inte!
>
> 2018-01-23 23:46 GMT+01:00 Erik Isaksson <exon at lysator.liu.se
> <mailto:exon at lysator.liu.se>>:
>
> Kul att det rör på sig! Jag hoppas jag har fått rätt funktion på
> sakerna i emulatorn, bra om du kan verifiera med en riktig maskin
> om jag gjort rätt :-)
>
> Bit 3 (P) i palettvärdet bestämmer väl dessutom om text eller
> grafik ska synas givet en viss färg; börjar man blanda borde det
> bli riktigt psykedeliskt!
>
>
> / E
>
>
> On 2018-01-23 23:33, Andreas Gustafsson wrote:
>> Tack Ola och Erik!
>>
>> Med hjälp av port 6 för att mappa in vilket minnesområde jag peta
>> på samt visa på skärmen, port 35 för att aktivera 32kb-mappningen
>> samt port 7 för att sätta upp paletten så har jag nu fått igång
>> hires-grafik, funkar fint!
>> Intressant lösning att den lägger sig ovanpå det vanliga
>> text-grafiken, det här öppnar upp för skojiga effekter!
>> Har massor av idéer på vad man skulle kunna göra, men ska försöka
>> hålla mig lite i skinnet tills jag har en riktig maskin på plats
>> också så att man kan verifiera allt till 100% :)
>>
>> /Andreas
>>
>>
>>
>> 2018-01-23 19:22 GMT+01:00 Erik Isaksson <exon at lysator.liu.se
>> <mailto:exon at lysator.liu.se>>:
>>
>> Det finns visst tre olika sätt att komma åt grafikminnet
>> (128k) på 806:
>>
>> - 30k-blocking: 30k kopplas in på 0x0000--0x7800 vid
>> exekvering av kod på adress 0x7800--0x7fff
>>
>> - 32k-blocking: 32k kopplas in på 0x0000-0x8000 vid
>> aktivering av DART ChB DTR
>>
>> -4k-blocking: godtyckligt 4k-block kan kopplas in på
>> "godtycklig" plats i minnet, aktiveras av EME i
>> MISC-registret (out 54,128)
>>
>> Känns ju som enklaste sättet om man kör från egen assembler
>> är 32k-blocking...?
>>
>>
>> mvh Erik
>>
>>
>>
>> On 2018-01-23 00:07, H. Peter Anvin wrote:
>>
>> On 01/22/18 09:50, Andreas Gustafsson wrote:
>>
>> Ja, nu är jag igång och spammar stackars ABC80-listan
>> igen!
>>
>> Nu har jag hyfsad koll på hur
>> textmode/attribut-färger etc. fungerar, och
>> med Eriks hjälp har jag även lyckats vänta på VSYNC
>> så att mina
>> uppdateringar sker en gång per frame, vilket man
>> givetvis vill för att få
>> mjuk och fin animation.
>>
>> Nu skulle jag vilja börja leka med hiresgrafiken!
>> Finns den beskriven
>> någonstans?
>> Har förstått så mycket som att man kan switcha in
>> block av Video-RAM nere
>> på 0000->7800 på något sätt, men hittar inte någon
>> dokumentation på hur man
>> gör detta (antar att det är någon OUT-port som styr det).
>> Sedan vill jag även enabla grafikmoden på något sätt,
>> och välja vilken av
>> de fyra bitmapparna som får plats i VRAMet som ska
>> visas inte heller detta
>> har jag hittat hur man gör.
>> I servicemanualen finns det lite exempel, men de
>> använder bara tråkig
>> BASIC, jag vill ju koda rätt "to the metal" i assembler!
>> I värsta fall kanske man kan ge sig på att
>> disassemblera basic-kommando för
>> att hitta vad de gör?
>>
>> Bit för bit beskriver grafiken för ABC800C/M, men tyvärr
>> inte ABC806 som
>> kom ut senare. Tyvärr är kretsschemat inte så användbart
>> heller,
>> eftersom ABC806 använde en hel del PAL-kretsar, som då
>> hade blivit
>> tillgängliga.
>>
>> Det finns troligen något i ABC-bladen och/eller
>> ABC-klubbens MSG, och
>> kanske i någon annan manual. Det kanske går att hitta en
>> manual
>> och/eller simulator som klurat ut det, med, och tracea
>> vad ROMmen
>> faktiskt gör.
>>
>> ABC800C/Ms HR-grafik var rätt annorlunda; den kopplades
>> automatiskt in
>> på 0-16K plus ett PROM på 30-32K om CPUn började köra kod
>> på de senare
>> addresserna (M1 + MREQ användes för att klocka en vippa
>> som lagrade
>> A[15:11] = 01111). ABC806 hade ju 128K, dock.
>>
>> ABC802 hade RAM på 0-32K som kunde kopplas in via en
>> statussignal från
>> en av SIO-kretsarna (lite som A20 på PC kontrollerades via
>> tangentbordskontrollern.) Jag vet att det interfacet
>> stöddes också på
>> ABC806, men jag tror också att det gick att kontrollera i
>> finare detalj.
>>
>> -hpa
>>
>> _______________________________________________
>> ABC80 mailing list
>> ABC80 at abc80.org <mailto:ABC80 at abc80.org>
>> http://www.abc80.org/mailman/listinfo/abc80
>> <http://www.abc80.org/mailman/listinfo/abc80>
>>
>>
>> _______________________________________________
>> ABC80 mailing list
>> ABC80 at abc80.org <mailto:ABC80 at abc80.org>
>> http://www.abc80.org/mailman/listinfo/abc80
>> <http://www.abc80.org/mailman/listinfo/abc80>
>>
>>
>
>
More information about the ABC80
mailing list