[abc80] Högupplösningsgrafik på ABC806

Andreas Gustafsson andreas.gustafsson at gmail.com
Tors Feb 8 07:39:20 PST 2018


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