-
Aantal items
107 -
Registratiedatum
-
Laatst bezocht
Inhoudstype
Profielen
Forums
Galerij
Kalender
Alles dat geplaatst werd door Bertus
-
In het HCM staat er eentje, maar dat is een beetje uit de richting vanuit Den Helder. 😅 Nog een update van mijn kant: Op het internet tref een 8-tal floppy images aan welke ik aan de repository heb toegevoegd: https://github.com/ifilot/p2000c-cpm-transfer/tree/master/diskimages. Ik heb zelf geen Greaseweazle of iets dergelijks om die images meteen naar een floppy te schrijven dus ik heb proberen uit te pluizen hoe ik die images kan uitlezen en bestanden uit die images kan extraheren. Het pakket cpmtools biedt twee nuttige programma's daarvoor: `cpmls` en `cpmcp`, echter de floppy-indeling van de P2000C wordt niet standaard door het programma herkent. Je moet daarom een toevoeging maken aan de `diskdefs` bestand. Ik heb die aanpassing aangeboden als een pull request aan de cpmtools repo, maar volgens mij is deze een beetje "stale". De auteur heeft de laatste jaren geen updates meer gemaakt. In ieder geval, met die toevoeging aan het definitiebestand kun je de .img bestanden uitlezen en overzetten. Ik ga nu kijken welke programma's op die floppies staan en deze als losse bestanden in mijn repository zetten en kort beschrijven wat ze doen. Ik ben vrijwel zeker dat er meer beschikbaar is dan die 8 images, dus als er hier nog P2000C gebruikers zijn die e.e.a. kunnen aanreiken voeg ik dat graag toe aan de repo.
-
Jazeker! Als je me een floppy meegeeft, geef ik je met plezier een kopie van het gecompileerde transfer programma. 😉 Ik heb een TYPE 2012 (aldus de sticker aan de binnenzijde van het opbergkastje).
-
Buiten twijfel is dit het forum voor de P2000T 😎, echter in de P2000T thread worden meerdere malen verwezen naar de P2000C. Nu ben ik toch wel benieuwd: wie heeft er allemaal een P2000C? 🙂 Mijn verhaal: Ik heb iets minder dan een jaar geleden een mooie P2000C mogen aanschaffen met een 8086 CoPower Board waarmee ik naast CP/M 2.2 ook MS-DOS 2.11 kan draaien. Er zaten geen floppies bij de P2000C, maar via het HCM heb ik een serie floppies aangeschaft met o.a. een CP/M bootdisk en de CoPower Board bootdisks. Ook was er een floppy met allerlei spelletjes met o.a. een zeer fraaie grafische versie van schaken. Via Ebay wordt er nog een vijftal floppies aangeboden welke ik had gekocht, echter deze bleken allen om onbekende reden niet te werken op mijn machine. De verkoper was zeer behulpzaam om het probleem op te lossen en had nog een vijftal floppies voor mij gekopieerd, maar deze deden het ook allemaal niet. Floppies die ik op de P2000C in het HCM kopieer werken wel op mijn machine, dus ik heb vooralsnog geen idee wat er mis is gegaan. Uiteindelijk kon ik van de 10 floppies die ik had gekregen er 8 formatteren en daarna goed gebruiken, dus was de aankoop voor mij toch nog ergens geslaagd. Met de set aan floppies van het HCM die ik had vond ik het software-aanbod een beetje karig en wetende dat er heel veel is geschreven voor CP/M vroeg ik me af of je eenvoudig bestanden kunt kopiëren vanaf een moderne computer naar de Philips P2000C. Geïnspireerd door het tooltje dat @dionoid heeft gemaakt voor de P2000T, heb ik iets vergelijkbaars gemaakt om bestanden over te zetten via de seriële poort voor de P2000C. Je kunt redelijk eenvoudig tekstbestanden (dus simpele tekstbestanden zonder 'speciale tekens') overzetten met het PIP commando, maar voor niet-tekst bestanden zoals machinetaalbestanden werkt dat niet. Ik heb daarom een transfer programma geschreven in 8080 machinetaal welke bestanden kan ontvangen over de seriële poort en dan wegschrijven naar de floppy. Het werkt door eerst de broncode van het transfer programma over te zetten met PIP, vervolgens dat te compileren met ASM en LOAD en dan te draaien. Het transfer programma ontvangt de bestanden per blok van 128 byte en schrijft dat weg, een beetje vergelijkbaar met hoe dat via het XMODEM protocol gaat. Als toets of alles goed werkt heb ik de twee bestanden van het adventure spel ZORK gekopieerd en nu draait ZORK op mijn P2000C (zie screenshot). Voor de P2000C (of CP/M) afficionados hier: wat zijn de echte must-have spellen of programma's om te hebben? 🙂 PS. Voor diegene die het zich afvragen: waarom heb ik het geschreven in 8080 machinetaal en niet in Z80, de P2000C heeft immers een Zilog Z80 erin zitten. De reden is dat ASM.COM in CPM80 de Zilog mnemonics niet kent; het programma kent alleen de 8080 mnemonics. Nu zijn er wel assemblers voor Z80, zoals M80 van Microsoft, maar die zitten meestal niet gebundeld op de CP/M boot disks.
-
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
-
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)
-
Dat klinkt heel interessant. Houdt ons op de hoogte! 🙂
-
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?
-
Je bedoelt dan dat je in de M2000 emulator de BASIC code typt en dan laat wegschrijven als een CAS bestandje?
-
Dat werkt handig! Super & Dank! 🙂
-
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.
-
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.
-
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.
-
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
-
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'.
-
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. 👍
-
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.
-
Ik ben niet de beheerder van het archief, maar ik zie ze graag in het archief verschijnen! Dank voor het noeste scanwerk! 🙂
-
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?
-
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.
-
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!
-
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
-
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...
-
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.
-
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?
-
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.