[abc80] Högupplösningsgrafik på ABC806
Robert Juhasz
juhasz at abc.se
Tors Jan 25 07:18:15 PST 2018
jag hade nog läst en sektor i taget o kopierat från dosbuf->vram. Om man vill läsa o kopiera mindre block finns många lättanvända funktioner i dos. Kolla sid 80-81 i bit för bit. De funkar också på abc80 med ufddos...
Robert
Robert
Skickat från min Xperia™-smartphone från Sony
---- Andreas Gustafsson skrev ----
>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