Ga naar inhoud

Aanbevolen berichten

Ik ben aan het kijken of ik de P2000 cassette emulatie aan de praat kan krijgen in Mess. Het probleem is dat:

 

1. De documentatie niet lijkt te kloppen, of erg onduidelijk is. 

2. Ik geen fysieke P2000 heb.

 

Om alles aan de praat te krijgen moet ik begrijpen wat er allemaal gebeurt in port &H20 (0x20).  Volgens verschillende handleidingen ziet de poort er als volgt uit:

 

cas_inp: equ 20h ; input port for cassette

; bit 0 - Printer input

; bit 1 - Printer ready

; bit 2 - Strap N (daisy/matrix)

; bit 3 - Cassette write enabled (WEN)

; bit 4 - Cassette in position (CIP)

; bit 5 - Begin/end of tape (BET)

; bit 6 - Cassette read clock (RDC)

; bit 7 - Cassette read data (RDA)

 

Het gaat mij vooral om bit 3, 4, 5 en 6.

 

Zou iemand het volgende willen draaien op een echt P2000?

  1. Verwijder cassette:  PRINT INP(&H20)
  2. Plaats cassette:  PRINT INP(&H20)

Dit bevestigd of CIP bit hoog of laag is als de cassette aanwezig is.

 

Hetzelfde voor een cassette met en zonder "stopje"

  1. Cassette met het stopje verwijdert (schrijven naar cassette onmogelijk) PRINT INP(&h20)
  2. Cassette zonder stopje: PRINT INP(&h20)

Bevestigd of de WEN bit hoog of laag is als het stopje wel of niet aanwezig is.

 

Het RDC bit zou gebruikt moeten worden voor het kloksignaal. Het is mij niet duidelijk uit de handleiding hoe vaak de bit wisselt. Ik weet niet zeker of de resultaten hier zinvol zullen zijn:

 

10 PRINT peek(&H6010)INP(&H20):GOTO 10

 

Ik ben benieuwd of dit verschillende waardes oplevert voor de 2e kolom, of altijd dezelfde.

 

Om de 20ms zendt de P2000 een signaal naar port 10 (cassette, printer en toetsenbord). Veelal om het toetsenbord actief te maken.  Ik vraag me of of dit ook resulteert in het uitzetten van de cassette motor tijdens het terugspoelen. Een eenvoudige test is:

 

OUT &H10, &H4

 

Dit zet bit 3 en zet de terug spoel motor aan. Vraag is:

  1. Blijft de motor aan, of stopt hij meteen? 
  2. Stopt het terugspoelen aan het begin van de cassette of blijft het doorgaan? 

 

Als er geen rom in de P2000T steekt dan probeert de P2000t iets van cassette te laden (er verschijnt een T op het scherm). Kan iemand bevestigen of dit werkt?

 

 

 

 

 

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

We zijn elkaar ook al tegengekomen op Circuits Online. Ik wil best wel jouw testjes doen 🙂

 

Ik kan ook alvast wat van mijn eigen bevindingen delen, want ik ben ook aan het uitzoeken hoe de P2000 een data blok van cassette leest.

Hoe het schrijven gaat staat voor daarna op de planning.

 

Allereerst: de Monitor ROM routines die met de cassette werken zetten de interrupt uit, om te voorkomen dat de interrupt de cassette control lijnen reset.

Wanneer je dus vanuit de prompt of in BASIC de cassette aanstuurt werkt dat ook alleen maar als je de interrupt uitzet...

 

Tijdens mijn analyses en testjes heb ik kunnen afleiden dat de clock, Bit 6 van inp(&H20), wisselt wanneer een (nieuw) data bit is gelezen en aanwezig is op Bit 7.

Op beide flanken, dus zowel hoog-laag als laag-hoog. Wanneer er geen data op de tape staat (lege tape of gedurende de gaps tussen Markers en Datablokken) wisselt de clock niet.

 

De cassetteroutine om een block te lezen werkt grofweg als volgt, voor zover ik heb kunnen uitvogelen: 

 

Aanname is dat de  cassette of is teruggespoeld, of is gestopt na het lezen of schrijven van een data block. Dan staat de leeskop op een GAP (lege tape) en zou een Marker moeten komen.

 

een Marker bestaat uit 4 bytes. 

- preamble (&HAA of binary 10101010)

- &H00

- &H00 

- postamble (&HAA)

 

De motor wordt gestart, en de code kijkt continu of het clock bit wisselt.

Bij de eerste wissel neemt de code aan dat dit bit 1 is van de preamble van de marker, en gaat na het verwerken van de preamble, door met bytes lezen, tellen en weggooien, tot er in een periode van ~5ms geen bit meer binnen komt.

Dan neemt de code aan dat Marker voorbij is en de volgende Gap bereikt.

 

Waren er meer of minder dan 3 bytes (nul, nul en postamble) geteld voordat de timeout kwam (kan komen doordat het een Datablock was, of lezen begon middenin een Mark of datablock) dan wordt een nieuwe poging gedaan de Marker te vinden. 

 

Wanneer succesvol een Marker is gelezen dan staat de leeskop (dus) op de Gap tussen Marker en Data, en volgt (als het goed is 🙂 ) een  datablock:

- preamble (&HAA of binary 10101010)

- Header (32 bytes)

- Payload (1024 bytes)

- postamble (&HAA)

 

Nu wordt weer op een eerste clock flip/data bit gewacht, en (als het goed is) het preamble byte ingelezen en weggegooid.

Meteen daarna worden de header, gevolgd door de data, ingelezen.

Daarna worden weer bytes  gelezen, geteld en weggegooid tot er een timeout is op het lezen van het volgende bit.

 

... Klaar! 

 

Niet helemaal: er volgt nog wat boekhouding om te bepalen of het een valide datablock was en berekend met hoeveel de klokteller moet worden opgehoogd om te corrigeren voor het feit dat de interrupt die niet kon ophogen.

Hoe dat allemaal gaat ben ik momenteel aan het uitzoeken, dus meer details heb ik nog niet.

 

Ferenc

 

toevoeging: 

 

dit zijn mijn aantekeningen bij in(0x20):

