[abc80] Högupplösningsgrafik på ABC806

Ola Andersson ola at organ.su.se
Tors Jan 25 05:10:05 PST 2018


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


More information about the ABC80 mailing list