Jump to content

Recommended Posts

  • Replies 1.2k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Op 4-1-2024 om 18:22, dionoid zei:

Gebeurt dat zomaar, of is het reproduceerbaar? Gebeurt het bijv nadat je Ctrl-1 intoetst om de inhoud van een cassette te tonen?

Dank je! En voor het cas icoontje gaat de lof naar @blanka (ook voor het P2000T icoontje trouwens)

Nieuwe .cas games of applicaties ontvang ik uiteraard graag! Ik zal de verzameling van .cas en .bin bestanden als losse zip-download bij de releases op GitHub zetten

Excuses, ik had je post even gemist. Het plaatsen van de 1-en gebeurt inderdaad nadat ik met rechtershifttoets + 1 de inhoudsopgave opvraag. In tegenstelling tot wat ik eerder zei, blijft hij dit ook doen na een reset. Slechts M2000 afsluiten en weer opnieuw opstarten stopt dit probleem.

 

Sommige programma's schijnen niet te werken op de P2000 en emulator. Ik weet nog dat sommigen een out of poke instructie nodig hadden voor het laden/runnen. Dat wordt lastig om te achterhalen...

Link to post
Share on other sites
39 minutes ago, Hawker17 said:

Sommige programma's schijnen niet te werken op de P2000 en emulator. Ik weet nog dat sommigen een out of poke instructie nodig hadden voor het laden/runnen. Dat wordt lastig om te achterhalen...

Ik merk dat sommige P2000 gebruikers zelf menu's bouwden, en dan in de code gingen rommelen om de boel werkend te krijgen. Stond er in het origineel IF... THEN END, maakt iemand dan van IF... THEN RUN" zodat ie na afsluiten weer naar het menu teruggaat. Of erger nog, met een USR functie die actief blijft tijdens de uitvoer van het programma. Als je zo'n programma losknipt dan gaat ie kuren vertonen. De meeste van deze zaken krijg ik wel gerepareerd.

Link to post
Share on other sites
1 hour ago, Hawker17 said:

Excuses, ik had je post even gemist. Het plaatsen van de 1-en gebeurt inderdaad nadat ik met rechtershifttoets + 1 de inhoudsopgave opvraag. In tegenstelling tot wat ik eerder zei, blijft hij dit ook doen na een reset. Slechts M2000 afsluiten en weer opnieuw opstarten stopt dit probleem.

Ah, ja ik kan het reproduceren; ga ik naar kijken.

Link to post
Share on other sites
3 uur geleden, blanka zei:

Ik merk dat sommige P2000 gebruikers zelf menu's bouwden, en dan in de code gingen rommelen om de boel werkend te krijgen. Stond er in het origineel IF... THEN END, maakt iemand dan van IF... THEN RUN" zodat ie na afsluiten weer naar het menu teruggaat. Of erger nog, met een USR functie die actief blijft tijdens de uitvoer van het programma. Als je zo'n programma losknipt dan gaat ie kuren vertonen. De meeste van deze zaken krijg ik wel gerepareerd.

Goed dat je daar achter bent gekomen. Ik heb bij een aantal dumps een opmerkelijk aantal "illegal function calls".

Link to post
Share on other sites

Vanavond voor het eerst de P2000T aangesloten en gekeken. Op zich gaat er veel goed, maar hij is er nog niet helemaal ;) 

Aan gaat hij prima. Ook de Philips Cassette Basic 1.1 NL lijkt te laden. cassette werkt ook (joepie!). Kan bestanden opslaan en teruglezen. Wel nog twee bijzonderheden:

 

1. De P-toets werkt helaas niet. Alle andere toetsen reageren wel. Benieuwd of ik die weer gewoon aan de praat ga krijgen. Heeft iemand nog tips? 

2. Als ik hem reset zonder cassette, dan krijg ik gewoon de basic-omgeving te zien. Als ik dan op de Cursor naar rechts toets druk, dan gaat heel even de cassette draaien. Ook gaf hij op een gegeven moment schermen vol vreemde tekens. 

 

UPDATE:

Zonet de multicardridge die ik ontvangen heb gebruikt om Maintenance 2 te draaien. Daarbij heb ik twee dingen ontdekt:

 

1. RAM Test, wanneer ik die start loopt het systeem vast met een mooi gekleurd scherm. Zie bijgevoegde filmpje. De foto geeft het eindresultaat

2. Op mijn toetsenbord zijn twee toetsen defect, de 'P' (zoals ik al wist) en de '00'

 

Denk dat deze kapotter is dan ik zelf zomaar kan repareren. Iemand een idee waar ik dit beestje nog kan laten repareren? Zou zonde zijn als hij weg zou moeten...

 

UPDATE VAN UPDATE:

Misschien valt het wel mee.. Nog eens verder gekeken en ik zie het volgende:

5000 - 57FF -> Videogeheugen -> Geen fouten

5800 - 5FFF -> Videogeheugen (bij model M, heb ik niet) -> Niet gek dat dat er niet is

6000 - 9FFF -> Systeemgeheugen -> Geen fouten

A000 - DFFF -> Extension RAM -> Geen fouten

E000 - FFFF -> Extension RAM -> Kan het zijn dat dit een andere extension RAM is die ik er niet in heb?

 

Dan hoef ik me namelijk nu als eerste vooral te focussen op de toetsen 'P' en '00'. Ook met de matrix erbij kom ik er niet helemaal uit wat de oorzaak kan zijn. Misschien dat iemand van jullie een idee heeft waar ik naar zou kunnen kijken?

 

 

IMG_5500.jpg

