Ga naar inhoud

Bertus

Users
  • Aantal items

    104
  • Registratiedatum

  • Laatst bezocht

Alles dat geplaatst werd door Bertus

  1. Bertus

    Philips P2000T

    Voor wie het nog niet gezien heeft: RetroGameCouch heeft een video gemaakt over de P2000T, inclusief een review van een aantal goede spelletjes. Veel kijkplezier! https://www.youtube.com/watch?v=OKvVlIvrEu0
  2. Ik denk dat we hetzelfde idee hebben gehad. Ik heb een adapterplaatje ontwikkeld waarmee ik ze bevestig. Je kunt de STL hier vinden: https://github.com/ifilot/p2000t-power-button-fix Er is ook een versie 2 van dat plaatje gebaseerd op feedback van @blanka (iets steviger en voor andere schroefjes)
  3. Bertus

    Philips P2000T

    Dat klinkt heel interessant. Houdt ons op de hoogte! πŸ™‚
  4. Bertus

    Philips P2000T

    Kun je uitleggen hoe dat dan werkt? Als ik iets schrijf in een code editor, dan wordt dat opgeslagen als platte tekst. Basic bestanden zijn echter tokenized, dus ergens moet dat dan omgezet worden. Vervolgens hebben CAS bestanden weer een stukje metadata, dus als het ware nog een extra vertaalslag. Hoe wordt dan het ene in het andere omgezet? Of heeft de emulator een optie om een tekstbestand in te lezen en dat dan verbatim over te nemen alsof het vanaf het toetsenbord ingevoerd is?
  5. Bertus

    Philips P2000T

    Je bedoelt dan dat je in de M2000 emulator de BASIC code typt en dan laat wegschrijven als een CAS bestandje?
  6. Bertus

    Philips P2000T

    Dat werkt handig! Super & Dank! πŸ™‚
  7. Bertus

    Philips P2000T

    Korte vraag voor de community hier: bestaat er een programma / tooltje om een CAS file die een BASIC programma bevat terug om te zetten in de originele listing als een plat tekstbestandje? Ik meen me te herinneren dat dit onderwerp een keer eerder besproken was op dit forum, maar ik kan het niet zo snel vinden.
  8. Bertus

    Philips P2000T

    Ik heb weer een update over de SD-card cartridge. Nu ik vakantie heb, heb ik eindelijk de tijd gevonden om me te verdiepen hoe je bestanden weg kunt schrijven naar SD-kaartjes en dit in elkaar gezet zodat de P2000T niet alleen vanaf een SD-kaartje (CAS) bestanden kan inlezen en afdraaien, maar nu dus ook naar het SD-kaartje kan schrijven. Hiermee is het nu mogelijk om cassettebandjes uit te lezen en de CAS bestanden op het SD-kaartje weg te schrijven. Dit proces kon natuurlijk al via de datacartridge die ik had gemaakt, maar dat was minder ideaal en wat bewerkelijker. Uiteraard kun je niet alles hebben. Vanwege de beperkte programmeerruimte (technisch verhaal, maar deze is slechts 12.5 kb) kon ik niet alles kwijt in de launcher applicatie die gebruikt wordt om CAS bestanden vanaf het SD-kaartje in te lezen en op te starten. Ik heb daarom een kleine aanpassing aan de launcher gemaakt waardoor deze een nieuw soort machinebestand (een PRG bestand) kan inladen in de geheugenruimte tussen 0xA000-0xDCFF. Hoe het dus werkt is dat je de P2000T opstart naar de launcher en vanaf de launcher dit nieuwe programma inlaadt en opstart. Dit programma, Cassette Dump genoemd, kan cassettebandjes uitlezen en schrijft de data weg naar de SD-kaart. Dit kan in manuele modus waarbij je per bestand aan moet geven of je het weg wilt schrijven, maar ook in automatische modus waarbij een hele zijde van een bandje wordt uitgelezen en alle bestanden overgekopieerd worden. Voor dit programma heb je dus wel minimaal een 16KiB geheugenuitbreiding nodig. Wat ik zelf heel mooi vind is wanneer je de M2000 emulator van @dionoid op je PC hebt geinstalleerd en je het SD-kaartje uit de P2000T haalt en in je computer stopt, je dan meteen de CAS bestanden die je hebt weggeschreven kunt inladen in de emulator door erop te dubbelklikken. Zo weet je meteen of alles goed gelukt is. Je kunt overigens ook het weggeschreven bestandje opstarten vanuit de launcher. Voor diegene onder jullie die al reeds een SD-kaart cartridge hebben: jullie kunnen het programma downloaden vanaf de Github pagina. Als je daar toch bent raad ik ook meteen aan om de laatste versie van de firmware (launcher) te downloaden en de SD-kaart cartridge te flashen. πŸ˜‰ Een beknopte handleiding hoe je cassettes uitleest en de inhoud kopieert staat hier.
  9. Bertus

    Philips P2000T

    De suggestie van @blanka is een hele goede om mee te beginnen. Mijn ervaring met Call Service is tot op heden altijd een doorgebrande zekering geweest. Je treft ze aan op het voedingsbordje. Wat betreft je andere vraag: de gedeassembleerde monitor rom code tref je hier aan: https://github.com/p2000t/documentation/tree/main/programming/Monitor Documented Disassembly.
  10. Excuus voor het necroposting, maar ik heb - aan jullie om te oordelen- een mooie aanvulling hier. De standaard en aanvullende icoonset voor Quick Menu icoonset bieden redelijk wat keus, maar ik had de behoefte om deze verder aan te vullen. Je kunt in Quick Menu je eigen icoontjes maken met de editor, maar dat blijft noest handwerk. Ik wilde iets meer flexibiliteit. Vaak kun je een screenshot van een DOS programma nemen (CTRL+F5 in DosBox) en met Photoshop (of ander programma) hier een icoon uit smeden. Photoshop heeft echter geen ondersteuning voor het ICC icoonformaat dat Quick Menu gebruikt en daarom heb ik een Python script geschreven dat een 32x32 PNG bestand omzet in een ICC bestand welke je kunt importeren in Quick Menu. Het Python programma probeert hierin een goede downconversie van 24 bits-per-pixel naar 4 bits-per-pixel (EGA kleurenschema) te bewerkstelligen. Die downconversie is niet perfect (vanwege de beperkte kleurenruimte in het EGA kleurenpalet is er vaak een voorkeur voor grijs), maar het biedt een goede start om in de Quick Menu editor het ontwerp verder te verfijnen. Bronbestanden en documentatie zijn te vinden in deze Github repository: https://github.com/ifilot/quickmenu-icon-creator
  11. Bertus

    Philips P2000T

    Er is al genoeg desinformatie in de wereld, dus dank (wederom) voor je kritische blik. Ik heb e.e.a. aangepast op mijn pagina's. Je weet er duidelijk meer van: Wat zijn de redenen daarvoor? Heel fijn om dit te weten. Voor de huidige revisie van de SD-interface komt deze informatie helaas wat te laat, maar voor een volgende versie zal ik alles migreren naar I/O poort $40-$4F om de mutuele incompatibiliteit te vermijden. Voor nu voorzie ik alles van een 'waarschuwingssticker'.
  12. Bertus

    Philips P2000T

    Ik snap die suggestie, alleen die informatie staat niet in de directory entries maar in de .CAS bestanden zelf. Dus dan moet je voor elk bestand dat je aantreft in de directory het bestand gaan openen en de cassette header gaan uitlezen. Dat zal het uitlezen van een directory gaan vertragen, maar wellicht dat dat geen probleem is. Ik ga kijken wat er te winnen valt hier. πŸ‘
  13. Bertus

    Philips P2000T

    Ik heb nog een klein nieuwtje: het is me gelukt om een cartridge in elkaar te zetten waarmee je een SD-kaartje kunt uitlezen om zo .CAS bestanden vanuit de SD-kaart op te starten. Voor een beetje snelle data-overdracht heb ik een parallel <-> serieel circuitje gebouwd dat draait met een 16 MHz klokje zodat je tijdens elke instructie van de Z80 een byte kunt uitlezen vanaf de SD-kaart. Het alternatief was om het SPI signaal te bit-bangen, maar dat zou dan 8x langzamer zijn. Niet alle SD-kaartjes werken, alleen SD-kaartjes van het type SDHC en geformatteerd met een FAT32 bestandsssysteem. Ik heb tot nu toe 4Gb, 8Gb en 16Gb kaartjes geprobeerd en deze deden het allemaal. Nu is overigens 1Gb al meer dan genoeg om het hele archief aan CAS bestanden op te slaan. Op de cartridge zit een 128kb ROM en 128kb RAM chip. Op de ROM chip staat een launcher applicatie welke vanuit een aangepaste BASICNL cartridge opgestart wordt. Met deze launcher kun je navigeren op de SD-kaart en .CAS bestanden opstarten. De RAM chip wordt gebruikt om tijdelijk de .CAS bestanden op te slaan alvorens deze op de juiste positie in het RAM geheugen van de P2000T gezet worden. Het complete schema staat hier: port2-sdcard-interface.pdf Door het aantal chips ben ik overgestapt van DIP (THT) naar SMD zodat alles past. Ook had ik een 4-laags PCB nodig om alles te kunnen routen. Hieronder een plaatje van de (achterzijde) van de PCB met alle componenten erop. De SD-kaart lezer is een bekend prototype bordje wat een fijn 'bruggetje' vormt tussen het 5V domein van de P2000T en het 3.3V domein van de SD-kaart. Voor een indruk hoe de SD-kaart cartridge werkt heb ik hieronder nog een kleine demo (screen capture). De launcher werkt met 3 simpele commando's: cd, ls en run. Met ls ls lees je een folder uit om zo alle bestanden te laten zien. Met cd verander je van folder en met run kun je een .CAS bestand opstarten. Voor de bronbestanden zie deze Github pagina en voor de documentatie deze website.
  14. Bertus

    Philips P2000T

    Ik ben niet de beheerder van het archief, maar ik zie ze graag in het archief verschijnen! Dank voor het noeste scanwerk! πŸ™‚
  15. Bertus

    Philips P2000T

    Kan er iets van een overzichtje gemaakt worden. Ik ben ook wel nieuwsgierig. Is het een idee dat we een tabelletje bouwen met daarin chassisnummer en bijvoorbeeld een MD5 of CRC16 checksum van de ROMs?
  16. Bertus

    Philips P2000T

    Ja, klopt helemaal, maar dan met de kanttekening dat alleen de laagste byte van de adresbus gebruikt wordt. Je bestuurt dit met de IN en OUT instructies. Op blz 10 van deze Z80 datasheet tref je het tijdschema aan. Je kunt dan met een combinatie van de adresbus en de ~RD en ~WR signalen e.e.a. aansturen. Op deze manier wordt bijvoorbeeld een register aangestuurd voor de bank switching, maar ook de floppydrives werken met die I/O poort. Ik gebruik zelf bijvoorbeeld de I/O poort voor het uitlezen van een SD kaartje.
  17. Bertus

    Philips P2000T

    Dank! Phase-encoding dus. Dat is ergens goed nieuws want dat valt makkelijker in software te converteren naar binair. Herkenbaar. πŸ˜…πŸ˜‚ En waarschijnlijk maak ik me er zelf onbewust ook soms schuldig aan. Dank voor je wijsheden wederom @cancom!
  18. Bertus

    Philips P2000T

    Dit ziet eruit als frequentieverschuivingsmodulatie wat veel gebruikt werd voor het opslaan van data op tapes. Je kunt dit inderdaad in software demoduleren, maar ik ben niet bekend met makkelijke "drop-and-click" programma's hiervoor. Je zou eens een kijkje kunnen nemen in deze tutorial die het demodulatieproces in stapjes beschrijft: https://mightydevices.com/index.php/2019/08/decoding-fsk-transmission-recorded-by-rtl-sdr-dongle/ De auteur heeft de Python code op Github staan: https://github.com/MightyDevices/python-fsk-decoder
  19. Bertus

    Philips P2000T

    Mijn kennis is extreem beperkt hier en dateert vanuit het MS-DOS tijdperk waarin e.e.a. al gestandardiseerd was. Deze kennis is ook erg roestig geworden... Als de floppydrive de Shugart-implementatie volgt - en ik weet niet of die al populair/breed geadopteerd was ten tijde van P2000 - dan zouden de oneven pinnen allemaal GND moeten zijn. Dit zowel op de controller als op de drive. Alle GND pinnen zijn met elkaar en met de GND op de voeding verbonden. Hiermee kun je de aansluiting van de kabel bepalen met minder pogingen dan het maximaal aantal permutaties tussen controller en drive. Dat de drive gaat draaien is een goed teken; kijk eens of PIN16 dan laag gaat wanneer die draait. Op PIN8 (index) hoor je een 50 Hz signaal te krijgen, corresponderend met een toerental van 300 RPM. Het zijn relatief korte negatieve pulsjes. Ik vermoed dat het getik het gevolg is van de stepper motor die tegen het begin/einde aanzit. De stepper motor zoekt track 0 en wanneer deze gevonden wordt dan wordt PIN26 laag (active low). Als de sensor niet goed werkt of het signaal niet goed overgebracht wordt, dan blijft de stepper motor gewoon doorstappen. Soms is die sensor vuil. Je kunt de sensor schoonmaken, maar wees dan voorzichtig dat de sensor niet van locatie veranderd. Ik denk dat je deze twee zaken apart van elkaar moet debuggen. Je weet vooralsnog niet of de drive of de controller goed werken (of beiden niet). Je zou de signalen op de pinnen kunnen uitlezen (met een osscilloscoop) of zelf signalen (met een Arduino bijvoorbeeld) op de pinnen kunnen zetten en kijken of je goede respons krijgt. De suggestie van @cancom is ook relevant hier. Elke drive heeft een drive nummer toegedeeld gekregen (1-4) welke via jumpers op de drive zelf ingesteld moeten worden. In het MS-DOS tijdperk ging dat overigens door de drive na of voor een cable-twist (A/B twist) en zonder jumpers...
  20. Bertus

    Philips P2000T

    Eigenlijk wil ik vooral inclusief zijn naar de P2000T gebruikers die geen Nederlands spreken. πŸ˜‰ Overigens is dat nog best een grote groep ben ik achter gekomen.
  21. Bertus

    Philips P2000T

    Ik ben nu nieuwsgierig geworden. πŸ™‚ Waarom heb je in eerste instantie voor 1200 baud gekozen en wat bepaalt nu eigenlijk of hogere snelheden haalbaar en ook stabiel zijn? Zit die complexiteit bij het uitlijnen van de assembly instructies en het 'bit banging' van de seriΓ«le poort?
  22. Bertus

    Philips P2000T

    SLOT1 en 2 zijn beiden niet gebufferd, dus wanneer dat je een cartridge inserteert terwijl de machine draait is het niet onaannemelijk dat de adres-, data- of een van de andere lijnen beinvloed gaat worden wat het lopende proces verstoort. Iets wat wellicht zou kunnen werken is het volgende: Je zou met een 'halt' instructie de Z80 in de 'suspend' mode kunnen zetten waarbij deze de adres- en databussen vrij geeft. De Z80 moet je dan weer laten ontwaken middels een interrupt op commando van de gebruiker. Je kunt daar niet het toetsenbord voor gebruiken want het uitlezen van het toetsenbord werkt immers op basis van een interrupt die elke 20ms uitgevoerd wordt (deze valt uit te zetten). Je hebt in SLOT2 toegang tot de interrupt lijn, dus je zou met een druktoets en een 74HC123 voor debouncing dit signaal kunnen geven. Tijdens de interrupt routine herstel je dan de staat van het systeem (toetsenbord weer aanzetten bijv) en laat je het programma doorgaan.
  23. Bertus

    Philips P2000T

    Dit kun je wel vinden in de P2000T handleiding, maar inderdaad niet in de vorm van een tutorial of iets dergelijks. Kort samengevat heeft de P2000T een videogeheugen wat door de Mullad SAA5050 teletekst chip uitgelezen wordt om een beeld te vormen. Je hebt een beeld van 25 regels met 40 karakters per regel. De scrollregisters even buiten beschouwing gelaten begint elke regel op geheugenadres $5000 + $50 * regelnummer, waarbij ik het teken $ gebruik om hexidecimale notatie aan te geven en ik de regelnummers tel vanaf 0. Kleuren stel je in door middel van omschakelkarakters. Deze staan benoemd in de handleiding (blz 29). Je kunt via CHR printen, maar je kunt dus ook direct via POKE in het videogeheugen schrijven. Standaard wordt er 'wit op zwart' geprojecteerd, maar als je bijvoorbeeld het getal "1" wegschrijft en daarna de ASCII waarde voor een karakter op het geheugenadres dat volgt, dan krijg je een rood op zwart letter. Ter illustratie: In onderstaand voorbeeld wordt eerst het omschakelkarakter "1" weggeschreven (rode tekst) en vervolgens het getal "34", wat correspondeert met een aanhalingsteken in ASCII. Je ziet dus een zwart (leeg) blokje voor het eerste karakter op regel 23 en het aanhalingsteken als rode tekst op een zwarte achtergrond voor het tweede karakter op regel 23. Je denkt nu vast: 'wat onhandig dat ik telkens een teken moeten printen om van kleur te veranderen", maar dit is nu eenmaal hoe dat dit moet. Je hebt geen apart kleurengeheugen zoals op een NES of een C64. Ik geloof dat @blanka een serie aan boekjes had weten op te bemachtigen en kan vast wel wat nuttige tips geven. Je kunt ook eens een kijkje nemen op de P2000T repository op Github.
  24. Bertus

    Philips P2000T

    Ik heb destijds (inmiddels weer drie jaar geleden) deze twee gekocht: https://www.onlinekabelshop.nl/usb-naar-9-pins-serieel-rs-232-adapter-0-80-meter.html https://www.onlinekabelshop.nl/adapter-db25-m-db9-v.html Die werken voor mij zonder enige problemen. In de professionele omgeving gebruiken we deze kabels: https://nl.mouser.com/ProductDetail/FTDI/UT232R-200?qs=oAT38M%2F3lmGoOYMSry895Q%3D%3D Die hebben een gecertificeerde FTDI chip. Je betaalt dan wel een heel stuk meer.
  25. Bertus

    Philips P2000T

    Je moet vooral @dionoid bedanken. πŸ˜‰ Die heeft de code geschreven en het noeste werk gedaan om alles (specifiek de timing!) uit te pluizen. Om je vraag te beantwoorden: De snippet hierboven leest enkel een byte uit en zet deze in register A. Daarna retourneert deze routine. Met de byte in register A kun je zelf bepalen waar je het neer wilt zetten. Een voorbeeld hiervan tref je ook aan in de code. Hieronder nog een snippet: read_block: ld de, $400 ; 11 00 04 read_block_loop: call read_byte ; CD 00 9E ld (hl),a ; 77 inc hl ; 23 dec de ; 1B ld a,d ; 7A or e ; B3 jr nz, read_block_loop ; 20 F6 dec c ; 0D jr nz, ignore_header ; 20 E9 Het register DE fungeert als een afteller. Er worden 0x400 bytes uitgelezen en die worden weggeschreven naar het adres wat in register HL staat. Na elke iteratie incrementeert HL en decrementeert DE. Wanneer DE op 0 staat zal de lijn 'jr nz, read_block_loop' niet meer naar boven springen en continueert de code naar beneden toe. Wat je kunt doen is zelf een stukje assembly in elkaar zetten dat 0x400 bytes uitleest en wegschrijft op een vast geheugenadres wat je fijn vindt (bijvoorbeeld 0x9000 - 0x93FF). Je roept de assembly routine aan in BASIC en wanneer die klaar is kun je werken in BASIC met (bijvoorbeeld) de PEEK en POKE commando's om de data op de gewenste plek te zetten.
×
×
  • Nieuwe aanmaken...