[abc80] Högupplösningsgrafik på ABC806

Andreas Gustafsson andreas.gustafsson at gmail.com
Tors Jan 25 05:23:10 PST 2018


Så här  gör jag:

@sjasmplus -i.\include --raw=%1.bin %1.z80
@IF ERRORLEVEL 1 GOTO end
@del test.dsk
@bin2bac2 %1.bin a.bac 0xc000
@rem del %1.bin
@dosgen test.dsk
@doscopy test.dsk -b a.bac
@cd \emulate\abcwin2beta
@abcwin.exe
@cd \prg\abc80
:end

Så bat filen deletar disken, genererar en ny disk, kopierar in filen.
Sedan startar jag emulatorn (som alltid pekar mot test.dsk), testar och
sedan stänger jag emulatorn så att den "släpper" .dsk filen.
Rinse and repeat

2018-01-25 14:10 GMT+01:00 Ola Andersson <ola at organ.su.se>:

> 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