Edited by OuweComputeraar
Tweede update :)
Link to post
Share on other sites
  • Zou je misschien een foto kunnen maken van je RAM expansion board? Het kan zijn dat je alleen een 16kb geheugenuitbreiding hebt. Dan werkt het gedeelte A000-DFFF, maar E000-FFFF niet.
  • Wat betreft de toetsen; misschien maken deze slecht contact. Je kunt de contactoppervlakken voor deze toetsen proberen schoon te maken met een wattenstaafje en wat isopropyl alcohol.
Edited by Bertus
Link to post
Share on other sites
1 uur geleden, Bertus zei:
  • Zou je misschien een foto kunnen maken van je RAM expansion board? Het kan zijn dat je alleen een 16kb geheugenuitbreiding hebt. Dan werkt het gedeelte A000-DFFF, maar E000-FFFF niet.
  • Wat betreft de toetsen; misschien maken deze slecht contact. Je kunt de contactoppervlakken voor deze toetsen proberen schoon te maken met een wattenstaafje en wat isopropyl alcohol.

Heb hem nog niet open geschroefd. Zal dat vanavond eens doen. Het apparaat geeft aan dat ik 31510 kb vrij (geloof ik uit mijn hoofd). Dus standaard met 16kb uitbreiding klinkt logisch.

Link to post
Share on other sites

BASIC geeft dat inderdaad netjes aan, maar het getal is dan gebaseerd op een relatief simpele test. Uiteindelijk wil je controleren of je inderdaad maar 16kb expansie hebt, of dat je wellicht meer hebt, maar dat er een defectje op het expansiebord zit. Een 16kb is echter heel gebruikelijk, dus ik vermoed dat alles wat dat betreft in orde is.

Link to post
Share on other sites

Hoe lees of schrijf ik in basic een byte van of naar de RS-232 poort? Met INP($H20) lijkt het maar alsof je een enkele bit binnenhengelt. Gekke is, de poorten voor communicatie lopen van &H20-&H2F, dat zijn dan 16 bits.

Link to post
Share on other sites

Ik heb nooit met de RS-232 poort gewerkt, maar ik zal een poging wagen om (hopelijk) wat nuttigs erover te zeggen om je in de zoektocht te helpen. Ik hoop dat wat andere forumgenoten kunnen inspringen.

 

Het script van @dionoid lijkt mij een goede start: https://github.com/p2000t/software/blob/master/utilities/pc2p2000t/pc2p2000t.z80.asm

 

In dat script zie je een routine "read_byte" die een byte uitleest vanuit de RS-232 poort middels I/O poort 0x20. Het is een seri√ęle poort, dus je ontvangt inderdaad maar 1 bit tegelijk (anders was het een parallelle poort). Wat dit script doet is telkens een bit uitlezen naar register A, dan een shift right van die bit naar de carry om vervolgens die bit vanuit links te laten inspringen in register C. De code plaatst ook delays; iets om rekening mee te houden bij een port naar BASIC.

 

; reads a byte from the serial port (9600 baud) and returns in A
read_byte:
    push bc                 ; C5 [11]
check_start_bit:
    in a,($20)              ; DB 20 [11]
    and $01                 ; E6 01 [7] - check if bit D0 is 0
    jr nz, check_start_bit  ; 20 FA [7] 
    ld b, $15               ; 06 15 [7]
delay_on_start_bit:
    djnz delay_on_start_bit ; 10 FE [13/8]
    ld b, $08               ; 06 08 [7] - call read_next_bit 8 times (for 8 bits)

read_next_bit:
    in a,($20)              ; DB 20 [11]

    ; 58 clocks without extra delay
    ; 1.2 * 1041.67 = 1250. Need delay in B: 
    ; 2400 baud: (1250 - 58) / 13 = 91,7 + 1 = 93 (&h5D)

    ; 4800 baud: 1.2 * 520.84 = 625
    ; delay in B: (625 - 58) / 13 = 43,62 + 1 = 45 (&h2D)

    ; 9600 baud: 1.2 * 260.42 = 312.5
    ; delay in B: (312.5 - 58) / 13 = 19.6 + 1 = 21 (&h15)

    rra                     ; 1F [4] - bit 0 into carry
    rr c                    ; CB 19 [8]
    push bc                 ; C5 [11]
    ld b, $10               ; 06 10 [7]
delay_bit:
    djnz delay_bit          ; 10 FE [13/8]
    pop bc                  ; C1 [10]
    djnz read_next_bit      ; 10 F3 [13]

    ; 72 clocks without extra delay. So delay in B: 
    ; 2400 baud: (1041.67 - 72) / 13 = 74.6 + 1 = 76 (&h4C)
    ; 4800 baud: (520.84 - 72) / 13 = 34.53 + 1 = 35 (&h23)
    ; 9600 baud: (260.42 - 72) / 13 = 14.49 + 1 = 16 (&h10)

    ld a,c                  ; 79 [4]
    pop bc                  ; C1 [10]
    ret                     ; C9 [10]

 

Alternatief is natuurlijk dat je je eigen machinecode schrijft dat een vaste payload wegschrijft naar het RAM geheugen en routine in BASIC insluit.

Link to post
Share on other sites
14 hours ago, blanka said:

Hoe lees of schrijf ik in basic een byte van of naar de RS-232 poort? Met INP($H20) lijkt het maar alsof je een enkele bit binnenhengelt. Gekke is, de poorten voor communicatie lopen van &H20-&H2F, dat zijn dan 16 bits.

 