INPUT port 0x20-0x2f     cassette and printer
--------------------
bit    description
7    RDA     Data bit from cassette
6    RDC     ReaD Clock (goes High-Low or Low-High when a databit is ready)
5    BET     (N) Begin/End of tape signal 1= tape ok, 0 = begin/end
4    CIP     Cassette In Position = 1, no cassette = 0
3    WEN    (N) Write Enable 1=protected 0=can write
2    STRAP    (N) printer type (Daisy/Matrix) 
1    READY     printer ready connected to printer port pin 20
0    PRI       printer data in connected to printer port pin 2

 

 

aangepast door HAL9000
spelvaudjes en port 20 databits
Link naar bericht
Delen op andere sites

Wedervraag:

welke bronnen gebruik jij?

 

en aan allen: Ik zoek documentatie/informatie over de floppy drives die je op de P2000T kon aansluiten...

 

Mijn P2000T heb ik op de kop getikt zonder drives/floppen 🙂

 

iemand?  

aangepast door HAL9000
Link naar bericht
Delen op andere sites

Bedankt! Dat is erg bruikbaar.

 

Ik heb een assembly dump gemaakt van de rom en ben langzaam documentatie aan het toevoegen. Zie hier https://github.com/pokowaka/documentation/blob/master/programming/p2000.asm. Een vork van https://github.com/p2000t/documentation waar veel documentatie is te vinden. 

 

Hier is een stukje assembly wat suggereert dat WEN = 1 als write enabled is (stopje present)

 

castest:
      in       a,(cas_inp)    ;0b83    db  20 ; read port 20
      and      018h           ;0b85    e6  18 ; mask CIP WEN  (0001 1000)
      ret      z              ;0b87    c8     ; if (!CIP && !WEN) return 
      cp       018h           ;0b88    fe  18 ;  
      ret      z              ;0b8a    c8     ; if (CIP && WEN) return
      ld       a,"G"          ;0b8b    3e  47 ; Geen stopje error? (!WEN || !CIP), invariant?: WEN -> CIP
      ld       (caserror),a   ;0b8d    32  17  60 
      ret                     ;0b90    c9

 

Ik heb tot nu toe alleen het volgende aan mame toegevoegd:

 

- Fake cassette (memory blob)

- Fake rdc clock (volledig fout na het lezen van jou bericht).

- Ik doe nog niet het juiste met de lees vlaggen.

- Het "Maintenance" document https://github.com/pokowaka/documentation/blob/master/hardware/Maintenance.pdf benoemt een aantal test programma's. Het zou mooi zijn als iemand die nog zou hebben.

 

Mame is overigens niet erg stabiel 😞. Veelal bevriest de emulator. Mame klaagt over mijn SAA rom, dus misschien dat het daaraan ligt. 

 

Link naar bericht
Delen op andere sites

 

jouw testjes:

                                        dec  hex   binair
                                        --------------------
print inp(&h20) zonder cassette       : 187  0xBB  1011 1011
print inp(&h20) cassette zonder stopje: 171  0xAB  1010 1011
print inp(&h20) cassette met stopje   : 163  0xA3  1010 0011
                                                      ^ ^
                                                  CIP_| |_ WEN

CIP is blijkbaar ook 'inverted', en 0 als er een cassette is en 1 als er geen cassette is.

WEN = 0 als er geschreven kan worden en 1 als dat niet zo is (inverted)

Was dus fout in mijn analyse. Super, weer wat geleerd!

 

en 10 PRINT peek(&H6010)INP(&H20):GOTO 10 leverde een mooi oplopende eerste waarde en een constante waarde van 163 op voor de tweede

Dat is conform wat we verwachtten op basis van mijn eerdere beschrijving van hoe het clock-bit zich gedraagt.

 

tot slot, OUT &H10, &H4 spoelt de hele tape terug, en als de tape is teruggespoeld blijft de motor aan (geen EOT detectie actief die de motor uitzet)
Waarschijnlijk komt dit doordat de 0x04 op port 20 ook bit 6, KBIEN, uitzet en daarmee de interrupt. 

 

we worden nog weleens wijs!

 

laatste test:

bij geen cartridge en een tape in de recorder verschijnt er een knipperende 'T' op de bovenste regel.

De tape wordt teruggespoeld, en dan opgestart in een poging de eerste file te laden.

Ik had er een lege tape in gezet, dus er werd niks op tape gevonden

Vervolgens bleef de P2000T eindeloos proberen dat eerste block te vinden met die T bovenin beeld.

 

aangepast door HAL9000
opstarten zonder cartridge, met tape toegevoegd
Link naar bericht
Delen op andere sites
41 minuten geleden, HAL9000 zei:

OUT &H10, &H4 spoelt de hele tape terug, en als de tape is teruggespoeld blijft de motor aan

Als je persé de MDCR naar de vaantjes wil helpen...

 

Alla, de andere drager waarover je 't had: heb je dan wel een floppy-controller in je P2000? Zoja, je zal allicht wat oudere types op de kop moeten kunnen tikken; ik heb een 5¼" Teac eraan hangen (ben 't typenummer even kwijt) en 2 Mitsubishi 3½" type MF353. Alle dubbelzijdig, max 80 tracks (*2) en max 6¼kB per track. De Upd765 kan meen ik max 5kB aan. Ofwel: 800kB max.

 

Helemaal zeker of een 1.44 niet lukt weet ik nog niet; ik heb ook nog een 3½" Canon liggen die ik eens eraan ga hangen.

 

Zie als je wil ook op COL.

 

En @pokowaka: hoezo heb je op github wel p2000t/documentation gevonden maar niet /software? Er staat 2* een Maintenance.bin...

Als je een EPROM-programmer hebt kun je vanalles uitproberen.

 

Link naar bericht
Delen op andere sites
44 minutes ago, cancom said:

Als je persé de MDCR naar de vaantjes wil helpen...

 

 

Ik zat als een havik op te letten en heb meteen het deurtje opengedaan, motor bleef draaien zonder dat de tape m tegenhield.

🙂

En Pokowaka heeft geen hardware, anders had ik die testjes niet hoeven doen denk ik...

 

Ik zal eens kijken of er een controller in een van mijn apparaten zit... is dat aan de buitenkant te zien?

 

aangepast door HAL9000
Link naar bericht
Delen op andere sites
1 hour ago, cancom said:

heb je dan wel een floppy-controller in je P2000?

 

Nee, helaas... 

Ik heb wel een P2000M staan. Hopelijk is die interface vergelijkbaar met de insteekkaart voor de P2000T...

 

