Sida 36 av 51

Re: PDP8 Renovering

Postat: 13 mars 2012, 09:48:32
av anders_bzn
Tack,

Det är klart och testat redan. Jag knåpade ihop detta igår och testade:

Bild

Programmet tar data på serieporten och stoppar in det i minnet med start på adress 0100 tills minnet är fullt (7777). Sen börjar det att dumpa minnet från adress 0100-7777. Det motionerar ISZ, DCA, TAD en aning. Även indirekt adressering och serie interfacet. Något bra minnestest är det inte eftersom de bara använder åtta av tolv bitar. Programmet körde utan problem när jag bugg-fixat (rättningarna med bläck).

För övrigt skrivs det för lite kod på papper direkt i op-kod...

Re: PDP8 Renovering

Postat: 13 mars 2012, 16:48:58
av bqt
Notera alltså i ditt program att du har din temp på address 3. Så du sparar ditt inlästa data indirekt genom address 3, och sedan gör du en increment på address 3. Om du istället hade lagt temp i address 10-17 så hade du inte behövt göra en increment, eftersom det sker automatiskt på dom addresserna.

Re: PDP8 Renovering

Postat: 13 mars 2012, 17:04:27
av bqt
Ett par kommentarer till.
CLA på address 20 är överflödig.
Eftersom du även använder temp som loopräknare så skulle det i detta fall inte vara någon vinst att använda address 10-17 som pekare till vart du ska spara. Men rent allmänt är det just denna typ av saker som address 10-17 är till för.

Ett typfall är denna rutin, för att skriva ut en text:

Kod: Markera allt

/ PRINT - Skriv ut en sträng på konsolen.
/ Argument: Address till en sträng med ett tecken per ord. Aslutad med NUL.
/ Rturn: AC nollställd.
/
PRINT, 0
       CLA CMA
       TAD I PRINT
       DCA   10
       ISZ   PRINT
LOOP,  TAD I 10
       SNA
       JMP I PRINT
       TLS
       TSF
       JMP   .-1
       CLA
       JMP   LOOP
Och ett exempel på användning av denna rutin:

Kod: Markera allt

       .
       .
       JMS   PRINT
       TEXT
       .
       .


TEXT, "H,"E,"L,"L,"O," ,'W,"O,"R,"L,"D,"!,15,12,0

Re: PDP8 Renovering

Postat: 13 mars 2012, 17:56:13
av bqt
Äsch, eftersom jag har så kul med att hacka ihop små snuttar kod för PDP-8 kan jag ju likaväl slänga in en rutin som läser från konsol också.

Kod: Markera allt

/ INPUT - Läs en rad, avslutad med CR från konsol. Sparar strängen, ett ord per tecken, på angiven address. CR sparas inte
/ i bufferten. Inmatad sträng termineras med ett NUL.
/ Argument: Adress att spara sträng på
/ Retur: AC nollställd
/
INPUT, 0
       CLA CMA
       TAD I INPUT
       DCA   10
       ISZ   INPUT