Direct vanuit Basic lukt dat niet, omdat Basic niet snel/precies genoeg is voor RS-232 communicatie, waarbij timing heel belangrijk is. Voor pc2p200t heb ik echt per machinetaal instructie de cycles moeten tellen en specifieke delays gebruikt om de timing geschikt te krijgen voor 9600 baud. Dat was echt een rot klus :)

RS-232 is trouwens geen poort, maar een serieel¬†communicatie protocol, waarvoor in de P2000T helaas geen handige Monitor-routines zijn. Op de P2000T gaat seri√ęle communicatie inderdaad per enkele bit op poorten $10 (output via bit D7) en $20 (input via bit D0), waarbij $10-$1F en $20-$2F allemaal wijzen naar dezelfde poort.¬†

 

Ik ben momenteel bezig met een aangepaste versie van pc2p200t, die een (enkel) .cas programma via RS232 vanaf een PC inleest, dan direct wegschrijft naar cassette onder de juiste naam (die in de .cas header staat) en daarna wacht op een volgend programma dat via RS232 verstuurd wordt. Naast BAS gaat dit ook werken voor INT, SNG, DBL en FAM bestanden.

Edited by dionoid
Link to post
Share on other sites

Dank @Bertus. Ik ben apparaten gewend die de seriele communicatie enigszins voorbewerken zodat er een byte-stroom binnenkomt en de hele omzetting met pariteitsbits e.d. op de achtergrond gebeurt. Ik ga er eens mee prutsen. Ik neem wel aan dat er ook nog een stukje is dat wacht tot het begin. En waar zit de plek waar het in het geheugen komt in de code?

Edited by blanka
Link to post
Share on other sites

Even iets heel anders. Ik heb twee P2000's met een floppy interface. Kan je daar een floppydrive aan knopen. En dan niet het 13kg zware blikken bakbeest van Philips dat erbij hoorde, maar gewoon een simpel gevalletje uit de bak bij de kringloop? Iemand daar ervaring mee?

Link to post
Share on other sites
2 hours ago, blanka said:

Dank @Bertus. Ik ben apparaten gewend die de seriele communicatie enigszins voorbewerken zodat er een byte-stroom binnenkomt en de hele omzetting met pariteitsbits e.d. op de achtergrond gebeurt. Ik ga er eens mee prutsen. Ik neem wel aan dat er ook nog een stukje is dat wacht tot het begin. En waar zit de plek waar het in het geheugen komt in de code?

 

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.

Link to post
Share on other sites

Hi, ik heb een nieuwe versie van pc2p2000 gemaakt die een extra "ontvang-bewaar" modus heeft en te activeren is m.b.v. ?USR2(0) i.p.v. ?USR1(0). Hierbij kun je vanaf de PC iedere keer een los .cas programma naar de P2000T sturen, die dan direct na ontvangst op cassette wordt bewaard, waarna de P2000T dan weer gaat wachten op het volgende .cas bestand. Hiermee kun je dus een hele reeks .cas bestanden in één keer naar cassette wegschrijven.

 

Zorg er hierbij wel voor dat:

  • De cassette waarnaar¬†je wilt schrijven leeg is
  • De eerste letter¬†van iedere bestandsnaam¬†(zoals te vinden in de .cas header) uniek is
  • De PC na het verzenden van ieder¬†.cas bestand een tijdje wacht (afhankelijk van de grootte van het bestand) voordat het volgende .cas bestand weer wordt verzonden. Op die manier krijgt de P2000T genoeg tijd om het ontvangen bestand op cassette te bewaren voordat het klaar is voor het volgende bestand. Hoeveel seconden je na het versturen moet wachten, hangt af van het aantal blokken van het verzonden bestand, maar ik denk dat je met 3 seconden wachttijd per blok wel veilig zit.
    Vraag: weet iemand toevallig hoe lang het opslaan van 1 blok op cassette precies duurt?

 

Het aantal gewijzigde Basic regels t.o.v. de vorige versie is minimaal en staat keurig beschreven in de header van pc2p2000t.bas:

https://github.com/p2000t/software/blob/master/utilities/pc2p2000t/pc2p2000t.bas

 

De readme van de pc2p2000 utility is te vinden op https://github.com/p2000t/software/blob/master/utilities/pc2p2000t/README.MD

 

Edited by dionoid
Link to post
Share on other sites

Ik heb de klassieke P2000T kleurplaat even heruitgebracht. Mocht je kinderen willen warm draaien als Teletekst artiest, of zelf zin hebben in ontwerpen op papier:

http://retrospace.nl/downloads/P2000T_grafische_onderlegger.pdf

Ik heb de hex-locaties toegevoegd en de hokjes in de juiste verhouding gemaakt, de middelste rij is dikker. Voor diegene die het origineel niet kennen:

https://github.com/p2000t/documentation/blob/master/P2000gg/p2000ggnieuwsbrief1-7.pdf

Ga naar pagina 22 (of 23 in je PDF viewer)

Edited by blanka
Link to post
Share on other sites
2 hours ago, Hawker17 said:

Kun je nog gegevens terughalen van een cassette die je (per ongeluk) gewist hebt? Met CASSETTE WISSEN haalt hij mijns inziens slechts een heel klein gedeelte weg van het begin.

Mijn ervaring is dat het blok waar de EOT marker komt beschadigt, maar de blokken daarna blijven leesbaar. Cassettehulpprogramma kan dat.

Link to post
Share on other sites
On 5/29/2023 at 5:59 AM, blanka said:

En voor de RS 232 USB adapters, ik wil de P2000 aan de Mac hangen, is het dan de moeite om voor de duurdere FTDI variant te gaan (bij Arduino krijg ik ook altijd buikpijn van CH340 borden), of kan ik net zo goed el-cheopo-chinese-clono kopen?