aangepast door HAL9000
Link naar bericht
Delen op andere sites

@HAL9000 bedankt! Wij zijn in ieder geval een stap verder met de bits! @cancom bedankt voor het verwijzen naar de Maintenance module. Die had ik inderdaad gemist. De maintenance module zal het uitzoek werk waarschijnlijk een stuk makkelijker maken!

 

Ik heb al inderdaad al 30 jaar (of meer?) geen P2000 meer. Mijn kleinere ik had ooit een goed plan om het toetsenbord schoon te maken en toen waren er ineens geen toetsen meer 🙂

Link naar bericht
Delen op andere sites
10 uren geleden, HAL9000 zei:

tot slot, OUT &H10, &H4 spoelt de hele tape terug, en als de tape is teruggespoeld blijft de motor aan (geen EOT detectie actief die de motor uitzet)
Waarschijnlijk komt dit doordat de 0x04 op port 20 ook bit 6, KBIEN, uitzet en daarmee de interrupt.

 

Er hangt in een "kale" P2000 maar één ding aan de INT\ en dat is die key-interrupt-generator (gecontroleerd door KBIEN\ en LOCK\). BET dus niet!

Dat bit wordt enkel in de gaten gehouden door de cassroutines. Software, niks hardware.

 

8 uren geleden, HAL9000 zei:

Nee, helaas... 

Ik heb wel een P2000M staan. Hopelijk is die interface vergelijkbaar met de insteekkaart voor de P2000T...

 

Een complete M? 2 kasten? Dus met scherm/drives? Maar 2 gaten waar de 5¼ drives ooit gezeten hebben? Jammer dan.

 

Een floppykaart is niet een "insteek"-kaart maar ingebouwd boven het "moederbord".

 

Ik heb 't emailadres van @dionoid niet meer...

 

Link naar bericht
Delen op andere sites
13 hours ago, cancom said:

Er hangt in een "kale" P2000 maar één ding aan de INT\ en dat is die key-interrupt-generator (gecontroleerd door KBIEN\ en LOCK\). BET dus niet!

Dat bit wordt enkel in de gaten gehouden door de cassroutines. Software, niks hardware.

 

Geen hardware, klopt! Ik had eerder geschreven dat ik vermoedde dat de motor meteen uitgezet zou worden.

Ik had voor de waarde van de out &h44 gelezen en niet &h4, wat @pokowaka schreef.

Bij waarde &h44 wordt de motor wel meteen door de interrupt, als bijwerking van het (weer) aanzetten van KBIEN, uitgezet.

Dat heb ik net even getest.

13 hours ago, cancom said:

Een complete M? 2 kasten? Dus met scherm/drives? Maar 2 gaten waar de 5¼ drives ooit gezeten hebben? Jammer dan.

 

Een floppykaart is niet een "insteek"-kaart maar ingebouwd boven het "moederbord".

2000M: Ik heb een complete set, 2 kasten en in de monitorkast met daarin 2 drives, een stapel floppen en wat kopieën van handleidingen erbij, zie fotootje.

 

En je hebt gelijk, het is een inbouw- en niet een insteekkaart 🙂

2000M.jpg

aangepast door HAL9000
Link naar bericht
Delen op andere sites
9 hours ago, pokowaka said:

Ik geloof dat ik ondertussen documentatie voor de mdcr heb gevonden: https://github.com/pokowaka/documentation/blob/master/hardware/micro-cass.pdf 

Mooi! dit helpt enorm alles beter te begrijpen... 

Ik vond ook nog deze (bijlage)

philips_8920_405_10601_mdcr_sm.pdf

aangepast door HAL9000
Link naar bericht
Delen op andere sites

Dankzij de gebruiksaanwijzing van de cassette recorder begint het de goede kant uit te gaan. De maintenance module slaagt nog niet maar schrijven en (offline) decoderen gaat al wel goed:

 

De file is gemaakt met Maintenance 2 module als volgt:

  • 9 - 1 >> Nu zit je in de debugger;
  • TB; Spoel tape terug
  • F 7100 400 CC; Fill memory region CC
  • F 7100 10 00 ; Fill memory region 16 bytes of 00 
  • F 7110 10 01; etc.. etc..
  • TW 7100 400; Schrijf memory region 1kb van vanaf address 7100
File: F7100-400-01-02.ok.txt1
aa 0 0 aa  [Sync marker]
aa  [Pre Amble]
0 71 0 4 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1  [Header]
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 a a a a a a a a a a a a a a a a b b b b b b b b b b b b b b b b c c c c c c c c c c c c c c c c d d d d d d d d d d d d d d d d e e e e e e e e e e e e e e e e f f f f f f f f f f f f f f f f cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  [Data]
a5 70  [Checksum]
aa  [Post Amble]

De data wordt in ieder geval goed weg geschreven. Probleem is nu uitzoeken hoe de klok precies werkt, want de write-skipback-read test slaagt nog niet.

 

Link naar bericht
Delen op andere sites
  • 2 weeks later...

Ik ben weer een klein stukje verder. Blijkt dat er dus een flip-flop achter de RDC van de cassette recorder zit. (tsk, tsk, had ik gemist). Ik krijg nog een cassette fout B tijdens het lezen, maar blokken beginnen herkend to worden:

 

 

Screen Shot 2020-09-11 at 11.57.52 AM.png

Link naar bericht
Delen op andere sites

Nog een leuke ontdekking:

  1. De P2000 kan zowel vooruit, als achteruit van de MDCR lezen (en doet dit ook)
  2. Als de REV bit hoog is en de cassette terugspoelt dan worden RDC en RDA gewisseld. 

De reden waarom de Cassette fout B optreed is omdat de P2000 bits telt tijdens het terug spoelen en uiteindelijk het begin van de tape bereikt. Het goede nieuws is dat het nu lijkt of alles werkt!

Link naar bericht
Delen op andere sites
8 hours ago, pokowaka said:

 

De reden waarom de Cassette fout B optreed is omdat de P2000 bits telt tijdens het terug spoelen en uiteindelijk het begin van de tape bereikt. Het goede nieuws is dat het nu lijkt of alles werkt!

Mooi werk!!!

 

Kleine aanvulling: volgens mij (en mijn disassembly) telt de P2000 geen bits, maar seconden:

; cas_Rewind  (address 0x0bb4)
; rewinds tape for a maximum duration of 103 seconds.
; a verified data tape rewinds within 90-something seconds
; if EOT is not reached within 103 seconds, the tape is either broken
; or too long (not a supported tape) 
; inputs: none
; outputs: Cassette error contains no error, 'A' or 'I' 
cas_Rewind:
        call write_disabled             ; writing?
        ret nz                          ; yes! so don't rewind

        ld a,KBIEN|REV                  ; start rewinding
        out (CPOUT),a                   ; 
        ld b,103                        ; wait max 103 seconds  (1m 43s)
_rew_wait_loop:
        call wait_1second               ; this routine returns NZ when tape ejected or EOT is reached
        jr nz,_EOT_or_Ejected           ; EOT is what we want check this
        djnz _rew_wait_loop             ; keep rewinding for one more second 
        ld a,'I'                        ; still no eot after 103 seconds: Error 'I' means time out during rewind 
        ld (cassette_error),a           ; 
        ld c,00fh                       ; not sure why this is... ????

; status from wait_1_second can be:
; 0x41 = 'A' no tape
; 0x45 = 'E' end of tape (during write)
_EOT_or_Ejected:
        ld a,(cassette_error)           ; get error 
        cp 'E'                          ; equal to end of tape?
        jr nz,_was_ejected              ; no, other problem 
        ld a,0                          ; no error, because EOT is what we wanted here
        ld (cassette_error),a           ;
        ld hl,cassette_status           ;
        set 4,(hl)                      ; set begin of tape flag
        res 0,(hl)                      ; and start mark found (bit 0 == 0)
_was_ejected:
        ld h,'g'                        ; error code to write to comm port
        jp cas_motor_off                ; turn motor off and send h to comm (if this is enabled)

 

 

aangepast door HAL9000
typo
Link naar bericht
Delen op andere sites

Dat is volgens mij de terugspoel routine. Ik ontdekte dat er in terug blok (0c61) routine iets vreemds aan de hand was. Hier zijn de stukjes:

 

;; Read the RDA state and set bit 5 in A
;; RDA_state | BET
;; Note when the tape is moving in reverse this actually gets the RDC bit.
get_rda:
      in       a,(cas_inp)    ;0cee    db  20
      and      080h           ;0cf0    e6  80
      set      5,a            ;0cf2    cb  ef
      ret                     ;0cf4    c9

      ;; This seems to read a byte when the tape is moving backwards.
      ;; Note that RDA <-> RDC when moving backwards.
      ;;
      ;; Args:
      ;;   A must contain the current state of RDC & BET
      ;;   D related to time we are willing to wait to see a byte.
      ;;
      ;; Returns:
      ;;   Sets the C flag in case of failure (beginning of tape, or tape removed.)
      ;;   Sets (caserror) with the actual error in case C is set
read_rev_byte:
      ld       c,008h         ;0cbf    0e  08        ; wait for at most 8 bits
rev_next_bit:
      xor      080h           ;0cc1    ee  80        ; Flip the expected RDA, we wait for next clock
      ld       h,a            ;0cc3    67           
l0cc4h:
      ld       b,000h         ;0cc4    06  00        ; Max time we are willing to wait for RDA clock signal, we loop 256 times
wait_for_rev_bit:
      ; Keep spinning until we have a bit flip
      in       a,(cas_inp)    ;0cc6    db  20        ;
      and      0b0h           ;0cc8    e6  b0        ; RDA, BET, CIP
      cp       h              ;0cca    bc            ; Is the clock state as expected?
      jr       z,rev_bit_available  ;0ccb    28  10  
      djnz     wait_for_rev_bit     ;0ccd    10  f7  ; Spin until RDA changes.
      and      030h           ;0ccf    e6  30        ; mask bet & cip
      cp       020h           ;0cd1    fe  20        ; this checks for errors.
      jr       nz,read_rev_err     ;0cd3    20  0d   ; Check if we are at the end, or cassette removed.
      dec      d              ;0cd5    15
      jr       nz,l0cc4h      ;0cd6    20  ec
      ld       a,h            ;0cd8    7c
      xor      080h           ;0cd9    ee  80
      inc      d              ;0cdb    14
      ret                     ;0cdc    c9
rev_bit_available:
      ;; This is called when we have a bit available..
      ld       a,h            ;0cdd    7c
      dec      c              ;0cde    0d
      jr       nz,rev_next_bit      ;0cdf    20  e0
      ret                     ;0ce1    c9  ; We have read 8 bits..

read_rev_err:
      ;; This happens when we hit the beginning of the tape, or if we
      ;; removed the tape while moving backwards.
      or       a              ;0ce2    b7
      ld       a,"E"          ;0ce3    3e  45   ; End of tape error
      jr       z,l0ce9h       ;0ce5    28  02
      ld       a,"A"          ;0ce7    3e  41   ; No tape
l0ce9h:
      ld       (caserror),a   ;0ce9    32  17  60
      scf                     ;0cec    37       ; Set the carry flag to indicate failure.
      ret                     ;0ced    c9

 

read_rev_byte lijkt alleen maar zinnig als het RDA bit wordt gebruikt als klok signaal. Wat blijkbaar ook het geval is.  Mame kan nu in ieder geval wav files schrijven en lezen, en een pull request is al open

https://github.com/mamedev/mame/pull/7215. Ik ben bezig met een converter van .cas -> wav zodat mame ook de cas files kan lezen.

 

Helaas bevatten de .cas files niet de checksum 😞

Link naar bericht
Delen op andere sites

Ik heb de checksum code achterhaald:

 

      and      001h           ;07ac    e6  01   ; DE with checksum is active
      xor      e              ;07ae    ab       ; a = written bit.
      ld       e,a            ;07af    5f       ; e = e ^ (bit written)
      and      001h           ;07b0    e6  01
      jr       z,l07d3h       ;07b2    28  1f   ; through a complex web it will jump to chksum (timing)
      ld       a,002h         ;07b4    3e  02
      xor      e              ;07b6    ab
      ld       e,a            ;07b7    5f       ; e = e ^ 0x02
      ld       a,040h         ;07b8    3e  40
