[abc80] Högupplösningsgrafik på ABC806

Andreas Gustafsson andreas.gustafsson at gmail.com
Tors Feb 8 07:42:45 PST 2018


(kan tillägga att jag provat alla kombinationer av filnamn, med och utan
punkt, med och utan ändelse, stora och små bokstäver etc.)

2018-02-08 16:39 GMT+01:00 Andreas Gustafsson <andreas.gustafsson at gmail.com>
:

> Har försökt läsa på lite om DOS-funktionerna i Bit för Bit nu, men jag
> blir inte riktigt klok på hur och vilka jag ska använda.
>
> Vad jag vill göra är ju ha filer med "rå" binärdata som jag sedan kan
> ladda in i minnet, antingen i en klump eller att jag loopar och tar små
> chunks, det funkar vilket som.
>
> Men vad för sorts filer ska jag ha på disken? Kan jag lägga rena
> rå-binärer där och ladda dem, eller ska jag köra via .abs filer (fast utan
> att vilja starta dem).
> För tillfället skapar jag disk-images via abcwrite och kör sedan i ABCWin,
> men jag vill ju ha en lösning som är kompatibel även sen när jag kommer att
> köra på riktig hårdvara via ABCBus.
>
> Det verkar ju finnas exempelvis 601B "Load" som laddar en ABS-fil.
> Jag gjorde ett test med denna, skapade en .ABS-fil med lite data som
> laddas på 0xa000, lade denna som data.abs tillsammans med mitt huvudprogram
> på en .dsk fil.
>
>     ORG 0x8000
>
>
>     ld        de,filename
>     ld        b,0
>     ld        c,0xff
>     call    0x601b
>
>     ld        hl,0xa000
>     ld        de,0x7800
>     ld        bc,160
>     ldir
>
> inf:
>     jp        inf
>
> filename:
>     db "DATA.ABS"
>     db 0
>
> Funkade inte alls, har provat att pilla lite på b och c parametrarna, men
> det är ju som sagt mest gissningar.
>
> Kanske ABS-loading inte är det bästa sättet att lösa det på alls?
>
>
> Finns det kanske något bra exempelprogram i något gammalt fint arkiv
> nånstans? :)
>
> /Andreas
>
> 2018-01-25 16:18 GMT+01:00 Robert Juhasz <juhasz at abc.se>:
>
>> 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
>>>>>> >>                     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