[abc80] Högupplösningsgrafik på ABC806

Robert Juhasz juhasz at abc.se
Tors Jan 25 05:20:04 PST 2018


peters abcwrite/abcread/ithabs är finfina verktyg för denna typ av verksamhet! ;)

Om han inte misstycker kan jag dela med mig av windowsbinärer jag gjort av dessa om det finns intresse.....

Robert

Skickat från min Xperia™-smartphone från Sony

---- Ola Andersson skrev ----

>Hur skapar du .dsk-filen?
>Jag gör det manuellt med ABCExplorer, men om jag använder samma filnamn 
>på .dsk-filen verkar ABCWin inte märka att jag ändrat nåt (nån sorts 
>cachning verkar det som).
>
>On 2018-01-25 13:37, Andreas Gustafsson wrote:
>> När jag kodade för ABC80 hade jag en bat fil som assemblerade, körde en 
>> bin -> bac konvertering, kopierade denna fil in en dsk-fil med namnet 
>> "a.bac" och startade emulatorn.
>> Då var det bara att köra "run a" för att provköra.
>> 
>> Får 806:an har jag nu gått över till .abs-filer istället, så då gör bat 
>> filen istället: assembler, bin->abs, kopiera denna fill till a.abs och 
>> starta emulatorn.
>> Sedna får jag köra "bye" för att komma till dos och sedan "a" för att 
>> starta.
>> 
>> Tack för erbjudande om testning, kanske behövs, men prio ett är att få 
>> en egen maskin nu när det börjat röra på sig i utvecklingen!
>> 
>> /Andreas
>> 
>> 2018-01-25 13:10 GMT+01:00 Ola Andersson <ola at organ.su.se 
>> <mailto:ola at organ.su.se>>:
>> 
>>     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
>>         <mailto: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 <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>
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>         _______________________________________________
>>         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>
>> 
>> 
>> 
>>     -- 
>>     Ola Andersson
>>     Organisk Kemi
>>     Stockholms Universitet
>>     08-163743
>>     _______________________________________________
>>     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>
>> 
>> 
>
>
>-- 
>Ola Andersson
>Organisk Kemi
>Stockholms Universitet
>08-163743
>_______________________________________________
>ABC80 mailing list
>ABC80 at abc80.org
>http://www.abc80.org/mailman/listinfo/abc80


More information about the ABC80 mailing list