chksum:
      xor      d              ;07ba    aa       ; a = d ^ (0x40 | 0x0)
      rra                     ;07bb    1f       ; >> 1
      rr       e              ;07bc    cb  1b   ; >> rotate through DE (i.e. e0 -> d7 etc..)
      jr       c,l07c2h       ;07be    38  02
      jr       l07c4h         ;07c0    18  02
l07c2h:
      or       080h           ;07c2    f6  80  ;
l07c4h:
      ld       d,a            ;07c4    57

In onleesbare c code:

 

void calc_chksum(uint16_t* de, bool bit)
{
	//  TODO Cleanup to something readable.
    uint8_t e = *de & 0xff;
    uint8_t d = (*de >> 8) & 0xff;
    e         = e ^ (bit ? 1 : 0);
    if (e & 0x01)
    {
        e = e ^ 2;
        d = d ^ 0x40;
    }
    else
    {
        d = d ^ 0x00;
    }
    bool c = d & 0x01;
    d >>= 1;
    bool cp = e & 0x01;
    e >>= 1;
    if (c)
    {
        e |= 0x80;
    }
    if (cp)
    {
        d |= 0x80;
    }
    *de = (d << 8) | e;
}

Mame kan nu native de .cas files inlezen. Met echte P2000t snelheid :-). 

Screen Shot 2020-09-14 at 12.35.35 AM.png

Link naar bericht
Delen op andere sites
4 hours ago, pokowaka said:

Ik heb de checksum code achterhaald:

 


      and      001h           ;07ac    e6  01   ; DE with checksum is active
      xor      e              ;07ae    ab       ; a = written bit.
      ld       e,a            ;07af    5f       ; e = e ^ (bit written)
      and      001h           ;07b0    e6  01
      jr       z,l07d3h       ;07b2    28  1f   ; through a complex web it will jump to chksum (timing)
      ld       a,002h         ;07b4    3e  02
      xor      e              ;07b6    ab
      ld       e,a            ;07b7    5f       ; e = e ^ 0x02
      ld       a,040h         ;07b8    3e  40
chksum:
      xor      d              ;07ba    aa       ; a = d ^ (0x40 | 0x0)
      rra                     ;07bb    1f       ; >> 1
      rr       e              ;07bc    cb  1b   ; >> rotate through DE (i.e. e0 -> d7 etc..)
      jr       c,l07c2h       ;07be    38  02
      jr       l07c4h         ;07c0    18  02
l07c2h:
      or       080h           ;07c2    f6  80  ;
l07c4h:
      ld       d,a            ;07c4    57

 

 

Deze code was ik ook al op gestuit, in de inlees routine, had ik even geparkeerd.  Mooi dat jij die uit elkaar hebt geplozen... 

Iets verderop wordt DE (checksum dus op dat moment!) weer gebruikt:

; data handling routine 'read payload'
; it stores the data byte at destination.
; HL, BC, DE contain dest, count and data
; not sure yet what DE means here ?? when all bytes were read (DE == 0) ???? 
; ?????
read_payload:
        exx				; save databyte, destination and count, get DE 
; next byte a filler or payload?
        ld a,d			; DE contains ????? 
        or e			;
        jr nz,set_carry		; DE not zero

        ex af,af'       ; get load control flags (P, C)
        xor a			; Set Z flag, set P, clear carry
        jp store_byte 
set_carry:
        ex af,af'		; get load control flags (P, C)
        scf				; Set Carry
        rla				; shift in A
        or a			; NZ, Set P 
store_byte:
        exx				; get data byte, dest and count
        ld (hl),d		; store data byte
        cpi	        	; inc HL, dec BC  P <- 0 when BC == 0
                        ; this triggers next len, dest and handler retrieval 
                        ; after finishing the data block
        exx				; save dest, count
        jr get_next_byte

 

 

Link naar bericht
Delen op andere sites
On 9/14/2020 at 9:36 AM, pokowaka said:

 


void calc_chksum(uint16_t* de, bool bit)
{
	//  TODO Cleanup to something readable.
    uint8_t e = *de & 0xff;
    uint8_t d = (*de >> 8) & 0xff;
    e         = e ^ (bit ? 1 : 0);
    if (e & 0x01)
    {
        e = e ^ 2;
        d = d ^ 0x40;
    }
    else
    {
        d = d ^ 0x00;
    }
    bool c = d & 0x01;
    d >>= 1;
    bool cp = e & 0x01;
    e >>= 1;
    if (c)
    {
        e |= 0x80;
    }
    if (cp)
    {
        d |= 0x80;
    }
    *de = (d << 8) | e;
}

Mame kan nu native de .cas files inlezen. Met echte P2000t snelheid :-). 

 

Leesbaarder:

 

            
de ^= bit;
if (de & 0x01) de ^= 0x4002;
// we rotate the bits, and lo bit of de wraps to hi bit
uint16_t hibit = (de & 0x01) ? 0x8000 : 0;
de = hibit|(de>>1);

 

aangepast door HAL9000
Link naar bericht
Delen op andere sites

W00T! Cassette support is nu in Mame! Het is nog niet helemaal perfect:

 

- Soms onverwachte cassette fout L

- Soms lukt het niet om van een laad scherm (piraten avontuur, ghosthunt) de juiste file te laden.

 

Dit zijn waarschijnlijk timing gerelateerde problemen. 

 

- Ongerelateerd aan de mini cassette, soms hangt mame voor een paar seconden.

Link naar bericht
Delen op andere sites
On 9/15/2020 at 12:28 AM, HAL9000 said:

Leesbaarder:

 


            
de ^= bit;
if (de & 0x01) de ^= 0x4002;
// we rotate the bits, and lo bit of de wraps to hi bit
uint16_t hibit = (de & 0x01) ? 0x8000 : 0;
de = hibit|(de>>1);

 

Ja, dat is stukken beter!

Link naar bericht
Delen op andere sites
8 minutes ago, pokowaka said:

W00T! Cassette support is nu in Mame! Het is nog niet helemaal perfect:

 

- Soms onverwachte cassette fout L

- Soms lukt het niet om van een laad scherm (piraten avontuur, ghosthunt) de juiste file te laden.

 

Dit zijn waarschijnlijk timing gerelateerde problemen. 

 

- Ongerelateerd aan de mini cassette, soms hangt mame voor een paar seconden.

SUPER!

 

Link naar bericht
Delen op andere sites
On 9/13/2020 at 11:21 PM, pokowaka said:

