Peter Thärning
<3707>
· Text 2638 · w8 · kommentar
1986-10-13 02:00
Ärende: Prom på ledig area.
Jag vet inte hur din 80tkntillsats fungerar men mitt tips är att det
inte kommer att uppstå några problem om du följer beskrivningen i bladet.
Anledningen till att jag Tror det beror lite utav följande:
I ABC80 sitter det ett prom på 256x4 bitar som är till för att hjälpa
Z80 att hitta rätt bland alla minnestyper.
Prommet har alltså 256 adresser och för varje adress är det programmerat
en kombination bestående av 4 bitar data. Dessa data tjänstgör som ett
slags ChipSelect för varje minnestyp och talar om för ett minne i taget
att det är aktiverat, allt efter Z80's önskemål. Jämför med OUT 1,kortadres
på bussen, man väljer ett kort i taget.
Av prommets 8 adresståtar (2**8=256) så är de sex minst signifikanta,
dvs A0 tom A5, kopplade till Z80's sex mest signifikanta adresståtar,
dvs A10 tom A15. Detta innebär att varje promadress motsvarar en 1Kbytes
kaka av Z80's totalt 64 stycken 1Kbyteskakor.
Den "lägsta" kakan tex ger;
Z80 Prom Data ut från prom
A A D
111111
5432109876543210 543210 3210
---------------- ------ ----
000000xxxxxxxxxx 000000 1001
000001xxxxxxxxxx 000001 1001, där 1001 kanske står för ROM, säkerligen
en BASICTOLK och x'ena är ju då löpande binäradress (0-1023).
Koden 1001 är inget att haka upp sig på, det föll sig så att just den
kombinationen fick betyda Read Only Memory.
På detta sätt är hela ABC80's minneskarta uppbyggd, i 1Kilobytesblock,
och eftersom det finns två adresspinnar "över" på prommet så kan man
ju bränna in hela fyra olika minneskartor i prommet, som man sedan efter
önskemål kan switcha mellan.
Nedan följer en tabell som beskriver innehållet i ett sådant prom så
som det såg ut i min ABC80 när den innehöll 16Kb.
Promadress är den adress som kommer att ligga på A0-A5. Switchningen
mellan de olika bankerna tecknas som +64, +128, +64+128, där +64 motsvarar
A6,7 = 1,0, +128 motsv. A6,7 = 0,1 osv. Cpuadress är den adress som
då ligger på Z80's adressbuss.
Promadress Cpuadress Minnestyp storlek
0-30 0-31743 Ledigt 31Kb
31 31744-32767 Bildminne 1Kb
32-47 32768-49151 Ledigt 16Kb
48-63 49152-65535 Ramminne 16Kb
+64 (vilket ger en STANDARD ABC80)
0-15 0-16383 Romminne 16Kb
16-30 16384-31743 Ledigt 15Kb
31 31744-32767 Bild 1Kb
32-47 32768-49151 Ledigt 16Kb
48-63 49152-65535 Ram 16Kb
+128
0-23 0-24575 Rom 24Kb (8Kb plats för Eprom)
24-30 24576-31743 Ledigt 7Kb
31 31744-32767 Bild 1Kb
32-47 32768-49152 Ledigt 16Kb
48-63 49152-65535 Ram 16Kb
+64+128 (utvecklingsversion??)
0-3 0-4095 Rom 4Kb
4-30 4096-31743 Ledigt 27Kb
31 31744-32767 Bild 1Kb
32-47 32768-49151 Ledigt 16Kb
48-63 49152-65535 Ram 16Kb
De två adresspinnarna som switchar mellan bankerna sitter som byglar
på kortet (b10 & b20) och är i grundversionen av ABC80 alltså byglade
så att A6=1 & A7=0.
Jag vet inte hur prommet för din ABC80 med 80tkn ser ut men om det är
riktigt gjort så kan du nog bygla efter ABC-bladet och sätta dit en extra
2764. Det enda som inte blir så bra är att du tappar de kilobyten som
bildminnet är lagt i. Har du 6Kb ledigt så kommer prommet/Z80 aldrig
att försöka adressera mer än så som extra påbyggnad, det är ingen risk
att det blir minneskrock.
Den som har byggt till 64Kb enligt Mikrodatorn har en liten finess vad
det gäller switchning mellan bankerna. I den konstruktionen har man
piggybackat (kackerlacka på kackerlacka) en LS273 (8 st. flipflop) på
den reden befintliga 273an som styr ljudgeneratorkretsen a la OUT 6,tjut.
Den nya kretsen har fått IOadress 7 och vipps har man åtta fräscha
programmerbara utgångar varav man har använt de två minst sign. till
att styra A6 och A7 på prommet. Man väljer alltså bank med OUT 7,0-3.
Har man access till en promprogrammerare av rätt typ så kan man själv
laja lite. Tex bildminnet, jag har 80tkn och ena halvan av det minnet
har jag liggande på 29696-30719, som enligt minneskartan är ledigt.
Den andra halvan ligger där det gamla låg, 31744-32767.
På detta viset så har jag 8Kb *LEDIGT*, 4Kb flexoption, 1Kb IECoption
och 1Kb printeroption om jag skulle vilja ha nån rutin där.
----->