[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