Lees mijn vorige post nog eens door daar heb ik al je laatse vragen al min of meer beantwoord.
maar ik snap dus nog steeds niet goed, wat de computer nu op A1 tot A7 aanbied.... en door welk commando dat nu komt... out48 of out49?
Vanuit de software krijgt de cpu de instructie out48,100.
Zoals gezegd weet de cpu niet precies wat een adres is het heeft enkel een adresregister. De cpu zet nu het getal 48 in het adresregister en het getal 100 op de adresbus. Vervolgens activeert hij de beide bussen tegelijk en aantal vlag signalen, zoals R/W en AEN.
Wat er nu op A0 tm A15 staat is dan gewoon exact het getal 48. En als ik uitga van een decimaal getal dan is het 0000 0000 0011 0000. Met als eerste A15 en als laatste A0.
Ik lijkt nog wat te missen want om U1 en U2 te laten werken moeten A8 en A9 hoog zijn het kan zijn dat de software dat oplost.
dat als je 144 naar de data port stuur , (port 48), dat die dan op d0 tot d7 terecht moet komen, om deze door te sturen naar de data out bus (Uo0 tot Uo7) , en als je daar na het uniface kaart adres naar port 49 stuurt (kaart adress 100), maar die moeten ook op d0 tot d7 komen te staan, om die door te kunnen geven aan de uniface adressbus (ua0 tot ua7)
Dat komt omdat je nog niet denkt als een computer. Een computer doet altijd maar steeds 1 kleine stap tegelijk. Daarom spreken we in een computer ook over klokpulsen. Elke klokpuls zet de cpu in de volgende stap. Daarom lijkt het voor jouw dat al die data er tegelijkertijd staat maar dat is niet zo. Ik werkelijkheid doet de CPU alles stap gewijs en staat de data er nog geen 100nS.
Je wel eens gezien dat er op een ramchip bv 100nS staat. Dat zou dan 10Mhz zijn zou je denken maar dat is niet waar. Als een CPU op 1Mhz werkt dan is de totale klok 1µS en dat is 500nS laag en 500nS laag en daarin moet het alles doen data inlezen in registers zetten enz. En dan moet het ook nog eens 100nS wachten dat het geheugen reageert en dat blijkt in de praktijk nog net te kunnen, maar een CPU op 4,7Mhz heeft dan toch echt sneller geheugen nodig.
en a0, is het bit wat er eigenlijk voor zorgt of de data de adresbus op gaat, of de databus? want dat is het eenigste bit wat veranderd bij 48 en 49...
Dat ja dat klopt. Maar zoals ik al eerder opmerkte kun je niet echt spreken van een adressbus. Voor de CPU is het allemaal data. Het is de systeem ontwerper die zorgt voor een diepere betekenis van het geheel.
Nog even wat toelichten. In 1980 kwamen de eerste cpu op de markt toen leek 16 bit adres en 8 bit dat al heel wat, maar al heel snel bleek dat toch te weinig. En werd er van alles bedacht om toch maar meer adresruimte te creëren. In de C64 van commodore werd dat deels opgelost door een aangepaste 6502 cpu die een extra 8 bit datapoort intern had. Met een aantal van deze extra bits werd dan extra adresruimte gecreëerd.
Bij de C64 zat die poort intern in het voorbeeld van dit topic zit die op een aparte kaart. In theorie kan je de adresruimte zo onbeperkt opvoeren. van 16 naar 32bit of 64bit allemaal geen probleem
Maar het heeft ook een nadelen
1- Het extra geheugen bevit zich in banken en die banken kunnen maximaal 32kB groot zijn omdat de adresruimte voor een cpu niet enkel voor ram is maar ook voor andere gedeelde taken.
2- Het schakelen tussen de banken kost tijd waardoor je de software ook moet opsplitsen om per stuk software steeds in 1 bank te blijven