Ga naar inhoud

HAL9000

Users
  • Aantal items

    112
  • Registratiedatum

  • Laatst bezocht

Berichten die geplaatst zijn door HAL9000

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

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

     

  3. 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?

     

  4.  

    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.

     

  5. 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?  

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

     

     

×
×
  • Nieuwe aanmaken...