Ga naar inhoud

Aanbevolen berichten

Grote dank! Deze cartridge is duidelijk meer gevuld dan de BASIC cartridge op PPP waardoor ik je eerdere opmerking snap die suggereert dat ik data aan het overschrijven ben. De BASICNL cartridge die bij mijn P2000T zat was de BASICNL1.1 versie waarin "RobRob83" in de header staat (ik vermoed refererend naar Rob van der Heij en Rob van Ommering) die wel nog enige ruimte heeft. Dit is ook de versie die op PPP staat.

 

@cancom Heb je eventueel wat meer achtergrond informatie hoe de verschillende versies zich tot elkaar verhouden? Welke aanpassingen zijn er bijvoorbeeld gedaan en wat is het jaar van uitgave? En puur uit interesse: is er naast deze versie ook nog een A1 dan?

 

Ik zal in ieder geval aangeven in mijn aangepaste cartridge dat dit een iteratie is gebaseerd op BASICNL1.1 omdat deze voldoende vrije ruimte heeft om een aanpassing te doen maar dat deze dus afwijkt van de BASICNL1.1A2 variant.

 

@dionoid Ik heb een pull request ingeschoten op Github met de BASICNL1.0 en de BASICNL1.1A2 cartridges om de repository verder aan te vullen.

Link naar bericht
Delen op andere sites
  • Reacties 1,3k
  • Created
  • Laatste reactie

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Vakanties zijn er voor compleet in het wilde weg programmeren....

Ik maak een P2000 geheugenviewer met weergave van basic, machinecode, sprites en tekst. Hier een stukje Basic in het geheugen visueel gemaakt.

P2000tool.png

De machinecode wordt ook leesbaar getoond. Niet met mnemonics, want dat leest net zo lastig als dat woord onuitspreekbaar is, maar analoog aan de taal C. Dus A++ betekent de accumulator 1 omhoog.. Enzovoort.

aangepast door blanka
Link naar bericht
Delen op andere sites
Op 20-7-2023 om 08:50, Bertus zei:

Welke aanpassingen zijn er bijvoorbeeld gedaan en wat is het jaar van uitgave? En puur uit interesse: is er naast deze versie ook nog een A1 dan?

 

Het gaat niet om een "nieuwe versie" van de interpreter dus een jaar van uitgave is niet aan de orde: de fabrikant had niks ermee te maken. Het ging erom dat de BIOS alles behalve PDOS negeert waardoor Miniware/JWS niet werd uitgevoerd zodat je telkens de usr-aanroep naar de BIOS-"CPM-start" moest intypen.

 

Voor die automatische DOS-start is in het 1e kwart op adres #1FA6 de "ld hl,#1019" vervangen door een jump naar de toevoeging in 't 4e kwart die dan wel moet afgesloten worden met diezelfde ld hl en een jump naar #1FA9. That's all folks.

 

Ik heb "A2" toegevoegd enkel om aan te geven dat er een verschil is. En "A1" was een 1e, iets beperktere, versie. Wie de routines wanneer heeft geschreven staat misschien in een pdf.

 

Je moest zelf maar zien hoe je de wijziging in je slot1-doos kreeg, al of niet met hulp. Het betekende b.v. dat op een standaard slot1-print de ROMs 1 en 4 vervangen moesten worden door EPROMs.

 

Link naar bericht
Delen op andere sites
1 hour ago, blanka said:

Vakanties zijn er voor compleet in het wilde weg programmeren....

Ik maak een P2000 geheugenviewer met weergave van basic, machinecode, sprites en tekst. Hier een stukje Basic in het geheugen visueel gemaakt.

 

nice! Wat bedoel je met Sprites?

Link naar bericht
Delen op andere sites

Als er van die teletekst-sprites in de code zitten, bijvoorbeel het startscherm van Fraxxon, de fruitjes in Jackpot.etc. Om die op te sporen in de code kun je een spriteview-overlay aanzetten, en daarna kun je de plekken maskeren.

Link naar bericht
Delen op andere sites

 

4 hours ago, blanka said:

Vakanties zijn er voor compleet in het wilde weg programmeren....

Ik maak een P2000 geheugenviewer met weergave van basic, machinecode, sprites en tekst. Hier een stukje Basic in het geheugen visueel gemaakt.

 

Supermooi die lay-out! Hoe moet ik die rode 4-byte (?) blokken interpreteren?

 

4 hours ago, cancom said:

Het gaat niet om een "nieuwe versie" van de interpreter dus een jaar van uitgave is niet aan de orde: de fabrikant had niks ermee te maken.

 

Dank voor die toelichting! Het is dus een soort van revisie door de gebruikersgemeenschap. Ik zal die informatie laten landen in de beschrijving van deze ROM in de PPP.

Link naar bericht
Delen op andere sites

DIe rode blokken zijn regelnummers in Basic, die beslaan 4 bytes, 2 bytes voor de locatie van de volgende regel, en 2 bytes voor het regelnummer. Beide waarden staan onderaan afgebeeld, omwisselbaar tussen hex en normaal

Ik zie in sommige programma's GOSUB machinecode die naar bijvoorbeeld &H1187 springt. Wordt er dan gebruik gemaakt van routines in de Basic cartridge? Best gevaarlijk of niet?