Op Windows 11 heb ik heb zoveel gezeur met mijn (waarschijnlijk fake) CH340, dus ik ga toch maar eens kijken naar een kabel met een FTDI chipset. Kan iemand wellicht een goede aanraden?

Link to post
Share on other sites

Ik heb destijds (inmiddels weer drie jaar geleden) deze twee gekocht:

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.

 

 

 

Link to post
Share on other sites

@dionoid Ik gebruik nu deze, die voldoet prima:

https://www.onlinekabelshop.nl/usb-a-m-naar-9-pins-sub-d-25-pins-sub-d-m-seriele.html

Ik moet daar wel bij vermelden dat ik m op mijn Macbook draai, niet onder Windows. Maar daar heb ik ook mijn dump/ontvang tool op draaien (die zijn overigens platform onafhankelijk)

Edited by blanka
Link to post
Share on other sites

Ik heb het helemaal gehad met die goedkope adapters met CH340 chipset. Waarschijnlijk heb ik een fake CH340 chip, waarmee de Windows drivers niet¬†stabiel werken - verzenden gaat maar 1 keer goed en daarna moet ik Windows rebooten om het weer werkend te krijgen. Ik heb zojuist een kabel met (hopelijk echte) FTDI chip besteld voor ‚ā¨12 by Amazon,¬†dus ik ben benieuwd of ik daarmee betere resultaten krijg.

Edited by dionoid
Link to post
Share on other sites

 

!! OPROEP VOOR .CAS BESTANDEN !!

 

Een paar jaar geleden heb ik de "P2000T Software Preservation" repository op Github aangemaakt met als doel om zoveel mogelijk P2000T software (zowel op cassette als cartridge) te verzamelen voordat het verloren gaat. Dus mocht je dumps hebben gemaakt van je cassettes, schroom dan niet om ze aan mij te sturen, zodat ik ze op Github kan zetten.

 

Want zoals ze in de US zeggen: "Sharing is Caring" (braak)

 

Wil je weten hoe je dumps van je P2000T cassettes maakt? Lees dit: https://github.com/p2000t/software/tree/master/utilities/tapeconv

 

!! EINDE OPROEP  !!

 

Edited by dionoid
Link to post
Share on other sites
2 uur geleden, dionoid zei:

Ik heb het helemaal gehad met die goedkope adapters met CH340 chipset. Waarschijnlijk heb ik een fake CH340 chip, waarmee de Windows drivers niet¬†stabiel werken - verzenden gaat maar 1 keer goed en daarna moet ik Windows rebooten om het weer werkend te krijgen. Ik heb zojuist een kabel met (hopelijk echte) FTDI chip besteld voor ‚ā¨12 by Amazon,¬†dus ik ben benieuwd of ik daarmee betere resultaten krijg.

Herkenbaar. Je kan naar het oudste stuurprogramma gaan d.m.v. stuurprogramma bijwerken bij poorten. Dat werkt nu al een hele tijd goed.

Link to post
Share on other sites
1 hour ago, Hawker17 said:

Herkenbaar. Je kan naar het oudste stuurprogramma gaan d.m.v. stuurprogramma bijwerken bij poorten. Dat werkt nu al een hele tijd goed.

Ja, dat heb ik geprobeerd, maar geen van de oude CH340 drivers kreeg ik meer stabiel aan de praat. 

Uiteindelijk heb ik deze FTDI adapter kabel gekocht op Amazon, die op Windows 11 inderdaad werkt zonder extra drivers te hoeven installeren.

Link to post
Share on other sites

Wat zou het kunnen zijn als een P2000 na pak m beet 3 minuten spontaan reset? Ook bij 0 activiteit.

Ik had het ook bij het spelen van Fraxxon. Dat gaat goed, maar na het invullen van de highscore terug bij de letters van het startscherm zijn er eerst een paar kleine "glitches", stukje r magenta i.p.v. geel, gaatje in F. Daarna ineens scherm volledig zwart met uitzondering van bovenste regel met in rood de highscore en een coninue piep. En dan een minuut later een reboot.

 

Iets anders vreemds: ik heb 2 P2000s met 80 karakterkaart, en die zijn anders. De ene heeft 2 potmeters. Als je daaraan draait dan zie je bij een potmeter geen verandering, en bij de andere lijkt er een soort grenswaarde die in 80-karaktermode de cursor aan/uit zet. Draai je de cursor uit, en ga je terug naar 40 karakters dan is ie er wel weer. Iemand een idee waar die potmeters voor zijn?

Edited by blanka
Link to post
Share on other sites
3 hours ago, blanka said:

Wat zou het kunnen zijn als een P2000 na pak m beet 3 minuten spontaan reset? Ook bij 0 activiteit.

Ik had het ook bij het spelen van Fraxxon. Dat gaat goed, maar na het invullen van de highscore terug bij de letters van het startscherm zijn er eerst een paar kleine "glitches", stukje r magenta i.p.v. geel, gaatje in F. Daarna ineens scherm volledig zwart met uitzondering van bovenste regel met in rood de highscore en een coninue piep. En dan een minuut later een reboot.

Het zou een probleem met de voeding kunnen zijn, die net te weinig stroom geeft aan het moederbord, waardoor je vreemde effecten krijgt. Als je een goed werkende P2000 hebt, dan zou je die ernaast kunnen zetten en dan de kabels vanaf het voedings-bord kunnen verleggen naar de de andere voeding. (ik denk maar even hardop)

Edited by dionoid
Link to post
Share on other sites

