[abc80] Högupplösningsgrafik på ABC806
Andreas Gustafsson
andreas.gustafsson at gmail.com
Tors Jan 25 06:49:00 PST 2018
På tal om att ladda saker - någon som har nåt tips på hur man kan
"multiloada" saker enklast?
Jag vill trycka in flera stycken hires-bilder (30kb styck). Då RAM-minnet
bara är 32kb får man plats med en styck sådan i sitt huvudprogram som man
kan trycka över till VRAM, men sen är det stopp.
Det försök jag gjort är att bygga flera .abs-filer med en bild i varje, och
sedan försöka quitta ut till DOS mellan varje, men det funkar icke. Alltså
min teori var:
program1.abs:
switcha in VRAM på 0000->7fff
Kopiera bild #1 dit
switcha tillbaka ROM
ret
program2.abs
switcha in VRAM på 0000->7fff
Kopiera bild #2 dit
switcha tillbaka ROM
ret
program3.abs
...
och sedan till sist har man program5 som kan använda sig av alla bilder,
och så skulle man då från dos bara köra:
program1
program2
program3
program4
program5
Men när jag exitar program 1 så hänger sig den emulerade 806an. :/
/Andreas
2018-01-25 14:20 GMT+01:00 Robert Juhasz <juhasz at abc.se>:
> 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
> _______________________________________________
> ABC80 mailing list
> ABC80 at abc80.org
> http://www.abc80.org/mailman/listinfo/abc80
>
More information about the ABC80
mailing list