Dat is volgens mij de terugspoel routine. Ik ontdekte dat er in terug blok (0c61) routine iets vreemds aan de hand was. Hier zijn de stukjes:

 


;; Read the RDA state and set bit 5 in A
;; RDA_state | BET
;; Note when the tape is moving in reverse this actually gets the RDC bit.
get_rda:
      in       a,(cas_inp)    ;0cee    db  20
      and      080h           ;0cf0    e6  80
      set      5,a            ;0cf2    cb  ef
      ret                     ;0cf4    c9

      ;; This seems to read a byte when the tape is moving backwards.
      ;; Note that RDA <-> RDC when moving backwards.
      ;;
      ;; Args:
      ;;   A must contain the current state of RDC & BET
      ;;   D related to time we are willing to wait to see a byte.
      ;;
      ;; Returns:
      ;;   Sets the C flag in case of failure (beginning of tape, or tape removed.)
      ;;   Sets (caserror) with the actual error in case C is set
read_rev_byte:
      ld       c,008h         ;0cbf    0e  08        ; wait for at most 8 bits
rev_next_bit:
      xor      080h           ;0cc1    ee  80        ; Flip the expected RDA, we wait for next clock
      ld       h,a            ;0cc3    67           
l0cc4h:
      ld       b,000h         ;0cc4    06  00        ; Max time we are willing to wait for RDA clock signal, we loop 256 times
wait_for_rev_bit:
      ; Keep spinning until we have a bit flip
      in       a,(cas_inp)    ;0cc6    db  20        ;
      and      0b0h           ;0cc8    e6  b0        ; RDA, BET, CIP
      cp       h              ;0cca    bc            ; Is the clock state as expected?
      jr       z,rev_bit_available  ;0ccb    28  10  
      djnz     wait_for_rev_bit     ;0ccd    10  f7  ; Spin until RDA changes.
      and      030h           ;0ccf    e6  30        ; mask bet & cip
      cp       020h           ;0cd1    fe  20        ; this checks for errors.
      jr       nz,read_rev_err     ;0cd3    20  0d   ; Check if we are at the end, or cassette removed.
      dec      d              ;0cd5    15
      jr       nz,l0cc4h      ;0cd6    20  ec
      ld       a,h            ;0cd8    7c
      xor      080h           ;0cd9    ee  80
      inc      d              ;0cdb    14
      ret                     ;0cdc    c9
rev_bit_available:
      ;; This is called when we have a bit available..
      ld       a,h            ;0cdd    7c
      dec      c              ;0cde    0d
      jr       nz,rev_next_bit      ;0cdf    20  e0
      ret                     ;0ce1    c9  ; We have read 8 bits..

read_rev_err:
      ;; This happens when we hit the beginning of the tape, or if we
      ;; removed the tape while moving backwards.
      or       a              ;0ce2    b7
      ld       a,"E"          ;0ce3    3e  45   ; End of tape error
      jr       z,l0ce9h       ;0ce5    28  02
      ld       a,"A"          ;0ce7    3e  41   ; No tape
l0ce9h:
      ld       (caserror),a   ;0ce9    32  17  60
      scf                     ;0cec    37       ; Set the carry flag to indicate failure.
      ret                     ;0ced    c9

 

read_rev_byte lijkt alleen maar zinnig als het RDA bit wordt gebruikt als klok signaal. Wat blijkbaar ook het geval is.  Mame kan nu in ieder geval wav files schrijven en lezen, en een pull request is al open

https://github.com/mamedev/mame/pull/7215. Ik ben bezig met een converter van .cas -> wav zodat mame ook de cas files kan lezen.

 

Helaas bevatten de .cas files niet de checksum 😞

Ik zie dat de 'read_rev_byte' routine ook wordt aangeroepen om bytes te skippen als de tape vooruit loopt (in de block_forward code), dus jouw hypothese dat RDC op RDA staat als REV actief is, lijkt niet te kloppen.
Volgens mijn analyse worden 8 data-bit transities geskipt in beide richtingen...

Dat zou een oorzaak kunnen zijn van het zo nu en dan niet goed kunnen 'doorladen', omdat de skip forward zich in jouw implementatie net iets anders gedraagt.

NB:

Ik heb inmiddels de hele monitor gedisassembleerd en ge reverse engineered, en zal de .asm files toevoegen aan de github repo,

aangepast door HAL9000
typo
Link naar bericht
Delen op andere sites
On 9/22/2020 at 2:12 PM, HAL9000 said:

 

Ik heb inmiddels de hele monitor gedisassembleerd en ge reverse engineered, en zal de .asm files toevoegen aan de github repo,

Pull request is gemaakt, @dionoid is nu aan zet. hier een preview: https://github.com/p2000t/documentation/pull/4/commits/3571d9ca7a28ff7461443b5cbc5d2b026e1b9142

aangepast door HAL9000
Link naar bericht
Delen op andere sites

Hallo allemaal.
Sinds een paar maanden ben ik ook in het bezit van een P2000T en ik loop tegen twee probleempjes aan, en ik vroeg me af of iemand me soms kan helpen met wat informatie.

De verbinding van het moederbord naar de voeding en cassette gebeurt met rij 'kabelschoentjes' (vlakstekers, spade connector). De pitch is 2mm en de breedte van één zo'n steker is ongeveer 2,5 mm.
Ik kan het type van deze connectoren nergens vinden, laat staan ergens kopen. Het enige wat ik gevonden heb dat in de buurt komt is de "Spade terminal strip":  https://www.micros.com.pl/en/connectors/spade-terminal-strip 

Weet iemand de juiste naam of type van de connector in de P2000? En eventueel waar ze nog te krijgen zijn?

De andere vraag gaat over het programmeren van een eprom voor een cartridge. Ik heb daar weinig ervaring mee, maar het lukt me om zo'n eprom te branden, en als ik het dan teruglees klopt alles.
Weet iemand wat voor indeling de P2000 verwacht als ik de eprom op een cartridge zet? Als ik een BIN-bestand van https://github.com/p2000t/software/tree/master/cartridges haal, staan alle adressen dan al goed in de BIN-file? En moet ik dan eerst nog een byte-swap toepassen voordat ik brand?
Ik hoor het graag als iemand wat meer weet.

 

 

 

 

 

 

 

IMG_20200923_151900142~2.jpg

