[abc80] Högupplösningsgrafik på ABC806

Erik Isaksson exon at lysator.liu.se
Ons Jan 24 11:47:44 PST 2018


Jaha, ser man på, där hittade du en brist i implementationen. Jag har 
visst gjort ett ful-hack  som ignorerar adressen och bara räknar upp 
palette-indexet för varje skrivning :-( Funkar ok så länge man bara 
använder BASICens FGCTL som alltid skriver alla 16 register...

Fixar, om du inte tänker hitta något mer när du ändå håller på :-)

mvh Erik


On 2018-01-24 16:04, Andreas Gustafsson wrote:
> Riktigt trevlig dokumentation ser det ut att bli, tummen upp!
>
> När det gäller palett-register så tolkade jag också 
> servicemanual-texten så som du skrev, men jag var tveksam för jag har 
> inte läst tidigare något om att out (c) på z80 skulle ta hänsyn till 
> b-registret, men det kanske är så.
> Dock verkar det inte fungera, för följande kod:
>
>     ld        b,0
>     ld        c,7
>     ld        a,0x00
>     out    (c),a
>
>     ld        b,1
>     ld        c,7
>     ld        a,0x77
>     out    (c),a
>
> Ger *inte* samma resultat som:
>
>     ld        b,1
>     ld        c,7
>     ld        a,0x77
>     out    (c),a
>
>     ld        b,0
>     ld        c,7
>     ld        a,0x00
>     out    (c),a
>
> Dvs. i bägge fallen vill jag sätta färg 0 till svart och 1 till vit, 
> det enda som skiljer är ordningen vilken jag gör det i.
> Men i de nedre fallet verkar färg 0 bli vit, precis som om b-registret 
> ignorerades.
>
> /Andreas
>
>
>
> 2018-01-24 15:43 GMT+01:00 Erik Isaksson <exon at lysator.liu.se 
> <mailto:exon at lysator.liu.se>>:
>
>     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