Voor degenen zoals @blanka die een ongesplitst .cas bestand (bijv. ErrorSoft.cas) in één keer willen terugzetten naar een echte P2000T cassette, heb ik nu een Python tooltje gemaakt die daarmee helpt. Wel heb je hiervoor de nieuwe 0.3 versie van Pc2P2000T nodig, die een "ontvang-bewaar" modus heeft.

 

Alles staat beschreven in de README: https://github.com/p2000t/software/tree/master/utilities/pc2p2000t#ontvang-bewaar-modus

 

Mocht je al een oudere versie van Pc2P2000T hebben en je hebt geen zin om de nieuwe versie over te tikken, dan kun je hier de .cas van de nieuwste Pc2P000T downloaden en naar je P2000T overzetten m.b.v. de oudere versie.

 

Edited by dionoid
Link to post
Share on other sites
7 hours ago, dionoid said:

Voor degenen zoals @blanka die een ongesplitst .cas bestand (bijv. ErrorSoft.cas) in één keer willen terugzetten naar een echte P2000T cassette, heb ik nu een Python tooltje gemaakt die daarmee helpt. Wel heb je hiervoor de nieuwe 0.3 versie van Pc2P2000T nodig, die een "ontvang-bewaar" modus heeft.

 

Alles staat beschreven in de README: https://github.com/p2000t/software/tree/master/utilities/pc2p2000t#ontvang-bewaar-modus

 

Mocht je al een oudere versie van Pc2P2000T hebben en je hebt geen zin om de nieuwe versie over te tikken, dan kun je hier de .cas van de nieuwste Pc2P000T downloaden en naar je P2000T overzetten m.b.v. de oudere versie.

 

Doet ie het ook met pure .p2000t files? Ik heb alle .cas de deur uit gedaan en ik dump ook de laatste maanden niks meer als .cas, moet ook veel repareren met Cassettehulp (ook 32 byte headers) en dan is het fijn als alles de werkelijke structuur volgt. En het scheelt 2 minuten op een bandje, toch handig met 100 stuks...

Edited by blanka
Link to post
Share on other sites
8 hours ago, blanka said:

Doet ie het ook met pure .p2000t files? Ik heb alle .cas de deur uit gedaan en ik dump ook de laatste maanden niks meer als .cas, moet ook veel repareren met Cassettehulp (ook 32 byte headers) en dan is het fijn als alles de werkelijke structuur volgt. En het scheelt 2 minuten op een bandje, toch handig met 100 stuks...

 

De send_p2000t_cas.py utility is nu aangepast zodat ook .p2000t files worden ondersteund. 

 

Voor degenen die geen idee hebben wat .p2000t files zijn: het zijn P2000T cassette dump bestanden die zijn opgedeeld in blokken van 1056 bytes (32 bytes header + 1024 bytes data), wat in lijn is met hoe de data records op cassette zijn opgeslagen.

Dit in tegenstelling tot .cas dump bestanden, die blokken gebruiken van 1280 bytes (256 bytes header + 1024 bytes data), waarbij de header 224 onnodige bytes bevat.

 

De M2000 emulator ondersteunt het .p2000t formaat (naast het .cas formaat) sinds versie 0.8.

 

Edited by dionoid
Link to post
Share on other sites
9 hours ago, blanka said:

En het scheelt 2 minuten op een bandje,

Volgens mijn berekening scheelt het iets minder:

  • .cas heeft 224 onnodige bytes per blok x 41 blokken per zijde x 2 zijden =¬†18.368 onnodig verzonden bytes per bandje
  • RS-232 is ingesteld met 8 data bits, 1 start- en 1 stop-bit, dus in totaal¬†18.368 bytes x 10 bits per data byte¬†=¬†183.680 onnodig verzonden bits
  • Het dumpen gaat met 2400 bps, dus je verspilt¬†183.680 /¬†2400 = "maar" 76,5 seconden.

En als je veel bandjes dumpt, dan loopt het idd aardig op.

 

ūüėõ

Edited by dionoid
Link to post
Share on other sites
48 minutes ago, dionoid said:

Volgens mijn berekening scheelt het iets minder:

  • .cas heeft 224 onnodige bytes per blok x 41 blokken per zijde x 2 zijden =¬†18.368 onnodig verzonden bytes per bandje
  • RS-232 is ingesteld met 8 data bits, 1 start- en 1 stop-bit, dus in totaal¬†18.368 bytes x 10 bits per data byte¬†=¬†183.680 onnodig verzonden bits
  • Het dumpen gaat met 2400 bps, dus je verspilt¬†183.680 /¬†2400 = "maar" 76,5 seconden.

En als je veel bandjes dumpt, dan loopt het idd aardig op.

 

ūüėõ

Woot

Link to post
Share on other sites

Interessante materie. Moeten we nu niet een keuze gaan maken voor de toekomst m.b.t. archivering software? Hoe dump je dan tapes volgens het originele P2000 formaat en waarom was dat dan niet eerder de standaard?

Link to post
Share on other sites
Op 24-1-2024 om 19:41, blanka zei:

Wat zou het kunnen zijn als een P2000 na pak m beet 3 minuten spontaan reset? Ook bij 0 activiteit.

 

---

 

Iets anders vreemds: ik heb 2 P2000s met 80 karakterkaart, en die zijn anders. De ene heeft 2 potmeters. Als je daaraan draait dan zie je bij een potmeter geen verandering, en bij de andere lijkt er een soort grenswaarde die in 80-karaktermode de cursor aan/uit zet. Draai je de cursor uit, en ga je terug naar 40 karakters dan is ie er wel weer. Iemand een idee waar die potmeters voor zijn?

 

 

