Freeware Z80 microprocessor IDE

Deze pagina gaat over mijn eerste microprocessor waar ik jarenlang mee geprogrammeerd heb en die ik van binnen naar buiten kende, de Z80 processor. Toen ik 1972 ge´nteresseerd raakte in computers was er voor de hobbyist nog niets verkrijgbaar behalve wat boeken die ik dan ook las. Pas een paar jaar later kwam Elektuur met een SC/MP processor board maar dat was voor mij toen onbetaalbaar. Ik heb wel veel theoretische kennis opgedaan door alles hiervan te lezen. Toen ik in 1979 twintig jaar oud was kocht ik mijn eerste echte computer, de Tandy TRS-80 model I level II met als hart een Z80 processor. Binnen de kortste keren kon ik hiervoor in assembler programmeren en schreef ik complexe assembler programmaĺs voor de Z80 processor. Daarna hadden al mijn computers een Z80 processor zoals de Sinclair Spectrum en later de MSX. Na mijn ICT opleiding was ik Pascal en Cobol programmeur, maar mijn eerste baan was hardware en software ontwikkelen op embedded Z80 systemen (kassa en machinesturing systemen) in assembler en PL/Z. Daarna ging ik werken bij Micro Technology (een MSX hardware leverancier) en programmeerde ik weer Z80, maar nu in C en assembler. Pas daarna werd de 8031 processor mijn tweede liefde en heb ik ook voor deze processor veel code geschreven in assembler en C. Ik heb zo lang en zo vaak gebruik gemaakt van de Z80 processor dat ik dit ook wel mijn eerste liefde in processorland noem. Na heel veel jaren heb ik weer de Z80 opgepakt en op deze pagina kunt u informatie vinden over oude en nieuwe Z80 projecten en de nodige documentatie vinden. De Z80 was voor zijn tijd een geniaal ontwerp en de grap is dat deze processor heel veel gebruikt is (en nog steeds gebruikt wordt), in onder meer in de Nintendo Gameboy maar ook in de Texas Instrument wetenschappelijke rekenmachines.
Vriendelijke groet, Hein Pragt.

Z80 workbensch editor en emulator / debugger

Om voor de z80 te kunnen programmeren heeft u een assembler of compiler nodig. Ik vind het persoonlijk nog steeds leuk om in Z80 assembler te schrijven maar ik kon geen tools meer vinden voor Windows 10. Er was nog wel wat te downloaden maar het meeste werkte op DOS niveau. Na wat rond zoeken besloot ik dat tijd was voor een nieuw hobby project, het bouwen van een complete ge´ntegreerde Z80 ontwikkel omgeving. Ik vond een vrij goede assembler en goede portable C code van een emulator en de rest had ik nog ergens in mijn code bibliotheek. Het resultaat is Z80-workbench geworden, een portable x64 Windows programma dat een editor, assembler, disassembler, emulator, single step debugger, intel hex lees/schrijf functie een terminal window, een MPF-1 compatible zeven segment display met 8 leds en toetsenbord ondersteuning heeft.

Installatie

Download het zip bestand en pak het uit op de plaats waar u het wilt installeren op uw harde schijf. Maak dan een snelkoppeling naar het programma naar het bureaublad en het programma is gereed voor gebruik. Het is een zogenaamd portable programma waardoor het geen gebruik maakt van externe bronnen of libraries en geen gebruik maakt van de registry. Na het verwijderen van de directory van dit programma is het ook helemaal van uw systeem verdwenen.

Eerste gebruik

Om te oefenen staat er een example4.asm bestand in de example directory, dit kunt u laden waarna het in het edit venster in het midden zal staan. Nu kunt u dit door middel van de assemble knop omzetten in machinecode, dit zal links in het scherm verschijnen en in het virtuele geheugen van de emulator gezet gaan worden. De laatste (of eerste) .org zal ook inde program counter gezet worden en door een simpele druk op de run knop kunt u het programa uitvoeren en volgen op het scherm. Dit zal niet erg snel gaan omdat telkens bij elke instructie een scherm updatete zal gebeuren. Wanneer u het programma sneller wilt laten uitvoeren kunt u door middel van de update checkbox de update van het register blok uitschakelen. U kunt nu het programma aanpassen, opnieuw assembleren en weer uitvoeren.

Het basic2 voorbeeld is afkomstig van de site van Grant Searle, ik heb hier alleen een aangepaste BIOS achteraan gepplakt en .org 0000h om het startadres in te stellen.

Door middel van de step knop kunt u het programma instructie voor instructie uitvoeren en de uitvoer en de registers controleren. Ook kunt u het break adres invullen, de emulator zal dan bij een run commando stoppen op dit adres en de registers van dat moment tonen. Wanneer in het break veld 0000 staat zal het genegeerd worden.