Link naar bericht
Delen op andere sites

Even iets heel anders, waren er P2000 modellen die géén doorzichtig klepje hadden? Ben benieuwd of die nou gewoon de tand des tijds niet hebben overleefd, of dat ze vanaf een bepaald moment zonder zijn geleverd. De behuizing is namelijk nog steeds voorzien van de nokjes ervoor.

Link naar bericht
Delen op andere sites
18 hours ago, blanka said:

DIe rode blokken zijn regelnummers in Basic, die beslaan 4 bytes, 2 bytes voor de locatie van de volgende regel, en 2 bytes voor het regelnummer. Beide waarden staan onderaan afgebeeld, omwisselbaar tussen hex en normaal

Ik zie in sommige programma's GOSUB machinecode die naar bijvoorbeeld &H1187 springt. Wordt er dan gebruik gemaakt van routines in de Basic cartridge? Best gevaarlijk of niet?

Inderdaad, dat klopt, die maken gebruik van basic en dat zou theoretisch gevaarlijk kunnen zijn. Maar destijds waren de basic cartridges uitgerust met echte ROMs. Dus best stabiel. Maar als iemand een aangepste basic zou maken en de toegevoegde code niet aan het eind, maar tussen de andere code hebben geplaatst, of er verscheen een nieuwe Basic met andere adressen, dan gingen die programma's stuk...
Basic maakt wel gebruik van wat hooks en vectoren in RAM om de mogelijkheid te bieden op die manier 'in te haken'. maar niet alle handige routines in basic hebben zo'n sprongtabel of vast aanspreekadres.  

Link naar bericht
Delen op andere sites
3 hours ago, HAL9000 said:

Inderdaad, dat klopt, die maken gebruik van basic en dat zou theoretisch gevaarlijk kunnen zijn. Maar destijds waren de basic cartridges uitgerust met echte ROMs. Dus best stabiel. Maar als iemand een aangepste basic zou maken en de toegevoegde code niet aan het eind, maar tussen de andere code hebben geplaatst, of er verscheen een nieuwe Basic met andere adressen, dan gingen die programma's stuk...
Basic maakt wel gebruik van wat hooks en vectoren in RAM om de mogelijkheid te bieden op die manier 'in te haken'. maar niet alle handige routines in basic hebben zo'n sprongtabel of vast aanspreekadres.  

Is er documentatie/lijst van dat soort in programma's toepasbare routines?

Link naar bericht
Delen op andere sites
5 hours ago, blanka said:

Is er documentatie/lijst van dat soort in programma's toepasbare routines?

 

Deze pagina's schieten mij te binnen. Wellicht is er meer, maar ik ben nog niet klaar met alles op het archief door te nemen.

Link naar bericht
Delen op andere sites
10 hours ago, Bertus said:

 

Deze pagina's schieten mij te binnen. Wellicht is er meer, maar ik ben nog niet klaar met alles op het archief door te nemen.

De nieuwsbrief toont een deel van de lijst, met een programma om de hele lijst te genereren. Alleen kan ik geen <> typen in de emulator. De toets op die plek geeft een piep. Op mijn ene computer zit daar (` ~) en op de andere (\ |), maar beide pakt ie niet. Iemand gelukt om groter dan/kleiner dan te tikken in M2000?

Link naar bericht
Delen op andere sites
16 hours ago, Bertus said:

 

Deze pagina's schieten mij te binnen. Wellicht is er meer, maar ik ben nog niet klaar met alles op het archief door te nemen.

En deze niet te vergeten!! programming/ROMroutines Basic-interpreter.pdf

Link naar bericht
Delen op andere sites
On 7/23/2023 at 6:34 AM, blanka said:

De nieuwsbrief toont een deel van de lijst, met een programma om de hele lijst te genereren. Alleen kan ik geen <> typen in de emulator. De toets op die plek geeft een piep. Op mijn ene computer zit daar (` ~) en op de andere (\ |), maar beide pakt ie niet. Iemand gelukt om groter dan/kleiner dan te tikken in M2000?

 

Als het goed is zit er een M2000.txt file bij de emulator.

Hier kan je meer informatie vinden.

Dit is de extra keymapping van de txt file :

Key Mappings
============
Cursor Keys, -  Movement
Alt/Ctrl
Delete       -  < >
` ~          -  CODE

 

Jammer genoeg niet erg goed beschreven maar voor :

- "<" gebruik je "Delete"

- ">" gebruik je "Shift+Delete"

Link naar bericht
Delen op andere sites
On 7/23/2023 at 6:34 AM, blanka said:

De nieuwsbrief toont een deel van de lijst, met een programma om de hele lijst te genereren. Alleen kan ik geen <> typen in de emulator. De toets op die plek geeft een piep. Op mijn ene computer zit daar (` ~) en op de andere (\ |), maar beide pakt ie niet. Iemand gelukt om groter dan/kleiner dan te tikken in M2000?

hier een listing ZONDER <> die ook werkt 😁

image.png.3c93ca1bf6749f426b758746c510ea4f.png

aangepast door HAL9000
Link naar bericht
Delen op andere sites
On 7/22/2023 at 8:26 PM, Bertus said:

 