Heb je 't over een kaal exemplaar of zitten er toeters en bellen in...?

Behalve de voedingsspanningen zou 't een temperatuurprobleem kunnen zijn, misschien in de vorm van een soldeerpunt dat niet meer zo jofel is en bij de minste uitzetting er de brui aan geeft door niks meer door te geven (ook een ouderdomskwaaltje). Als 't zoiets is in b.v. de databus dan raakt de processor al gauw de kluts kwijt. En dan kan je je lol op met de zoektocht...

Zitten er IC's in voetjes? Til ze dan eens eruit en prik ze aandachtig terug. Contact!

 

---

 

Nogal onbesuisd om aan instelpotjes (door de fabrikant afgeregeld) te gaan zwengelen voordat je weet waarvoor ze dienen (in dit geval timing voor de 5050); heb je nog wel beeld...?

Bij mijn weten zijn er alleen volgende twee boards: Miniware (instelpotjes) en PTC. Eventueel heb je wat aan de -dus niet originele- schema's; hou me ten goede, ik garandeer niet dat ik niks gemist heb.

 

Sterkte ermee.

 

 

MW2048.png

MW2048-b.png

PTC4080.png

PTC4080-b.png

MW2048b.txt MW2048n.txt MW2048p.txt PTC4080b.txt PTC4080n.txt PTC4080p.txt

Edited by cancom
Link to post
Share on other sites
3 hours ago, Hawker17 said:

Interessante materie. Moeten we nu niet een keuze gaan maken voor de toekomst m.b.t. archivering software? Hoe dump je dan tapes volgens het originele P2000 formaat en waarom was dat dan niet eerder de standaard?

Ik denk dat Marcel de Kogel niet wist welk deel precies de header was in het geheugen. Maar het is inmiddels wel duidelijk, er is veel over geschreven in de nieuwsbrieven, erbij gekliederd in de gescande handleiding die online staat, en programma's als Cassettehulp zie je het ook zoals het bedacht is: de tapeheader staat in het geheugen op adres 6030-604F, waarbij de laatste byte de lengte in blokken aangeeft, en aftelt per blok.

De originele dumptool van M2000 sloeg 6000-60FF op als header, en daar zit bijvoorbeeld de inhoud van de toetsbuffer bij. Dus .cas bestanden bevatten allerlei random data die op het moment van dumpen in het RAM geheugen stond.

Ik ben zelf dus voorstander om met de kennis van nu dat op te slaan wat ook echt op de tape staat. Overigens heb ik een hulpje dat de inhoud weergeeft, waarmee je met een druk op de knop .cas danwel .p2000t kunt opslaan, evenals de losse files, en de data van RS232 kunt inlezen/versturen. Ik bouw nog even de RS232 functie om naar de laatste ontvangtool van @dionoid en dan zet ik m ook wel online.

Ik ben ook wel benieuwd, misschien kan @dionoid dat zien in de originele M2000 code, of de 256 bytes ook allemaal worden teruggezet. Dat zou dan rare fratsen kunnen opleveren in de emulator, zoals een opgeslagen toestand van de caps-lock.

Edited by blanka
Link to post
Share on other sites
18 hours ago, cancom said:

 

Heb je 't over een kaal exemplaar of zitten er toeters en bellen in...?

Behalve de voedingsspanningen zou 't een temperatuurprobleem kunnen zijn, misschien in de vorm van een soldeerpunt dat niet meer zo jofel is en bij de minste uitzetting er de brui aan geeft door niks meer door te geven (ook een ouderdomskwaaltje). Als 't zoiets is in b.v. de databus dan raakt de processor al gauw de kluts kwijt. En dan kan je je lol op met de zoektocht...

Zitten er IC's in voetjes? Til ze dan eens eruit en prik ze aandachtig terug. Contact!

 

---

 

Nogal onbesuisd om aan instelpotjes (door de fabrikant afgeregeld) te gaan zwengelen voordat je weet waarvoor ze dienen (in dit geval timing voor de 5050); heb je nog wel beeld...?

Bij mijn weten zijn er alleen volgende twee boards: Miniware (instelpotjes) en PTC. Eventueel heb je wat aan de -dus niet originele- schema's; hou me ten goede, ik garandeer niet dat ik niks gemist heb.

 

Sterkte ermee.

 

 

MW2048.png

MW2048-b.png

PTC4080.png

PTC4080-b.png

MW2048b.txt 2.4 kB · 0 downloads MW2048n.txt 7.51 kB · 0 downloads MW2048p.txt 8.88 kB · 0 downloads PTC4080b.txt 2.49 kB · 1 download PTC4080n.txt 7.46 kB · 0 downloads PTC4080p.txt 8.59 kB · 0 downloads

 

Jawel, lekker draaien! Gewoon proberen. Zoveel spannends is er niet aan een potmeter met een slag van 270¬į en even markeren waar die stond.

 

Maar goed, ik ben ook van de school "Onderzoekend leren"

 

Wel fijn die schema's. Ik was er voor @Bertus een aan het uittekenen toen ik ontdekte dat in een andere van mijn P2000's dus een afwijkend model zit. Welke van de 2 beveel je aan @cancom om opnieuw uit te brengen? Ik krijg zelf het idee dat het beeld bij de PTC versie beter is, die van miniware bibbert.

En weet je ook hoe je ze aansluit? Bij de ene zitten er 7 draden aan IC's, bij de andere 6. Ik neem aan dat het ook verschillend is per moederbordrevisie hoe je ze monteert.

Ik heb het op foto vastgelegd, maar misschien heb je een originele aansluitinstructie.

 

