[abc80] Högupplösningsgrafik på ABC806

Erik Isaksson exon at lysator.liu.se
Tors Jan 25 11:47:22 PST 2018


Det går tyvärr inte att skicka in någonting till ABCWin från 
kommandoraden. Det känns knepigt att få till, man måste ju på något sätt 
vänta ut att systemet "bootat" och sedan simulera att filen laddats in i 
minnet... nej, jag tror hellre på att försöka automatisera skapandet av 
en disk-image med autostart av en .abs-fil eller liknande.

mvh Erik


On 2018-01-25 13:10, Ola Andersson wrote:
> Ja, det är väldigt bra att ha en bra emulator.
> Jag har fått till det så att jag kan generera .bac-filer direkt från 
> min utvecklingsmiljö (kör SublimeText 3), men det är ju lite jobb att 
> sen fixa en .dsk-fil i ABCExplorer och sen starta i ABCWin.
> Om man skulle få önska så vore det nice att kunna skicka in en bac-fil 
> direkt som argument till ABCWin. Eller går det redan?
>
> Jag kan testa dina 806-program åt dig tills vidare om du vill.
>
> On 2018-01-25 12:45, Andreas Gustafsson wrote:
>> Suveränt att du fortsätter uppdatera emulatorn, den är ovärderlig vid
>> utveckling!
>>
>> Jag tror nästan att jag ska ta och vänta in att jag får tag på en riktig
>> 806a nu innan jag experimenterar vidare, känns som det vore bra att 
>> ha den
>> och provköra och verifiera på allteftersom. Jag kommer säkert stöta på
>> massor med problem, 99% kommer vara jag som klantat till det och 1% 
>> kommer
>> kanske vara att det är något som saknas i emulatorn, så för att 
>> undvika att
>> rapportera massa falska issues vill jag kunna testa själv först!
>>
>> /Andreas
>>
>> 2018-01-24 20:47 GMT+01:00 Erik Isaksson <exon at lysator.liu.se>:
>>
>>> 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>:
>>>
>>>> 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>:
>>>>
>>>>> 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>:
>>>>>
>>>>>> 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
>>>>>>> http://www.abc80.org/mailman/listinfo/abc80
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ABC80 mailing list
>>>>>> ABC80 at abc80.org
>>>>>> http://www.abc80.org/mailman/listinfo/abc80
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>> _______________________________________________
>> ABC80 mailing list
>> ABC80 at abc80.org
>> http://www.abc80.org/mailman/listinfo/abc80
>>
>
>



More information about the ABC80 mailing list