IMG_20200923_151923625~2.jpg

IMG_20200923_151927359~2.jpg

IMG_20200923_151930012~2.jpg

Link naar bericht
Delen op andere sites

Hoi Alex, waarom zou je de moeite nemen e.e.a. koste wat kost origineel te houden? Zowat ongetwijfeld lukt dat toch niet meer.

Ik heb alle voedingsconnectors al lang vervangen (niks gaat eeuwig mee) door geschikte paartjes. Kijk eens bij Conrad of Allekabels.

 

En de BINs zijn geschreven en geassembleerd specifiek voor de P2000, je hoeft er totaal niks aan te veranderen. Sterker nog: dat is ten zeerste af te raden. Die files zijn trouwens dumps van EPROM-inhoud.

 

Over welk slot-1-printje heb je 't, en welk type EPROM(s)? Als 't gaat om 4*2732 hoef je enkel op de volgorde te letten.

 

aangepast door cancom
Link naar bericht
Delen op andere sites

Bedankt voor je antwoord, Cancom.

22 uren geleden, cancom zei:

waarom zou je de moeite nemen e.e.a. koste wat kost origineel te houden? Zowat ongetwijfeld lukt dat toch niet meer

Ik denk dat je gelijk hebt, Cancom. Ik wou de oplossing zo universeel mogelijk maken, maar dat kan natuurlijk ook met moderne componenten.
Ik ga op zoek naar iets met dezelfde pitch, zodat de connectoren wel op de PCB gesoldeerd kunnen worden.
 

22 uren geleden, cancom zei:

Over welk slot-1-printje heb je 't, en welk type EPROM(s)? Als 't gaat om 4*2732 hoef je enkel op de volgorde te letten.

Ik heb de 4-in-1 cartridge gemaakt op basis van het schema op pagina 37 van https://github.com/p2000t/documentation/blob/master/programming/P²C²-PTC.pdf, en Maintenance2 op de 1e eprom gezet.
De eproms die ik geprobeerd heb zijn de Toshiba TMM27128AD-15 en de Fujitsu MBM27128-25. De data staat er goed op, en het ontwerp heb ik tig keer nagelopen, dus mijn hoop was dat het aan de manier van opslaan lag ;).

PCB_V2.thumb.jpg.2def885c2653b8d3a251f1a16218816c.jpg

Link naar bericht
Delen op andere sites
3 uren geleden, Alex zei:

Ik heb de 4-in-1 cartridge gemaakt

...

dat het aan de manier van opslaan lag

Begrijp ik goed dat je wil zeggen dat die maintenance niet opstart? Maar b.v. de basic-interpreter wel?

 

Enne... als jij de mogelijkheid hebt zo'n print te maken dan heb ik t.z.t. ook nog wel wat op stapel staan (eigenlijk zowat nu, al moet ik e.e.a. nog nalopen: vooral of ik de layout -in EAGLE- optimaal heb of nog not-so-much (momenteel 4laags). Kan je ook grotere prints fabriceren, tot +/- A4 aan toe...?

 

Link naar bericht
Delen op andere sites

Door jullie foto's herinnerde ik me opeens dat ik ook een paar printplaatjes had aangetroffen in een doos met P2000 spul.

3 stuks 8-in-1 printje:

8in1.thumb.jpg.e1106eeb16ca73f37b0d7cda4287d558.jpg

en 5 Centronics boards:

Centronics.thumb.jpg.27088b18533e29a7d76d5f09e9dd4f5c.jpg

In de doos zaten ook 4 niet-zo-standaard P2000 insteekmodules:

Cartridges.thumb.jpg.b639059b17bd2325236c387b4b40b103.jpg

Misschien dat de Centronics print een kopie is van die op de foto... 

Ik ga dat vanavond eens bekijken!

  

Link naar bericht
Delen op andere sites
18 uren geleden, cancom zei:

Begrijp ik goed dat je wil zeggen dat die maintenance niet opstart? Maar b.v. de basic-interpreter wel?

Nee, sorry. Dan ben ik niet duidelijk geweest. Het ging mij voornamelijk om de Maintenance rom, maar geen enkele ROM op mijn cart werkt.
Maar een normale Basic cartridge werkt wel. Ik ga alles nog een keer langslopen. Er zit niets anders op.

18 uren geleden, cancom zei:

Enne... als jij de mogelijkheid hebt zo'n print te maken dan heb ik t.z.t. ook nog wel wat op stapel staan (eigenlijk zowat nu, al moet ik e.e.a. nog nalopen: vooral of ik de layout -in EAGLE- optimaal heb of nog not-so-much (momenteel 4laags). Kan je ook grotere prints fabriceren, tot +/- A4 aan toe...?

Helaas. Ik maak de PCB niet zelf. Dat doet JLPCB voor me. :) Ik heb de layout gemaakt in KiCAD op basis van dat schema in P2C2-PTC. Dat moest wel, want ik zag maar 1 kant van de pcb in die nieuwsbrief.

De minimale afname bij JLPCB is 5. Bij een A4 formaat kom je boven de 22 euro uit, en dan moet je straks ook nog invoerrechten betalen. Dat wordt dan best prijzig. Schatting excl invoer:afbeelding.png.22a81e0f4299a0de529067d94430812f.png
Voor elke 5 boarden extra komt er dan ongeveer 25 euro bij.
Ben je iets voor de P2000 aan het maken? Want dan is hier misschien ook belangstelling, en is het bedrag hier misschien te delen.
 

Link naar bericht
Delen op andere sites
13 uren geleden, Alex zei:

geen enkele ROM op mijn cart werkt.

Op die foto valt me zojuist alsnog iets op: op die 5-pins header zit een TWEE-pins stekkertje... je hebt twee bits nodig. Ben je bijgeval de massa vergeten aan de meerstandenschakelaar...?

 

En ik heb nogal wat ontwerpen staan waarvan maar 2 specifiek voor de P2000, o.a. het MIDI-interface (Jeroen Hoppenbrouwers) dat ik dan eventueel ook maar op gaatjesprint ga maken; handmatig bedraad dus. Totnogtoe heb ik e.e.a. uitsluitend op die manier in elkaar gefrutst. Het andere heeft te maken met de M2200 en die blunder van Miniware i.v.m. de interruptstructuur.

 