Deze pagina's schieten mij te binnen. Wellicht is er meer, maar ik ben nog niet klaar met alles op het archief door te nemen.

Ik zag net dat op pag 65 van het adresboekje ook een tabel staat met alle basic-keywords en adressen voor zowel cassette- als diskbasic.

 

 

Link naar bericht
Delen op andere sites
On 7/24/2023 at 9:24 AM, folly said:

 

Als het goed is zit er een M2000.txt file bij de emulator.

Hier kan je meer informatie vinden.

Dit is de extra keymapping van de txt file :

Key Mappings
============
Cursor Keys, -  Movement
Alt/Ctrl
Delete       -  < >
` ~          -  CODE

 

Jammer genoeg niet erg goed beschreven maar voor :

- "<" gebruik je "Delete"

- ">" gebruik je "Shift+Delete"

Top, ga ik proberen. Doordat het nog niet lukte, heb ik in ieder geval nog wat bugs uit mijn Basic-omzetter gehaald. Na cas naar bas (tekst file) en weer terug bleek een boel beschadigd te raken. Ik dacht ik zet die <> er wel even in met teksteditor. Maar nu weet ik dus hoe het in de emulator kan, en is mijn bas-cas omzetter weer een bug armer.

Link naar bericht
Delen op andere sites
  • 2 weeks later...
On 3/8/2020 at 1:08 AM, HAL9000 said:

Monitor heeft display rot, maar verder werkt alles...

IMG_20200307_153308__01.jpg

Ja, het is een paar jaar geleden... Ondertussen werd steeds minder van het scherm leesbaar. Dit weekeinde heb ik naar aanleiding van deze post op een Duits forum: Gevaarlijke monitor ,de stoute schoenen aangetrokken. Heel voorzichtig (en deels in stukken) de op de beeldbuis geplakte glasplaat en de vergane kit verwijderd...  Ook de gelekte smurrie opgesopt. Zie hier het resultaat!

forum_1.thumb.JPG.75cc18e03945c45e65a62e4c82bdcecb.JPG

forum_3.thumb.JPG.034dadd9e097e13a35d915c8ff87be2f.JPGforum_4.thumb.JPG.52cab3edfc86c787c745c75ba37b897b.JPGforum_2.thumb.JPG.a507173c7e302d653a527bc0266b29c8.JPGforum_5.thumb.JPG.9ccab17ada77b7f6a5d63add7536b2ab.JPGforum_6.thumb.JPG.ebc8f2b319498d3e1d2d48b5356a1642.JPG

aangepast door HAL9000
volgorde foto's aangepast
Link naar bericht
Delen op andere sites
On 12/19/2021 at 10:49 AM, cancom said:

Goed nieuws voor degene met een gebroken nek: binnenkort is bij Conrad een netschakelaar te verkrijgen die bijna identiek is aan de originele. Een verschilletje zit in de afstand tussen de montagegaten: 20mm i.p.v. 23mm, dus moeten de gaatjes (3mm) in de montageplaat iets uitgefreesd worden. Bewaar wel de originele "kap" en dan is dit een prima vervanger (ook bij deze worden beide aders geschakeld) ! Artikelnummer 701606.

 

Ik heb deze besteld en sinds gisteren in huis, dank voor de tip @cancom! Vandaag de schakelaars in zowel de monitorkast als de computer vervangen en de P2000M is zo goed als nieuw!

Link naar bericht
Delen op andere sites
On 7/21/2023 at 7:45 PM, blanka said:

Even iets heel anders, waren er P2000 modellen die géén doorzichtig klepje hadden? Ben benieuwd of die nou gewoon de tand des tijds niet hebben overleefd, of dat ze vanaf een bepaald moment zonder zijn geleverd. De behuizing is namelijk nog steeds voorzien van de nokjes ervoor.

Bij introductie was de P2000T eigenlijk veel te duur voor het geboogde marktsegment. De tweede generatie P2000T's (zie schakelaar van de recorder) heeft een kosten reductie ondergaan en toen is dat klepje niet meer geleverd.  

Link naar bericht
Delen op andere sites
On 7/19/2023 at 7:16 PM, Bertus said:

Zoals jullie weten heb ik enkele hardware projectjes rondom de P2000 opgezet. Om meer uit die hardware te halen is het handig om een ROM flasher te hebben, maar op basis van de discussie in dit topic begrijp ik dat niet iedereen die heeft. Ik heb zelf een TL866ii, maar die zijn al meteen erg prijzig (rond de 100 euro). Je kunt natuurlijk je eigen flasher bouwen met een Arduino, een breadboard en wat shift registers, maar ik kan me indenken dat de drempel daarvoor ook nogal hoog is. (van de andere kant; het kan ook een heel leerzaam project zijn)

 

Vooral voor diegenen die nog geen ROM flasher hebben: heeft het een meerwaarde voor jullie om een gebruiksvriendelijke en goedkope flasher te hebben? Ik heb een redelijk ver ontwikkeld prototype op basis van een Raspberry PICO (zie afbeeldingen) en met een relatief kleine investering aan mijn kant kan dat tot een mooi (open-source / open-hardware) product worden. Ik probeer met deze vraag een beetje te toetsen of daar behoefte aan is of dat er al wellicht goede (en vooral goedkope) alternatieven bestaan. Qua kostprijs voor het product wat ik voor ogen heb moet je denken aan ~20 euro (10-13 euro voor PCB + componenten, ~2 euro voor 3D casing, 5 euro verzendkosten).

 

Laat vooral horen wat jullie ervan vinden! 🙂

 

 

 

Ik heb zeker interesse in een dergelijke ROM flasher. Indien gewenst kan ik je helpen met 3D printen, solderen en/of PCB layouten. De prijs die noemt is zeer schappelijk.

Link naar bericht
Delen op andere sites
7 hours ago, HAL9000 said:

Ja, het is een paar jaar geleden... Ondertussen werd steeds minder van het scherm leesbaar. Dit weekeinde heb ik naar aanleiding van deze post op een Duits forum: Gevaarlijke monitor ,de stoute schoenen aangetrokken. Heel voorzichtig (en deels in stukken) de op de beeldbuis geplakte glasplaat en de vergane kit verwijderd...  Ook de gelekte smurrie opgesopt. Zie hier het resultaat!

forum_1.thumb.JPG.75cc18e03945c45e65a62e4c82bdcecb.JPG

forum_3.thumb.JPG.034dadd9e097e13a35d915c8ff87be2f.JPGforum_4.thumb.JPG.52cab3edfc86c787c745c75ba37b897b.JPGforum_2.thumb.JPG.a507173c7e302d653a527bc0266b29c8.JPGforum_5.thumb.JPG.9ccab17ada77b7f6a5d63add7536b2ab.JPGforum_6.thumb.JPG.ebc8f2b319498d3e1d2d48b5356a1642.JPG

Top resultaat! Ik wil niet weten wat er vanaf is gekomen.

Link naar bericht
Delen op andere sites
2 hours ago, Bekkie said:

 

Ik heb zeker interesse in een dergelijke ROM flasher. Indien gewenst kan ik je helpen met 3D printen, solderen en/of PCB layouten. De prijs die noemt is zeer schappelijk.

Ik ben m aan het uittesten, en met name de cartridge met ZIF-flash-rom is erg prettig in gebruik, ik had al de oranje-zwarte gekocht, maar deze geniet de voorkeur.

Inmiddels ook een eerste stap gezet voor softwaretool op Mac en andere computers, ik maak gewoon een .jar. Na Basic flashen heb ik eens BIS uitgeprobeerd, die zit niet op de multicart. Heb er inmiddels ook de reclamefolder van. Nog tips om goed en gemakkelijk PDF's te maken van documentatie? Ik heb wel eens zo'n opstelling gezien met wig van glas waar je een boek overheen legt, en dan worden de pagina's gefotografeerd. Scanner is niet zo lekker voor gebonden boeken.

Weet iemand hoe je in BIS grafische kleuren kiest? Ik heb wel een aantal andere toetsen uitgevonden, maar dat nog niet.

Link naar bericht
Delen op andere sites
5 uur geleden, Bekkie zei:

 

Ik heb zeker interesse in een dergelijke ROM flasher. Indien gewenst kan ik je helpen met 3D printen, solderen en/of PCB layouten. De prijs die noemt is zeer schappelijk.

Bij deze heb ik ook interesse in de rom flasher. Ben benieuwd wanneer het project vorm krjgt.

Link naar bericht
Delen op andere sites

Goed nieuws. De ROM flasher is zover af dat ik hem graag de deur uit stuur om door geïnteresseerden te laten testen. Ik heb een GUI in Qt geschreven om (hopelijk) makkelijk met de flasher te interfacen. Daarbij heb ik ook een bijbehorende cartridge ontwikkeld met een ZIF socket op de achterzijde (zie foto). Daarmee kun je de ROM chip inserteren zonder dat je de cartridge hoeft open te maken. Aan de voorzijde van de cartridge zit een piano-type dip switch om de bank te selecteren.

 

Een paar kanttekeningen:

  • De GUI is ontwikkeld in Qt op Windows. Zover ik kan zien werkt deze out-of-the-box maar ik raad geïnteresseerden desondanks aan om eerst even te testen of de GUI werkt voordat je overweegt om het in gebruik te nemen.
  • Ik heb zelf beperkte ervaring met Mac en ik gebruik een kant-en-klare MacOSx image in Github actions om de GUI te compilen voor Mac. Deze compilatie werkt op MacOSx versie 11 en nieuwer, maar niet op de oudere MacOSx versies. Wederom; als je enkel een Mac systeem hebt, test dan even de Mac GUI voor gebruik.
  • @blanka heeft de flasher zelf getest voor MacOSx (dus niet de GUI) en dat werkt zonder problemen. De flasher gebruikt een simpel UART protocol voor de communicatie en Blanka heeft daar zelf iets voor geschreven in Java.
  • Je kunt met deze flasher ook de ROM in de zwart-oranje cartridge herprogrammeren. Je moet daarvoor de cartridge wel openmaken. Tevens heb je een adapterplaatje nodig voor PLCC32 naar DIP (heb ik inmiddels ook gemaakt). Het herhaaldelijk open- en dichtschroeven kan echter wel het plastic beschadigen zodat de schroef niet meer goed hecht. Ik heb daarom een herziene versie van de enclosure (doosje) gemaakt met threaded inserts die dit probleem oplossen.

 

@RoykeA en @Bekkie; ik stuur jullie een DM voor e.e.a. verder af te stemmen.

 

Edit: Blijkbaar heb ik nog niet genoeg "forum-credits" om (nieuwe) DMs te sturen. Dus willen jullie mij benaderen?

zif_cartridge.jpg

pico_flasher.jpg

aangepast door Bertus
Link naar bericht
Delen op andere sites
Op 6-8-2023 om 11:11, HAL9000 zei:

Ja, het is een paar jaar geleden... Ondertussen werd steeds minder van het scherm leesbaar. Dit weekeinde heb ik naar aanleiding van deze post op een Duits forum: Gevaarlijke monitor ,de stoute schoenen aangetrokken. Heel voorzichtig (en deels in stukken) de op de beeldbuis geplakte glasplaat en de vergane kit verwijderd...  Ook de gelekte smurrie opgesopt. Zie hier het resultaat!

 

forum_4.thumb.JPG.52cab3edfc86c787c745c75ba37b897b.JPG

Mijn hemel, wat een zootje. Complimenten.

Link naar bericht
Delen op andere sites

Ik heb nog wat tapes met nieuw materiaal gevonden, en probeer deze te dumpen met het programma van Marcel de Kogel. Dat lukt maar helaas bij een leesfout stopt ie meteen en gaat niet verder met de volgende blokken. Ik miste ook iets voor de ontvangende kant, dus daar ook maar even een simpel programmaatje voor gemaakt met wat visuele feedback op wat er gebeurt (teller met gelezen bytes en blokken).

Ik vroeg me af is er ook een omgekeerde tool, die de CAS terugzet naar een bandje. We hebben nu wel iets om een bas file in het geheugen te laden, maar de andere bestanden in de cas mis je dan altijd.

Zou die tool van de Kogel nog op te voeren zijn naar 9600baud?

Ik heb de tool van Marcel even samengeperst tot 1 blok en omgezet naar CAS file, scheelt weer overtypen.

Tape2Mac.cas

aangepast door blanka
Link naar bericht
Delen op andere sites
5 hours ago, blanka said:

Ik vroeg me af is er ook een omgekeerde tool, die de CAS terugzet naar een bandje. We hebben nu wel iets om een bas file in het geheugen te laden, maar de andere bestanden in de cas mis je dan altijd.

Zou die tool van de Kogel nog op te voeren zijn naar 9600baud?

Dank voor de CAS file! Goede vragen, hierbij mijn input:

In principe wordt een blok data geheel ingelezen en treedt de (lees)fout vaak pas op bij een incorrecte checksum. Die fout negeren, toch het blok versturen en doorgaan is het enige wat nodig is... Ik denk dat het aanpassen van de tool niet heel ingewikkeld moet zijn, maar daarvoor moet  de tool nader bestudeerd worden, ook omdat er ook andere leesfouten kunnen optreden waarbij evt recovery van de data ingewikkelder is. Ik heb de disassembly van de monitor alweer een paar jaar geleden gemaakt dus niet alles is top-of-mind... 

Opschroeven van de baudrate zou ook moeten kunnen, maar ook hier geldt: aanpassen hangt af van hoe Marcel ooit de transfer en timing heeft ingericht: vergt ook wat analyse.
De laatste, 'het omgekeerde proces' moet zeker mogelijk zijn. De monitor schrijft een data (programma, array etc.)  zelf ook weg als losse blokken. Leuk om ook over na te denken.


 

Link naar bericht
Delen op andere sites

Ik probeer een Z80 emulator te maken, ik weet het 1000x gedaan, tijdsverspilling, maar gewoon leuk als oefening.

Ik merk echter dat computers nu met 32 bit integers werken (geen 64 blijkbaar), maar als je de standaard 8 bit bewerkingen in 32 bit doet gebeuren er toch andere dingen.

 

Weet iemand hoe de carry, sign en overflow flags werken in de Z80 bij ADD en ADC, en de aftrek varianten. Vind de uitleg hierover heel vaag. Zowel in de Z80 handleiding van Zilog, als op vele websites staan weinig voorbeelden.

stel ik heb

  10000001

  10000001+

100000010

Dat kun je dus interpreteren als 129+129=258 (de omslaggrens is in feite arbitrair, meestal doen we -128/127, soms 0/255, maar -50/205 zou ook kunnen. In deze interpreatie is de eerste 1 van de uitkomst 256. Komt die dan in een overflow-flag?

Stel dat je het negatief behandeld, dan staat er:

-127+-127=-254, dezelfde weergave in 9-bits.

is het nu zo dat in de eerste situatie sign op 0 staat, en 0 blijft, en in de tweede sign op 1 staat en 1 blijft?

en dat in beide gevallen overflow van 0 naar 1 gaat?

En wat als carry 1 was? of overflow al 1 was?

Ik zoek hier duidelijke voorbeelden van.

En dan is er ook nog het gedoe met half-bit carry (geen idee waarom die idiote 4-bit decimaal manier van werken in de processor is gestopt). Wordt dat echt gebruikt in software, of is dat er vooral voor compatibiliteit met 4-bit software van daarvoor (de 4004)?

aangepast door blanka
Link naar bericht
Delen op andere sites

Hi, 

Even snel, voordat allerlei meetings en andere werkgerelateerde dingen voorrang vragen:
Hier een topic dat wat dieper ingaat op de half-carry: https://retrocomputing.stackexchange.com/questions/4693/why-does-the-z80-have-a-half-carry-bit

en Ben Eater (een van mijn favoriete Youtubers) legt, vind ik, goed uit hoe binair rekenen werkt in deze video: https://www.youtube.com/watch?v=4qH4unVtJkE&ab_channel=BenEater

 

Link naar bericht
Delen op andere sites
12 hours ago, blanka said:

Ik probeer een Z80 emulator te maken, ik weet het 1000x gedaan, tijdsverspilling, maar gewoon leuk als oefening.

Ik merk echter dat computers nu met 32 bit integers werken (geen 64 blijkbaar), maar als je de standaard 8 bit bewerkingen in 32 bit doet gebeuren er toch andere dingen.

 

Ik weet niet of dit je veel gaat helpen, maar op x64 architectuur zal een operatie met 64-bit integers in de regel resulteren in een optcode met 64 bit registers; een 64 bit integer operatie dus. Afhankelijk van de programmeertaal die je gebruikt, welke variabelen je daarin declareert en de bibliotheek waartegen je aan compileert kan dat een 32bit integer zijn. In C++ is de de-facto integer op een 64 bit systeem LP64, dus 64 bits per integer. Op 32 bit systemen is dit ILP32, dus 32 bit.

 

Wil je 8 bit operaties afdwingen, dan kun je ervoor kiezen om 8 bit variabelen te declareren. In C++ heb je bijvoorbeeld de familie uint8_t, uint16_t, etc. Wat er daadwerkelijk onder de motorkap gebeurd is niet gegarandeerd en wordt bepaald door je compiler. Soms worden er daadwerkelijk 8 bit operaties gedaan, maar het kan ook dat als je meerdere van daar soort operaties in een for-loop hebt, dat je compiler dan SIMD parallellisatie uitvoert. Als je wilt weten wat je compiler ervan maakt, dan kun je ervoor kiezen om de gegenereerde assembly uit te lezen. Als je 100% controle over je operaties wilt behouden, dan kun je ervoor kiezen x64 assembly te schrijven (of de x86 assembly voor 32 bit systemen).
 

12 hours ago, blanka said:

Vind de uitleg hierover heel vaag. Zowel in de Z80 handleiding van Zilog, als op vele websites staan weinig voorbeelden.

 

Als je beter begrip wilt hebben over de interne werking van de Z80 kun je een emulator gebruiken zoals onderstaande. Deze laat netjes het flag register zien en je kunt stappen per cyclus of per instructie maken:

https://floooh.github.io/visualz80remix/

 

Als je in deze emulator de machineinstructies 3E 80 C6 81 intypt (LD A,128 ; ADD 129), en de rest op 00 (NOP) zet en doorspoelt, dan kun je kijken naar het resultaat in het flag register. Deze is szyhxVnC, dus overflow en carry zijn allebei gezet. Stel je pakt LD A,128, ADD 128, dan worden naast overflow en carry, ook nog eens zero en half-carry gezet.

 

Edit: Er schiet me nog iets te binnen:

 

Je kunt natuurlijk ook helemaal all-in retro gaan en op je P2000T met Zemon dit uitvogelen. Je kunt weliswaar niet direct het flag register naar een ander register overzetten, maar wel indirect via de stack. Je zou dus na een operatie van interesse 'af' naar de stack kunnen duwen, dan eraf halen in 'bc' en vervolgens de waarde van het flag register in je accumulator stoppen waarna je ermee kunt doen wat je wilt (bijvoorbeeld wegschrijven als een string).

push af
pop bc
ld a,c

 

aangepast door Bertus
Link naar bericht
Delen op andere sites

Ik had een aantal 8 vs 32 bit problemen al opgelost. Ik hoef niet de snelste emulatie te maken, maar ik wil meer door stukken code kunnen steppen met Teletekst weergave van de P2000 schermbuffer.

Bijvoorbeeld door even in 32 bit te rekenen, bit 8 uit te lezen voor overflow, en dan bit 0-7 terug te duwen in de byte van het register.

Die Z80 chip weergave is supercool, bedankt Bertus, maar of je daar nou wijzer van wordt.... Vooral leuk voor een 90's rave als beam-materiaal achter de DJ. Als je echt zou willen, kun je in zo'n weergave wel zien hoeveel simpeler de dingen in het echt zijn dan dat wij er omheen gebreid hebben. Begint al bij de opcodetabel. Die wordt vaak 16x16 vakjes weergegeven, maar het zit allemaal een stuk logischer als je 4x8x8 pakt. Of A ziet als register 7 i.p.v. de eerste. Het is het laatste register. B is de eerste. En flags zijn gewoon nummer 6. Als je 6 en 7 vervolgens ziet als 16 bit combi, dan is het logisch dat bit 0 van flags eigenlijk gewoon bit 8 is in de berekening, en bit 15 dus bepaalt of die waarde positief of negatief is. Dus kun je bit 8 uit de 32 bit berekening als bit 0 in de register 6 stoppen. En bit 15 als sign op plek 7.

aangepast door blanka
Link naar bericht
Delen op andere sites
37 minutes ago, blanka said:

... dan is het logisch dat bit 0 van flags eigenlijk gewoon bit 8 is in de berekening, en bit 15 dus bepaalt of die waarde positief of negatief is. Dus kun je bit 8 uit de 32 bit berekening als bit 0 in de register 6 stoppen. En bit 15 als sign op plek 7.

Precies! Je kan ook gewoon bit 7 als sign nemen in principe. Om van een 8 bit signed en negatieve byte een signed negatief word (16 bit) te maken plak je er een FFh ( 11111111b ) voor, en 00h voor een positief getal. je 'propageert' dan bit 7 door die te kopieren in alle 'hogere' bits. 
uit Wikipedia ( HIER ) : "When using a complement representation, to convert a signed number to a wider format the additional bits must be filled with copies of the sign bit in order to preserve its numerical value, a process called sign extension or sign propagation.

aangepast door HAL9000
tikfout
Link naar bericht
Delen op andere sites

De P2000T was er in een aantal uitvoeringen, met als grootste verschil de hoeveelheid RAM, voor zover ik weet. Hadden die modellen verschillende moederbord-configuraties of hadden de exemplaren met minder RAM alleen minder geheugenchips?  

Link naar bericht
Delen op andere sites

Volgens mij had je of 16kB extra door een vertikaal bordje naast de uitbreidingsbus/ROM slot, of 24kB extra als je een floppybord had (tweede verdieping printplaat). Misschien was het ook 32kB met bank-omschakelen, maar dat heb ik niet getest, hij geeft 40kB aan als vrij geheugen (minus de systeemvariabelen).

Ik heb een vertikaal bordje met 64kB aan RAM, maar dat is volgens mij een gefaald probeersel van de originele eigenaar.

 

Heel iets anders, zijn er hier P2000 bezitters met een nep-leren draagtas? Ik heb die een, maar nooit elders gezien, terwijl het wel een echt op de P2000 gericht product lijkt, het ziet er niet gehobbiet uit, en past precies.

Link naar bericht
Delen op andere sites

Hi!

Ik heb de afgelopen periode wat uurtjes gestoken in het OCR-en, corrigeren en geheel van engelstalig commentaar voorzien van de assembly code van de @JWS - DOS listing uit het MiniWare document.

Omdat dit blijkbaar niet de laatste versie van JWS-DOS was heb ik daarna de door @cancom hier geplaatste binary file van versie 5.0 van JWS Dos onder handen genomen en ook daarvan een volledig gedocumenteerde disassembly gemaakt.

Ik ben beide files nu aan het doorlopen op de laatste (spel)foutjes en wil ze deze week hier delen en ook toevoegen aan de P2000 Github.

 

Link naar bericht
Delen op andere sites

Hello everybody! I am sorry to post in English, but I am from Austria and can't write in Dutch.
My interest in computers started in school 35 years ago. Since 25 years I am collecting and repairing historic computers. My collection also includes a number of Philips P2000 (several P2000T, one P2000M and two P2000C). All of them are working and I have some software as well. However, I don't have a CPM cartridge for the P2000T and would be interested to get a "Homebrew cartridge module" as developed/offered by @Bertus here some time ago. Is there still a possibility to get such a module?

Link naar bericht
Delen op andere sites

I am sure I can help you out. 😉 Due to the "minimum of 50 posts" restriction on the forum, I cannot (yet) send any direct messages. Can you share some contact details so I can reach out to you?

 

edit:

Or contact me on Marktplaats, that is fine as well.

aangepast door Bertus
Link naar bericht
Delen op andere sites
35 minuten geleden, Bertus zei:

I am sure I can help you out. 😉 Due to the "minimum of 50 posts" restriction on the forum, I cannot (yet) send any direct messages. Can you share some contact details so I can reach out to you?

 

edit:

Or contact me on Marktplaats, that is fine as well.

Great, I just sent a message on Marktplaats.

Link naar bericht
Delen op andere sites
On 8/20/2023 at 11:41 PM, HAL9000 said:

Hi!

Ik heb de afgelopen periode wat uurtjes gestoken in het OCR-en, corrigeren en geheel van engelstalig commentaar voorzien van de assembly code van de @JWS - DOS listing uit het MiniWare document.

Omdat dit blijkbaar niet de laatste versie van JWS-DOS was heb ik daarna de door @cancom hier geplaatste binary file van versie 5.0 van JWS Dos onder handen genomen en ook daarvan een volledig gedocumenteerde disassembly gemaakt.

Ik ben beide files nu aan het doorlopen op de laatste (spel)foutjes en wil ze deze week hier delen en ook toevoegen aan de P2000 Github.

 

De disassemblies staan op GitHub Let op: jwsdos1.0.asm assembleert NIET met z80asm. De syntax van het origineel komt niet overeen met die van z80asm. Die disassembly is dan ook meer als conservering bedoeld! Ik had ook geen binary om mee te vergelijken. 🙂


jwsdos5.0.asm assembleert, met z80asm, tot een binary die identiek is aan de ook in de repo opgenomen (originele) JWS.bin.

versie 5.0 bevat inderdaad heel veel meer functionaliteit zoals laden en saven van (string) arrays, integratie met BASIC en ram-disk support.

 

 

 

 

Link naar bericht
Delen op andere sites

De commit historie van MAME suggereert dat de P2000T emulator geport is vanuit MESS (ergens in 2012):

https://github.com/mamedev/mame/blob/7285b359d259b2ae0fdf85096571c386ec8c991a/src/mess/drivers/p2000t.c

 

Verder doorgraven in de MESS-svn laat zien dat de eerste commit van de P2000T broncode door de maintainer van MESS is geplaatst (ergens in 2007):

https://github.com/mamedev/mess-svn/blob/50516e2f0095095fc28f569c0db3176012579447/src/mess/drivers/p2000t.c

 

Deze forumpost doet suggereren dat de user met de nickname "The Wiz" de auteur van die code is:

https://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=33117

Ik kom met die nickname echter niet verder.

 

Dit document suggereert dat "Paul Daniels" de auteur is, maar het zou ook een maintainer of een contributor kunnen zijn:

https://github.com/mamedev/mess-svn/blob/master/docs/messnew.txt#L12208

 

Als ik de broncode van beide emulatoren vergelijk, specifiek de Z80 emulatie, dan ziet dat er wezenlijk anders uit. Zie bijvoorbeeld:

aangepast door Bertus
Link naar bericht
Delen op andere sites

De mame emulator is erg goed. Ik ben in de corona tijd begonnen functionaliteit toe te voegen. Zoals 80 karakterkaart, floppy controller en Hireskaart alsmede een aantal insteek modules. Ik loop aan tegen het (terecht) strenge review process van het mame-dev team en nog geen tijd gehad alle commentaar te verwerken. Staat nog op de planning.

 

Hier een demo van de mame in actie met mijn uitbereidingen:  (Voor wie wil kan ik de executables delen via een DM)

   

Link naar bericht
Delen op andere sites

Dat de Z80 code niet gelijk is verbaast me niet, dat is natuurlijk brede aandacht voor, en met de ZX Spectrums, Tandy's, en rekenmachines is er vast een fanatiekere groep bezig met Z80 emulatie dan een handvol P2000 fans. Je zou eerder de code eromheen die machinespecifiek is moeten vergelijken.

Link naar bericht
Delen op andere sites
5 hours ago, Bekkie said:

Ik ben in de corona tijd begonnen functionaliteit toe te voegen

 

Ik zag je commits en de pull request inderdaad al tegenkomen. Knap gedaan allemaal. Men is inderdaad heel strict qua integratie bij mame-dev. 😅

Link naar bericht
Delen op andere sites
Op 22-8-2023 om 17:01, HAL9000 zei:

De disassemblies staan op GitHub Let op: jwsdos1.0.asm assembleert NIET met z80asm. De syntax van het origineel komt niet overeen met die van z80asm. Die disassembly is dan ook meer als conservering bedoeld! Ik had ook geen binary om mee te vergelijken. 🙂


jwsdos5.0.asm assembleert, met z80asm, tot een binary die identiek is aan de ook in de repo opgenomen (originele) JWS.bin.

versie 5.0 bevat inderdaad heel veel meer functionaliteit zoals laden en saven van (string) arrays, integratie met BASIC en ram-disk support.

 

 

Betreft JWSDOS5.0.asm:

 

line 228:
    jr nz,le002h                        ; TODO: function of this?

wijzig in:
    db  32,0                            ;JWS ID

 

line 252-254:
    ret

    db  0b1h,04fh                       ; Dead code/data?

wijzig in:
    ret                                 ;if desired, change to JP to enable the display of time and date
    dw  04fb1h                          ;address of routine initializing RTC-update-interrupt
                                        ;the 2nd adaptation of BasicNL1.1 must be present
                                        ;    and of course a RTC... (MiniWare M2200-board)

 

Op 20-8-2023 om 23:41, HAL9000 zei:

Hi!

Ik heb de afgelopen periode wat uurtjes gestoken in het OCR-en, corrigeren en geheel van engelstalig commentaar voorzien van de assembly code van de @JWS - DOS listing uit het MiniWare document.

Omdat dit blijkbaar niet de laatste versie van JWS-DOS was heb ik daarna de door @cancom hier geplaatste binary file van versie 5.0 van JWS Dos onder handen genomen en ook daarvan een volledig gedocumenteerde disassembly gemaakt.

Ik ben beide files nu aan het doorlopen op de laatste (spel)foutjes en wil ze deze week hier delen en ook toevoegen aan de P2000 Github.

 

 

Die niet vragen worden overgeslagen...

Oftewel: je KAN eens informeren in een post of iemand heel toevallig een brontekst hééft van programma huppelepup.

Als je het leuk vindt die zelf uit te vogelen dan by all means, knock yourself out. Bedenk daarbij maar dat de mogelijkheid bestaat dat je -ongeveer dan- hetzelfde zit te doen als ondergetekende zo'n 20-30 jaar geleden.

Mocht je deze alsnog willen checken tegenover jouw gewrocht:

 

Miniware 1.0.bin

 

Link naar bericht
Delen op andere sites

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in


×
×
  • Nieuwe aanmaken...