U kunt de gewijzigde code weer als asm bestand opslaan maar ook als hex bestand wegschrijven zodat u de binaire code in een schakeling of ep(rom) kunt laden voor een echte Z80 schakeling. U kunt ook een Intel-Hex bestand inlezen, deze zal dan in het interne emulator geheugen geladen worden. Dit kunt u dan ook laten uitvoeren wanneer u het correcte startadres in de program counter zet. U kunt dit interne emulator geheugen ook laten disassembleren waarna er weer code in het edit scherm in het midden verschijnt. Dit kunt u dan aanpassen en door middel van asembleren weer terug schijven in het emulator geheugen.

I/O map

De emulator kent standaard een aantal I/O poorten voor invoer van het toetsenbord en uitvoer naar het terminal scherm of de zeven segment displays / leds. In example4 staat een voorbeeld van beiden.

  • In poort 1: Geeft in A register het teken van het toetsenbord terug, wanneer er geen teken is zal een 0 teken terug gegeven worrden.
  • In poort 2: Geef de status van het toetsenbord terug, 0 is geen toetsaanslag beschikbaar, ongelijk aan 0 betekent wel een toetsaanslag beschikbaar. De toets moet dan via poort 1 gelezen worden.
  • Out poort 1: Data voor terminal of zeven segment display. Wanneer Out poort 2 een 0 is zal de data naar de terminal gaan. Wanneer poort 2 ongelijk aan nul is zal de data naar het zeven segment display gaan.
  • Out poort 2: Selectie terminal (0) of zevene segment display. Wanneer een bit (0..5) hoog is zal de data naar elk zeven segment display geen waarvan het bit 1 is. Het is dus mogelijk elke display afzonderlijk maar ook meerdere tegelijk aan te spreken. Om alles uit te zetten zet u dus eerst 0xff op poort twee en dan een 0 op poort 1. Om weer terug te schakelen naar de terminal moet u daarna weer een 0 in naar poort 2 schrijven. (In tegenstelling tot de MPF-1 zal de data van de display wel permanent blijven staan.)
  • Out poort 3: Deze poort is een latch naar de acht leds waarbij elk bit een led aanstuurt.

Credits: Dank aan Jorge Giner Cordero voor het mogen gebruiken en meeleveren van zijn Z80 assembler en Lin Ke-Fong voor het mogen gebruiken van zijn Z80 emulator code.

Download

Dit is de eerste versie 1.01 die ik ter download beschikbaar stel. Dit is een zipbestand met daarin een portable x64 Windows exe programma, een example directory en een assembler directory.


Download z80_workbench101.zip



Z80 links, tips and documents

Hier staat een overzicht van links, ontwerpen en documenten m.b.t. de Z80 processor.



Reacties op het onderwerp: Z80


32 - Techniek »  -  Z80 »
2019-04-07 21:06:00
Hier kunt u reageren op de Z80 pagina en Z80-workbench.
Here you can reply to the Z80 page and Z80-workbench.
Reactie van een bezoeker van de site!
Q & A Z80 page
Er zijn: 2 reacties!
2019-04-07 21:06:00
Ik gebruik met veel plezier deze workbench.
Paar kleine puntjes die voor mij lastig zijn:
1. Ik gebruik ZASM voor mijn Z80's en de syntax is net anders als uz80as. Omdat ook de directives anders zijn kan ik niet met 1 source werken. Is het mogelijk ook ZASM te ondersteunen?
2. De verschillende sub-windows in de UI zijn niet te resizen. Op de huidige grotere schermen zijn de code windows te smal en de terminal/hex-viewer te breed. Ook het lettertype vind ik zelf nogal klein en de code-window heeft geen mono-spaced font.
3. De code-editor werkt niet zo fijn en heeft wat kleine bugjes (soms Ctrl-A ipv A). Een file-based koppeling zou fijner zijn dan kun je je eigen editor kiezen. (Zodra je Assemble klikt, file opnieuw laden?)
4. Het zou helemaal mooi zijn als de porten configureerbaar zijn, zodat je poort 0,1 en 2 kunt mappen naar eigen poorten :-)

Verder fijne tool!

Hartelijk dank

maurits@dijkens.com
Reactie van een bezoeker van de site!
2019-04-09 20:52:00
Fijn om te horen, ik zal de punten meenemen als ik een nieuwe versie ga maken.
Vriendelijke groet, Hein Pragt
Reageren!


Last update: 27-06-2018

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit met betrekking tot de informatie die via deze site wordt aangeboden. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Voor vragen hierover kunt u contact opnemen met: (email: mail@heinpragt.com). Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (email: mail@heinpragt.com).