LOOP,  KSF
       JMP   .-1
       KRB
       TAD   (-15
       SNA
       JMP   IEND
       TAD   (15
       DCA I 10
       JMP   LOOP
IEND,  DCA I 10
       JMP I INPUT
Och sedan kan man ju kombinera dom två rutinerna...

Kod: Markera allt

START, JMS   PRINT
       TXT1
       JMS   INPUT
       BUF
       JMS   PRINT
       TXT2
       JMS   PRINT
       BUF
       JMS   PRINT
       TXT3
       JMP   START

TXT1,  "N,"A,"M,"E,"?," ,0
TXT2,  "H,"E,"L,"L,"O," ,0
TXT3,  ".," ,"N,"I,"C,"E," ,"T,"O," ,"M,"E,"E,"T," ,"Y,"O,"U,".,15,12,0
BUF,
$
Förresten. TAD (15
är en artificiell väg att få PAL8 att generera konstanter. Så, detta betyder verkligen att man adderar 15 (oktalt) till AC.
PAL8 assemblerar detta genom att allokera en minnescell någonstans i minnet, där den lägger konstanten 15, och sedan blir det en TAD med den addressen där konstanten ligger.

Re: PDP8 Renovering

Postat: 13 mars 2012, 19:49:54
av anders_bzn
Jag trodde att jag förstått men det hade jag inte. Men jag gör det nu!

Jag inser också att CLA på 0020 är onödig eftersom DCA på 0015 nollställer AC.

Re: PDP8 Renovering

Postat: 13 mars 2012, 19:59:15
av bqt
Address 10-17 är som sagt var lite magiska, men användbara. Men det innebär också att det finns skäl att testa lite mer med dom.

Vänta bara tills du börjar med självmodifierande kod... :-)

Re: PDP8 Renovering

Postat: 13 mars 2012, 21:00:39
av anders_bzn
Jag testade detta just nu, det fungerar och visst det är lite magiskt!

Kod: Markera allt

0202 3410   /DCA 
0232 5202   /JMP .-1
Så single-steppar man och ser hur innehållet i 0010 inkrementeras!

Re: PDP8 Renovering

Postat: 13 mars 2012, 22:22:30
av anders_bzn
Så fortsatte jag med det oundvikliga, att planera för att klippa itu core-stacken.

Det finns en bra sida med bilder som dokumenterar minnet. Ett som dött av våld och sedan blivit dissekerat.
http://dustyoldcomputers.com/pdp-common/core/index.html

Bild
Bilden visar ett av tre minnes plan. varje fyrkant innehåller 4096 kärnor i en matris som är 64*64 kärnor. Eftersom det sitter två matriser i bredd går varje tråd igenom 128 kärnor. Varje fyrkant är en bit/4096 adresser.

Sen snodde jag bilden för att rita lite på:
Bild
Jag har tagit ur mitt minnespaket och mätt ut exakt vilken tråd det är som är av. Jag har också tittat på den med lupp och dragit slutsatsen att tråden är av inne i minnet och inte vid anslutningarna. Någonstans mellan A och B är tråden av. Jag får försöka kolla mer var den är av när jag delat kalaset, sen blir det väl att försöka trä i en ny tråd utan att ha söder något annat...

Re: PDP8 Renovering

Postat: 14 mars 2012, 10:04:19
av hcb
Burr, inget man gör dagen efter kvällen före, typ.

Skulle du kunna fiska upp den trasiga trådens ändar och löda på en ny tråd så att du kan dra igenom den nya tråden med hjälp av den gamla?

Re: PDP8 Renovering

Postat: 14 mars 2012, 15:29:08
av MiaM
Det har kanske redan avhandlats, men felet som kommer och går och till synes verkar hänga ihop med förlängningskorten låter som oxiderade kontakter.

Jag antar att du provat att göra rent dem på något vis?

Re: PDP8 Renovering

Postat: 14 mars 2012, 22:04:57
av anders_bzn
Kortkontakterna är rengjorda (avtorkade med sprit) dessutom är de förgyllda. Hur det ser ut i bakplanet vet jag inte, det går inte riktigt att se. Men att stoppa i och ur korten verkar ju ha hast viss inverkan.

Re: PDP8 Renovering

Postat: 15 mars 2012, 01:01:12
av MiaM
Jag skulle nog chansa på att spraya isopropanolspray i bakplanets kortplats plus på kort när de stoppas in. När det är en sånhär museigrej så är det nog en bra idé att läsa på och tänka efter först, isopropanol kan lösa upp t.ex. textmärkningar, smörjmedel o.s.v....

Man skulle ha nån slags "kontaktborste" som passar i kortplatser/kantkontakthonor.

Re: PDP8 Renovering

Postat: 17 mars 2012, 09:28:42
av limpan4all
När vi "lagade" guldfingerkontakter på luftvärnseldledningen som jag gjorde lumpen på så använde vi vanliga radergummin. Om det var kraftigt nedsmutsade kontaktfingrar så använde vi radergummi för tusch (ritfilm).
Funkar skitbra, efter det så kan man använda isopropanol om man vill.

Re: PDP8 Renovering

Postat: 17 mars 2012, 09:33:59
av Nerre
Det ska väl vara såna här rödbruna radergummi eller klassiska gröna "skolsudd", vita modeller tror jag inte fungerar.

Re: PDP8 Renovering

Postat: 17 mars 2012, 12:20:47
av sodjan
Det stämmer, det ska vara de där lite grövre radergummina.
Inte moderna syntetiska som bara "kladdar".
Under min tid hos Ericsson hände det att vi hade processproblem
i gultplätteringen av kontaktfingrar på mönsterkort, vilker gjorde
att vi hade några killar som reste jorden runt med en väska
radergummin och "suddade" kontaktfingrar i stationer. Jag har för
mig att själva guldplätteringar var OK, men det hade kommit ett
smutslager ovanpå, så efter rengöring så var det OK igen.