Voor de rest gaat het om een berg chips uit o.a. P2000T's en een stokoude PC (286 ofzo) waarmee ik heel misschien ooit nog eens een multiprocessor-systeem -3*Z80, 6510- ga fabrieken. Tig prints, kostelijke grap...

 

aangepast door cancom
Link naar bericht
Delen op andere sites
  • 3 weeks later...

Ik heb ondertussen de MDCR aan de praat in mijn eigen emulator, was na dat gedisassembleer niet meer heel ingewikkeld...

 

Nu ben ik bezig met het scroll register. out &h3x , offset. Ik zie dat als je waardes groter dan 40 stuurt, die niet 'wrappen' maar dat er wat vreemd gedrag optreedt.

En bij een waarde van 128 en hoger wordt het hele scherm wit.

Weet iemand of dat gedrag ergens is gedocumenteerd?

 

Link naar bericht
Delen op andere sites
  • 3 weeks later...
Op 26-8-2020 om 22:37, pokowaka zei:

Als er geen rom in de P2000T steekt dan probeert de P2000t iets van cassette te laden (er verschijnt een T op het scherm). Kan iemand bevestigen of dit werkt?

 

 

 

 

 

 

Misschien had je al een antwoord, maar dan toch (ik ben niet zo snel ;-): als er geen cartridge in slot 1 zit, gaat de P2000 inderdaad op zoek naar een programma op cassette. Dat is dan uiteraard een programma die niet afhankelijk is  van een Cartridge. Dergelijke programma's hebben het "type" P / PGM (ipv B / BAS)...

... een voorbeeld is het spel GHOSTHUNT 2.0 (een pacman variant... veel gespeeld vroegah 😉 ).

PS: ik stik in de P2000's, dus als ik een keer een "hardware testje" voor je moet doen, laat het maar weten... (P2000T's in diverse smaken, een P2000M met floppies - op zolder, weet niet in hoeverre die het nog doet - een P2000C en een Philips :Yes (P2000V / P2056/04).

aangepast door dmr
Link naar bericht
Delen op andere sites
  • 3 weeks later...

Na een jaar of 30 weer eens een p2000t gekocht. 

Helaas is hier nogal in gerommeld. 

Iemand hier bekend met een cassette modificatie? 

Bij mij is er ergens een diode tussengezet en zijn er 2 schakelaartjes toegevoegd. 

De logica hiervan ontgaat mij totaal. 

De cassette drive werkt ook niet goed meer, hij spoelt alleen nog maar vooruit. Dus een inhoud opvragen gaat nog (tussen de leesfouten door) maar inladen gaat niet meer. 

Is er iemand die zijn p2000t open heeft liggen en voor mij wat foto's wil trekken van de connectors en de draden van de tapedrive? 

Alvast bedankt, 

Patrick

Link naar bericht
Delen op andere sites
  • 4 weeks later...
3 minuten geleden, Wijnand zei:

Zijn er misschien nog menseb die interesse hebben in deze PCB's? Tegen kostprijs en verzendkosten. Laat maar weten...

Groeten, Wijnand.

 

Misschien handig om nog eens op te sommen wat het precies kan en wat de kosten zouden zijn op dit moment.

Link naar bericht
Delen op andere sites

Zo is dat! ;)

Gaat om een reproductie van de orginele 4 x 2732 (zie schema) cartridges. Ze hebben mij 3.80 euro per stuk gekost, verzendkosten als brief 20-50 1.82. Het ontwerp in Eagle is open hardware.

Groeten...

Wijnand

4x2732.png

Link naar bericht
Delen op andere sites
  • 3 months later...

Hoi, 

Vanmiddag wat p2000t spulletjes gekregen. 

Naast wat casettes zat hier ook de cardridge "ecol 3.0" in. 

Het betreft een officiële Philips cardridge maar ik krijg er geen enkele info over gevonden. 

Iemand hier een idee? 

 

 

Link naar bericht
Delen op andere sites
  • 2 weeks later...
Op 13-4-2021 om 22:03, Wolf zei:

Hoi, 

Vanmiddag wat p2000t spulletjes gekregen. 

Naast wat casettes zat hier ook de cardridge "ecol 3.0" in. 

Het betreft een officiële Philips cardridge maar ik krijg er geen enkele info over gevonden. 

Iemand hier een idee? 

 

 

Het enige is een vermelding in TRON 3 over het vrijgeven van die module door het ministerie van onderwijs (samen met nog 2 andere). En dat Philips 500 van die dingen had klaarliggen...

Het valt te betwijfelen of e.e.a. nog van de grond gekomen is, misschien heb jij het enig overgebleven exemplaar nu in bezit; zou afkomstig kunnen zijn van iemand in een onderwijswerkgroep.

 

Zo te zien aan dat artikeltje gaat het evt. over een programmeermodule, iets met ECOLogie?

Ik vermoed dat het werkt onder CP/M wat zou betekenen dat je nogal wat nodig hebt: een CP/M-print, een floppycontroller-kaart en floppydrives, en evt. ook nog een floppy met bijbehorende systeemtrack(s).

 

In het nationaal archief zou heel misschien iets te vinden kunnen zijn; maar ja, 1985... Voor het overige zou je iemand moeten vinden die ermee te maken heeft gehad en nog de documentatie heeft liggen. Ook weinig kans.

 

Ben je in staat die ROM uit te lezen om een dumpfile te maken? Het lijkt me wel interessant daarin eens een duik te nemen om evt. een sourcefile te maken.

 

En het HCM in Helmond zou belangstelling kunnen hebben.

 

Link naar bericht
Delen op andere sites

Helaas kan ik je ook zelf niks meer vertellen. Ik heb ook wat gezocht op internet, hierbij mijn 2 cent:

 

Hier: https://forumindex.nl/techniek/memory-lane-mijn-eerste-eigen-computer-t98478.html

staat in een reactie: Ik mocht zowaar op school een computer cursus volgen, programmeren in ecol. 1972 (vereenvoudigde algol eigenlijk)

 

En in deze PDF: https://pure.tue.nl/ws/files/3119549/200810691.pdf

staat op pag. 314: ECOL Educational Computer Language

 

Het lijkt dus op een educatief in te zetten programmeertaal.

Dus dat het Ministerie van onderwijs er iets mee van doen had klinkt dan logisch...

 

aangepast door HAL9000
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...