Klopt het ook dat beide 80-karakter borden teken 0 op positie &H5000 om zeep helpen en door een blokje vervangen?

 

Over de machine die uitvalt, vandaag krijg ik het niet gereproduceerd en doet ie het normaal. Ik denk dat de bitjes door de pootjes de afgelopen 24 uur eventuele printplaataderverkalking hebben losgeweekt.

Edited by blanka
Link to post
Share on other sites
11 uur geleden, blanka zei:

- Jawel, lekker draaien!

 

- Welke van de 2 beveel je aan om opnieuw uit te brengen? Ik krijg zelf het idee dat het beeld bij de PTC versie beter is, die van miniware bibbert.

En weet je ook hoe je ze aansluit? Bij de ene zitten er 7 draden aan IC's, bij de andere 6. Ik neem aan dat het ook verschillend is per moederbordrevisie hoe je ze monteert.

 

- Klopt het ook dat beide 80-karakter borden teken 0 op positie &H5800 om zeep helpen en door een blokje vervangen?

 

Eerst info zoeken is teveel moeite? Als je niks vindt ok, de P2000 valt niet onder medische apparatuur.

 

---

 

In mijn T's werken ze beide prima. Maar: voor de MW2048 is mij onbekend van welke IC-nrs (72xx i.p.v. 71xx) je de signalen moet halen op 't moederbord-versie-2, ik heb 't schema daarvan niet (al zijn er allicht weinig verschillen). Ik heb geen zin dat uit te zoeken.

 

Voor 't PTC-board zie diezelfde PTC.pdf, pagina's 1-2 en 17-18.

 

---

 

In de T bestaat geen (video-) geheugen op &H5800 t/m &H5FFF...

 

In dat geheugengat in de T kan je desgewenst op de oude versie processorkaart een EPROM inbouwen. Dat vergt dan wel 't vervangen van de adresdecoder (-inhoud).
Dat houdt in dat je dat moederbord niet meer kan gebruiken om er een M van te maken met een M-videoboard zonder weer de decoder aan te passen. Waarna je niks meer hebt aan die extra EPROM...

 

===

 

- Ik ben zelf dus voorstander om met de kennis van nu dat op te slaan wat ook echt op de tape staat.

 

Of je laat dat idee van een tape-image varen...

 

Daarenboven: je kan 't sowieso niet maken om vanuit zo'n .cas die 256 bytes terug te zetten in 't P2000-geheugen, er zitten configuratiebytes bij; ik noem maar alleen #605C...

 

Edited by cancom
Link to post
Share on other sites

Sinds een tijdje ben ik ook ge√Įnteresseerd geraakt in de P2000T computer. Bij 'toeval', tja dat zegt een verzamelaar immers altijd, ben ik ook in het bezit van een P2000T en mij wat aan het verdiepen in de history en gebruiksmogelijkheden. Ik verbaas me eigenlijk hoe relatief weinig informatie er online nog beschikbaar is.¬† Dit forum biedt in ieder geval de nodige gegevens of verwijzingen informatie die langzaam aan het verdwijnen lijkt.¬†¬†

 

maar goed, ik ben nu aan het experimenteren met het programmeren op de P2000T en heb behalve de P2000T  handleiding en Basic probeerboek voor de P2000T nog niet heel andere documentatie kunnen vinden. 

 

Mocht iemand nog documentatie hebben van de basic programmeer taal zelf, dus niet zozeer algemene informatie over programmeren in basic, maar specifiek voor de Basic variant dus van de P2000T basic Interpreter¬† module, dan ben ik erg ge√Įnteresseerd.¬†¬†

 

Een directe vraag die ik heb bijvoorbeeld. Naast de chr$ characters om kleur en positie te bepalen, is er ook een video kleur geheugen locatie waarmee je met poke commando's bijvoorbeeld de kleur van een character op het scherm kunt veranderen ? 

 

 

Link to post
Share on other sites
20 uur geleden, blanka zei:

Ik denk dat Marcel de Kogel niet wist welk deel precies de header was in het geheugen. Maar het is inmiddels wel duidelijk, er is veel over geschreven in de nieuwsbrieven, erbij gekliederd in de gescande handleiding die online staat, en programma's als Cassettehulp zie je het ook zoals het bedacht is: de tapeheader staat in het geheugen op adres 6030-604F, waarbij de laatste byte de lengte in blokken aangeeft, en aftelt per blok.

De originele dumptool van M2000 sloeg 6000-60FF op als header, en daar zit bijvoorbeeld de inhoud van de toetsbuffer bij. Dus .cas bestanden bevatten allerlei random data die op het moment van dumpen in het RAM geheugen stond.

Ik ben zelf dus voorstander om met de kennis van nu dat op te slaan wat ook echt op de tape staat. Overigens heb ik een hulpje dat de inhoud weergeeft, waarmee je met een druk op de knop .cas danwel .p2000t kunt opslaan, evenals de losse files, en de data van RS232 kunt inlezen/versturen. Ik bouw nog even de RS232 functie om naar de laatste ontvangtool van @dionoid en dan zet ik m ook wel online.

Ik ben ook wel benieuwd, misschien kan @dionoid dat zien in de originele M2000 code, of de 256 bytes ook allemaal worden teruggezet. Dat zou dan rare fratsen kunnen opleveren in de emulator, zoals een opgeslagen toestand van de caps-lock.

Dank je. Dan wacht ik even op die tool voordat ik nog veel meer werk steek in het dumpen. Overigens heb ik verdacht veel Cassette Fout E-meldingen bij het dumpen van een bijna volle tape. Zou dat te maken kunnen hebben met die 1056 vs 1280 bytes en dat hij dan denkt dat de tape vol is? Op de originele tape krijg ik die Cassette Fout E namelijk niet.

 

Na splitape zijn alle bestanden overigens prima leesbaar.

Edited by Hawker17
Link to post
Share on other sites
9 hours ago, Justforthefun said:

Een directe vraag die ik heb bijvoorbeeld. Naast de chr$ characters om kleur en positie te bepalen, is er ook een video kleur geheugen locatie waarmee je met poke commando's bijvoorbeeld de kleur van een character op het scherm kunt veranderen ? 

 

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.

 

example.png.2bd63a4426b9495dabcd5ea7939116c4.png

 

9 hours ago, Justforthefun said:

Mocht iemand nog documentatie hebben van de basic programmeer taal zelf, dus niet zozeer algemene informatie over programmeren in basic, maar specifiek voor de Basic variant dus van de P2000T basic Interpreter¬† module, dan ben ik erg ge√Įnteresseerd.¬†¬†

 

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.

Edited by Bertus
Link to post
Share on other sites
22 uur geleden, blanka zei:

Klopt het ook dat beide 80-karakter borden teken 0 op positie &H5000 om zeep helpen en door een blokje vervangen?

 

Ik vermoedde al een sort-of-typo.

 

Bij die van jou dus alletwee, bij die van mij 1 ervan: 't blokje dat je te zien krijgt op de plek van 't dubbele-hoogte-stuurbyte. Hou 't maar erbij dat 't een van de eigen-aardigheden is van die antieke P2000...

 

Waarom dat blokje en of er iets aan te doen is ben ik vergeten. Mogelijk staat in 1 van al die pdf's wel iets erover; zoek en gij zult misschien vinden.

 

Ik heb me wel eens afgevraagd of met de scanners en -software van nu 't allemaal beter zou opduiken in een scan-pdf. Niet dat ik m'n 2200C en W98SE afdank...

 

In een index van die zwik pdf's kunnen er woorden enzo verhaspeld doorkomen waardoor je zoiets als "80 tekens" misschien nog niet eens gaat vinden ook al is 't goed leesbaar in de pdf zelf.

 

Maarre... als er belangstelling is voor nieuwe 80kol-kaartjes (waarom dan niet 't wat eenvoudiger PTC-ding) dan zal waarschijnlijk de opzet aangepast moeten worden. Wat te denken van 't IC "8T98"? Wat is dat eigenlijk en bestaat er een vervanger?

 

Over dat circuit gesproken: op 't PTC-bordje dat ik via NEBO heb aangeschaft ontbreekt de oorspronkelijk aanwezige tor in 't oscillatorcircuitje. Blijkbaar heeft men bij NEBO -niet verkeerd- geconcludeerd dat die tor overbodig is. Maar geldt dat nog steeds met een andere chip dan die 8T98?

 

Als alles lukt dan ga je gang maar @Bertus...

 

Link to post
Share on other sites

 

On 1/26/2024 at 11:01 AM, Hawker17 said:

Interessante materie. Moeten we nu niet een keuze gaan maken voor de toekomst m.b.t. archivering software? Hoe dump je dan tapes volgens het originele P2000 formaat en waarom was dat dan niet eerder de standaard?

Wat mij betreft blijft .cas gewoon de standaard. Dat formaat is inmiddels relatief wijd verspreid en converteren tussen .cas en .p2000t dumps is heel eenvoudig. Helaas bevat het .cas formaat onnodige bytes in iedere blok-header; dat is een erfenis die we hebben meegekregen.

 

23 hours ago, blanka said:

Ik denk dat Marcel de Kogel niet wist welk deel precies de header was in het geheugen.

Ik neem aan dat hij dat wel wist, want in de cassette-routines van M2000 leest en schrijft hij precies de juiste 32 bytes naar adres &H6030; de andere 224 bytes worden genegeerd. Ik heb sinds kort contact met Marcel, dus ik zal hem eens vragen of hij zich nog herinnert waarom de dumps te veel bytes voor de header gebruikten.

 

3 hours ago, Hawker17 said:

Dan wacht ik even op die tool voordat ik nog veel meer werk steek in het dumpen.

Momenteel ben ik een nieuwe versie van de SERIAL.BAS dump-utility aan het testen, die met 9600 bps verstuurt i.p.v. 2400 bps. Daarmee wordt het dumpen van een tweezijdige cassette bijna 5,5 minuut (328 seconden) sneller.

Rekensom: voor twee zijden van een cassette worden in het .cas formaat maximaal 2 * 41 (blokken) * 1280 (256+1024) bytes = 104.960 bytes verzonden. Dat zijn 1.049.600 bits (want RS-232 stuurt 1 start bit, 8 data bits en 1 stop bit). Met 2400 bps kost dat 437 seconden, maar met 9600 bps slechts 109 seconden. De tijdsbesparing is dus 437-109 = 328 seconden per volle cassette.

Edited by dionoid
Link to post
Share on other sites
3 uur geleden, Bertus zei:

 

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 24 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.

 

example.png.2bd63a4426b9495dabcd5ea7939116c4.png

 

 

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.

 

Hi @Bertus dank je voor je duidelijke uitleg. Nu snap ik ook  inderdaad de uitleg op deze pagina (29) beter dat ook met de print chr$ om een kleur te 'kiezen' er één positie op het scherm nodig is. Dit is dus ook zo bij het gebruik van poke om daarmee direct in het scherm geheugen om de kleur om te schakelen voor het volgende character dat je afdrukt. 

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...