Restaurera en PDP11/04

Berätta om dina pågående projekt.
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

MiaM skrev:Härligt med framsteg!

Kan man inte slänga in CBOOT-snutten först på bandet, i det format som rom kan ladda?
Problemet är att CBOOT tydligen måste ligga på adress 001000. PROM booten laddar allt till adress 00000. I så fall måsta man skriva om PROM-booten.

Jag gick inte in helt i detalj varför det inte fungerade med PROM boot och PRELDR. Det kan nog vara så att man kan skriva om PRELDR så att den fungerar med PROM-boot. En gissning är att CBOOT aktiverar interrupt på något sätt och när det kickar in så modifierar ISRen PRELDR så att den kommer vidare. Kräver vidare studier.
MiaM
Inlägg: 9980
Blev medlem: 6 maj 2009, 22:19:19

Re: Restaurera en PDP11/04

Inlägg av MiaM »

Kort extra kodsnutt före CBOOT, i samma "fil", som flyttar laddad kod till adress 1000 (exkl flytt-delen givetvis) :wink:

Det här känns lite som LOAD "nnn",8,1 på Commodore-8-bit-tiden :) (Den sista ,1 säger att programmet ska laddas på den adress det sparades från, default är att relokera)
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

MiaM skrev:Kort extra kodsnutt före CBOOT, i samma "fil", som flyttar laddad kod till adress 1000 (exkl flytt-delen givetvis)
Varför inte. Ingen dum idé!

PROM boot läser in patchad CBOOT som börjar med att flytta sig till 001000. Patchen måste också läsa in nästa 128 bytes block som innehåller PRELDR till adress 000000 och därefter hoppa till 000000, dvs ungefär som CBOOT fast den ska inte göra någon rewind och space forward. Kan gå med lite pillande. Man måste få in allt i ett block om 128 bytes där 56 bytes tas upp av CBOOT. Man har 72 bytes att spela på.

Kod: Markera allt

.TITLE	CBOOT (CAPS-11)	V01-07	6/20/73	
;
; PDP-11 CASSETTE BOOTSTRAP
;
; COPYRIGHT 1973 DIGITAL EQUIPMENT CORPORATION,
; MAYNARD, MASSACHUSETTS 01754
;
; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
;
; DEC-11-OTCBA-A-LA
;
; BY: P. JANSON
;
;  CBOOT WILL LOAD AND SUCCESSFULLY START ANY PROGRAM WHICH
;   IS WRITTEN IN 'CBOOT LOADER FORMAT' AND IS CONTAINED
;   ENTIRELY IN A 128. (DECIMAL) BYTE RECORD WHICH IS THE
;   FIRST DATA RECORD OF THE FIRST FILE OF A CASSETTE.
;
;  'CBOOT LOADER FORMAT' PROGRAMS ARE DEFINED TO BE THOSE
;   OF LENGTH LESS THAN OR EQUAL TO 128. BYTES WHICH ARE
;   LINK'ED TO BE LOADED STARTING AT LOCATION 0,
;   WHICH START AT THE FIRST INSTRUCTION AND WHOSE FIRST
;   INSTRUCTION IS 'NOP' (=000240).  CBOOT VERIFIES THAT
;   THE FIRST BYTE IN THE PROGRAM IS 240, AS A MEANS TO
;   DETECT ACCIDENTAL ATTEMPTS TO BOOT A WRONG PROGRAM.
;
;  ON ANY I/O ERROR OR FAILURE TO FIND '240' AS THE FIRST BYTE
;   IN THE PROGRAM TO BE LOADED, CBOOT HALTS AT LOCATION
;   'CBOOT'+50.  AT SUCH TIME, LOCATION 0 (WHICH WILL CONTAIN
;   THE FIRST BYTE OF THE PROGRAM TO BE LOADED) OR THE TACS
;   (=777500) MAY BE QUERIED TO DETERMINE CAUSE OF ERROR.
;   RETRY AFTER ERROR BY HITTING CONSOLE CONTINUE SWITCH
;   WHICH RESTARTS CBOOT AT 'RESTRT'.
;
;  CBOOT IS POSITION INDEPENDENT AND MAY BE EXECUTED FROM AN
;   OPTIONAL HARDWARE CASSETTE BOOTSTRAP ROM OR LOADED ANYWHERE
;   IN CORE EXCEPT LOCS. 0 THROUGH 177 (FOR PROGRAM TO
;   BE BOOTED).  DOCUMENTATION
;   WILL SUGGEST LOADING AT 1000 SINCE THAT IS A HANDY, ROUND
;   NUMBER.  NOTE THAT CBOOT WILL COMMONLY LOAD PRELDR WHICH WILL
;   COMMONLY LOAD CABLDR AND A COPY OF CBOOT INTO HIGHEST CORE.
;   THUS, CBOOT IS PRESERVED IN HIGHEST CORE FOR FUTURE ACCESS.
;   IT MAY BE STARTED AT LOC. XX710 WHERE XX IS AS EXPECTED
;   FOR A GIVEN CORE SIZE.
;
;  OPERATING INSTRUCTIONS:
;	1] KEY IN CBOOT STARTING AT LOC. 1000.
;	2] PLACE 1000 IN SWITCH REG. AND PRESS 'LOAD ADDRESS'.
;	3] PLACE PROPER CASSETTE ON UNIT 0.
;	4] PRESS 'START'.
;
;  N.B.:  TO BOOT FROM UNIT #1 OR FROM SOME OTHER CONTROLLER,
;   SET UP R0 WITH THE DESIRED CONTROLLER ADDRESS AND SET THE
;   UNIT SELECT BIT AS DESIRED, THEN START THE BOOTSTRAP AT THE
;   THIRD INSTRUCTION.  PRELDR AND CABLDR WILL USE R0 AS SET-UP AT
;   BOOTSTRAP TIME TO CONTINUE LOADING FROM THE SELECTED UNIT.
;
;  CBOOT DOES A REWIND, SPACES FORWARD A RECORD (TO SKIP OVER
;   HEADER OF FIRST FILE), AND STARTS READING THE NEXT RECORD.
;   A CRC CHECK IS MADE AT THE END OF THE RECORD.
;
; SIZE = 28. WORDS
;
	.GLOBL	CBOOT
;


	.CSECT
;
R0=	%0
R1=	%1
R2=	%2
R3=	%3
PC=	%7
TACS=	177500		;TA-11 CONTROL AND STATUS REG.
;


CBOOT:	MOV	#TACS,R0
	CLR	(R0)		;SELECT UNIT #0
RESTRT:	MOV	PC,R1		;USE FOR PIC
	ADD	#TABLE-.,R1	;R1 HOLDS ADDR. OF COMMAND TABLE
	MOV	#375,R2		;MEMORY PTR. AND DATA FLAG
	MOVB	(R1)+,R3	;TEST BITS
;
LOOP1:	MOVB	(R1)+,(R0)	;COMMAND FROM TABLE TO TACS
	BMI	DONE		;WHEN COMMAND CODE NEG., QUIT
LOOP2:	BITB	R3,(R0)		;TEST READY AND T-REQ. BITS IN TACS
	BEQ	LOOP2		;LOOP 'TILL SOMETHING COMES UP
	INCB	R2		;ADVANCE MEMORY PTR.
	BMI	LOOP1		;IF MINUS, TRY NEXT COMMAND
	MOVB	2(R0),(R2)	;READ DATA INTO MEMORY
	CMPB	R3,@#0		;FIRST BYTE READ SHOULD BE '240'
	BEQ	LOOP2		;IF O.K., GO READ ANOTHER BYTE
STOP:	HALT			;HALT ON ERROR
	BR	RESTRT		;RESTART ON CONTINUE
;
DONE:	TST	(R0)		;CHECK FOR ERROR
	BMI	STOP		;HALT ON ERROR
	CLR	PC		;= 'JMP @#0'
;
TABLE:	.WORD	17640		;.BYTE 240: READY+T-REQ.
				;.BYTE  37: ILBS+READY+GO
	.WORD	2415		;.BYTE  15: SFB+GO
				;.BYTE   5: READ+GO
	.WORD	112024		;.BYTE  24: READ+ILBS
				;.BYTE 224: READ+ILBS+E.O.TABLE

	.END
bqt
Inlägg: 217
Blev medlem: 14 juni 2011, 11:54:44
Skype: sillbit
Ort: Zürich

Re: Restaurera en PDP11/04

Inlägg av bqt »

Hmm. Jag fattar inte riktigt varför inte ROM-booten klarade av att boota bandet.

CBOOT kan inte ligga på address 0, det är jag med på, eftersom den läser in data från band, och lägger det datat på address 0.
Men jag skulle ju anta att ROM-booten gör samma sak. Dvs, läs från band och lägg på adress 0. I princip så borde ROM booten vara identisk med CBOOT. Och ROM-booten ligger inte på address 0.
Såvida inte ROM-booten blir matad med en kopia av CBOOT, som i sin tur börjar tugga från address 0. Men det skulle ju vara trasigt. CBOOT borde inte ligga på bandet.

Kan någon förklara vad jag missat?
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

bqt skrev:Hmm. Jag fattar inte riktigt varför inte ROM-booten klarade av att boota bandet.

CBOOT kan inte ligga på address 0, det är jag med på, eftersom den läser in data från band, och lägger det datat på address 0.
Men jag skulle ju anta att ROM-booten gör samma sak. Dvs, läs från band och lägg på adress 0. I princip så borde ROM booten vara identisk med CBOOT. Och ROM-booten ligger inte på address 0.
Såvida inte ROM-booten blir matad med en kopia av CBOOT, som i sin tur börjar tugga från address 0. Men det skulle ju vara trasigt. CBOOT borde inte ligga på bandet.

Kan någon förklara vad jag missat?
Tyvärr kan jag inte förklara vad som händer. CT boot på M9312 kortet är väldigt lik CBOOT.

Kod: Markera allt

       1                                	.title	M9312 'CT' BOOT prom for TA11/TU60 controller
       2                                
       3                                	; This source code is an exact copy of the DEC M9312 23-761A9 boot PROM.
       4                                	;
       5                                	; This boot PROM is for the TA11 controller with TU60 drives.
       6                                	;
       7                                	; Multiple units and/or CSR addresses are supported via different entry points.
       8                                	;
       9                                	; Standard devices are 82S131, Am27S13, 74S571 or other compatible bipolar
      10                                	; PROMs with a 512x4 TriState 16pin DIP architecture. This code resides in
      11                                	; the low half of the device; the top half is blank and unused.
      12                                	;
      13                                	; Alternatively, 82S129 compatible 256x4 TriState 16pin DIP devices can be
      14                                	; used, as the uppermost address line (hardwired low) is an active low chip
      15                                	; select (and will be correctly asserted low).
      16                                
      17 177500                         tacsr	=177500				; std TA11 csrbase
      18                                
      19 000000                         tacs	=+0				; control/status
      20 000002                         tadb	=+2				; data buffer
      21                                
      22 165564                         diags	=165564				; console diags phase2 entry
      23                                
      24                                	.asect
      25 173000                         	.=173000
      26                                
      27                                	; --------------------------------------------------
      28                                
      29 173000    124     103          start:	.ascii	"TC"			; device code (reversed)
      30                                
      31 173002 000176                  	.word	last-.			; offset to next boot header
      32                                
      33 173004 000261                  dl0n:	sec				; boot std csr, unit zero, no diags
      34 173006 012700  000000          dl0d:	mov	#0,r0			; boot std csr, unit zero, with diags
      35 173012 012701  177500          dlNr:	mov	#tacsr,r1		; boot std csr, unit <R0>
      36 173016 010704                  dlNb:	mov	pc,r4			; boot csr <R1>, unit <R0>
      37 173020 103042                  	bcc	diag			; br if diags requested
      38 173022 000402                  	br	go			; return to (R4)+2 from diags
      39                                					; then skip over pseudo reboot vector
      40                                
      41                                	; --------------------------------------------------
      42                                
      43 173024 173000                  	.word	173000			; prom start addess @ 24
      44 173026 000340                  	.word	340			; and priority level @ 26
      45                                
      46                                	; --------------------------------------------------
      47                                
      48 173030 010003                  go:	mov	r0,r3			; copy unit number
      49 173032 042703  177776          	bic	#^c1,r3			; mask to 0/1
      50 173036 000303                  	swab	r3			; to high byte
      51 173040 010311                  	mov	r3,(r1)			; to controller<8>
      52                                
      53 173042 010405                  	mov	r4,r5			; r4=r5=173x20
      54 173044 042705  000177          	bic	#177,r5			; r5=173x00
      55 173050 062705  000132          	add	#table-start,r5		; offset to table start
      56 173054 012702  000375          	mov	#375,r2			; -2 as a byte
      57 173060 112503                  	movb	(r5)+,r3		; R3=240
      58                                
      59 173062 112511                  2$:	movb	(r5)+,(r1)		; send 037,015,005,024,224
      60 173064 100407                  	bmi	4$			; exit if last command
      61                                
      62 173066 130311                  3$:	bitb	r3,(r1)			; check trreq<7> or ready<5>
      63 173070 001776                  	beq	3$			; loop if neither
      64                                
      65 173072 105202                  	incb	r2			; count from -2,-1,0,...,177
      66 173074 100772                  	bmi	2$			; loop twice
      67                                
      68 173076 116112  000002          	movb	tadb(r1),(r2)		; write data byte in buffer
      69 173102 000771                  	br	3$			; loop
      70                                
      71 173104 005711                  4$:	tst	(r1)			; check error<15>
      72 173106 100404                  	bmi	5$			; br if error
      73                                
      74 173110 005002                  	clr	r2			; point at address zero
      75 173112 120312                  	cmpb	r3,(r2)			; check for NOP=240 there
      76 173114 001001                  	bne	5$			; br if not, not a boot block
      77                                
      78 173116 005007                  	clr	pc			; jump to bootstrap start
      79                                
      80 173120 000005                  5$:	reset				; reset controller
      81 173122 000164  000002          	jmp	2(r4)			; and retry the boot
      82                                
      83                                	; --------------------------------------------------
      84                                
      85 173126 000137  165564          diag:	jmp	@#diags			; jump to console diags
      86                                
      87                                	; --------------------------------------------------
      88                                
      89 173132    240                  table:	.byte	240			; trreq<7>+ready<5> AND NOP
      90 173133    037                  	.byte	037			; ilbs+rewind+go command
      91 173134    015                  	.byte	015			; spaceforwardblock+go command
      92 173135    005                  	.byte	005			; read+go command
      93 173136    024                  	.byte	024			; ilbs+read command
      94 173137    224                  	.byte	224			; ilbs+read command + 200
      95                                
      96 173140 000000  000000  000000  	.word	0,0,0,0,0,0,0,0		; unused
         173146 000000  000000  000000  
         173154 000000  000000          
      97 173160 000000  000000  000000  	.word	0,0,0,0,0,0,0		;
         173166 000000  000000  000000  
         173174 000000                  
      98                                
      99                                	; --------------------------------------------------
     100                                
     101 173176                         	.=start+176
     102 173176 022763                  crc16:	.word	<022763>		; CRC-16 will go here
     103                                
     104                                last:	; next boot prom starts here
     105                                
     106                                	.end
     106                                
Detta är PRELDR koden. PRELDR är alltså den 128 första byten i CTLOAD.SYS filen.

Kod: Markera allt

>		000000	nop
>		000002	br	000010
		000004	.word	000030
		000006	halt
>		000010	mov	#000500,sp
>		000014	clr	r4
>		000016	mov	sp,r5
>		000020	tst	(r4)             < causes trap 4/6 as part of memory sizing 
>		000022	add	#020000,r4
>		000026	br	000020
>		000030	mov	#000130,r3
>		000034	clr	r2
>		000036	mov	#000200,r1
>		000042	movb	#000005,(r0)
>		000046	jsr	pc,(r3)              > label_1
		000050	movb	000002(r0),(r5)+
		000054	jsr	pc,(r3)
		000056	dec	r2
		000060	bmi	000112
		000062	bne	000072
		000064	mov	sp,r5
		000066	mov	r1,r2
		000070	dec	r2
		000072	dec	r1
		000074	bne	000050
		000076	bisb	#000020,(r0)
		000102	jsr	pc,(r3)
		000104	tst	r2
		000106	bne	000036
		000110	jmp	(r4)
		000112	bit	#000001,r5
		000116	bne	000072
		000120	mov	-(r5),r2
		000122	sub	r2,r4
		000124	mov	r4,r5
		000126	br	000072
> label_1 	000130	bit	#100240,(r0)
> 		000134	beq	000130
		000136	bmi	000142
		000140	rts	pc
		000142	mov	(r0),r4
		000144	halt
		000146	tst	(sp)+
		000150	movb	#000007,(r0)
		000154	jsr	pc,(r3)
		000156	movb	#000015,(r0)
		000162	jsr	pc,(r3)
		000164	inc	(r0)
		000166	jsr	pc,(r3)
		000170	br	000010
		000172	swab	@-(sp)
		000174	rol	r2
		000176	swab	@-(sp)
Instruktioner märkta med ">" är de som jag ser exekveras när jag stegar i koden med E11. Den liksom hänger runt 130/134 och jag begriper inte vad den ska göra här. Jag misstänker att även den riktiga maskinen stannar just här om man bootar med M9312 booten.
bqt
Inlägg: 217
Blev medlem: 14 juni 2011, 11:54:44
Skype: sillbit
Ort: Zürich

Re: Restaurera en PDP11/04

Inlägg av bqt »

Mjaha. Det var ju fånigt. PRELDR antar att CSR finns i R0 när den startar. ROM-boot lägger CSR i R1, och unit # i R0...

Ja, då var den frågan utredd. När den stannar efter ROM boot, så är det bara att halta, ladda R0 med CSR, och starta om från address 0, skulle jag tro, utan att kika på om några andra hyss görs...
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

bqt skrev:Mjaha. Det var ju fånigt. PRELDR antar att CSR finns i R0 när den startar. ROM-boot lägger CSR i R1, och unit # i R0...

Ja, då var den frågan utredd. När den stannar efter ROM boot, så är det bara att halta, ladda R0 med CSR, och starta om från address 0, skulle jag tro, utan att kika på om några andra hyss görs...
Tusan, det har du rätt i! Jag tyckte det var väldigt märkligt att den skrev in 5 i adress 000000. Måste säga att det var väldigt dumt att PROM booten inte är samma som CBOOT. Jag får patcha PRELDR så den passar ihop med PROM booten.
bqt
Inlägg: 217
Blev medlem: 14 juni 2011, 11:54:44
Skype: sillbit
Ort: Zürich

Re: Restaurera en PDP11/04

Inlägg av bqt »

CAPS-11 som är gammalt. :-)
Det är (eller blev) en konvention för PDP-11 att CSR för bootdevice lades i R1 vid boot.
Exakt registerkonvention vid boot är säkert dokumenterad någonstans, men jag har inte riktig koll på det såhär. Men CAPS-11 skrevs nog innan det var etablerat.
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

Kassettearkeologi

Att patcha CTLOAD.SYS så den kunde boota direkt med den inbyggda PROM bootstrapen innebar att både göra en liten förändring av PRELDR och dessutom en minimal patch på CABLDR. Nu har jag en CTLOAD.SYS som fungerar fint.

Jag hade två gamla kassetter som jag fick med driven för länge sedan. Det var ju lite spännande att se vad som låg på dem. Den första kassetten märkt "S LMS 2 KOP" fungerade fint att läsa i CAPS-11:

Kod: Markera allt

010000 051415 177714 000002
@CT

CAPS-11 V01-02

.DA 27-MAR-14

.DI CT1:

 27-MAR-14

CTLOAD SYS 07-JAN-75
CAPS11 S8K 07-JAN-75
PIP    SRU 07-JAN-75
EDIT   SLG 07-JAN-75
LINK   SRU 07-JAN-75
ODT    SLG 07-JAN-75
PAL    SRU 07-JAN-75
BASIC  LDA 07-JAN-75

.
Ett nästan 40 år gammalt band med innehåll på. Jag gjorde ett försök att kopiera kassetten och lägga in min bootstrap, men det gick inte. Den läste in CAPS11.S8K men sedan hängde den. Kanske den är byggd för en något annorlunda miljö?

För att dumpa ut det byggde jag vidare på mina tu60tools så att man nu kan läsa ut fil för fil till en annan maskin via serieport. Det var en del strul att debugga koden, man fick ju knappast någon fin stack trace när det gick åt skogen. Mitt verktyg kunde till slut läsa ut en fil felfritt och jag dumpade då kassetteinnehållet:
Jag disassemblerade innehållet i CTLOAD.SYS. Den var nästan identisk med den jag arbetat tidigare med. Något mindre. BASIC.LDA verkar innehålla paper tape BASIC. Gör man strings på filen hittar man "PDP-11 BASIC, VERSION 007A".

Den andra kassetten var mer skadad. Jag lyckades extrahera denna lilla snutt PDP-8 program:

Kod: Markera allt

TO +1 IF HIGH TEST
        DCA   TEST
        TAD   TABNO
        AND   P777
        DCA   TABNO     /SAVE TABLE NUMBER
        TAD   LTAB
        DCA   TCORE     /SET CORE ADDRESS
        CLL
        CIF
        JMS I TABLE     /READ LIMIT TABLES
TABNO,  0
TCORE,  0
        CLA CLL
        CDF
        TAD I BAND1     /FETCH
NUMBER OF
        DCA   B1        /CHANNELS FROM MEM0
        TAD I BAND2
        DCA   B2
        JMS I RSETDF
        IAC
        JMS   COMWRD    /FETCH BATCH TRAIN NO
        SPA CLA         /RELOCATE OUTER BAND?
        JMP   INNER     /NO - INNER
        DCA   CHNO      /YES - SET 1:ST CHANNEL NUMBER
        TAD   B1        /FETCH CHANNEL COUNTER
        JMP   BOTH
INNER,  TAD   B1        /CALCULATE FIRST CHANNEL NO
        CIA
        DCA   CHNO
        TAD   B2        /FETCH CHANNEL COUNTER
BOTH,   DCA   CHCNT     /SAVE COUNTER ON PAGE ZERO
        TAD   P5
        JMS   COMWRD    /FETCH CHANNEL NUMBER
        SNA             /ZERO?
        JMP   ALL       /YES - TEST ALL ON ONE BAND
        TAD   M1        /NO - SAVE CORRECT
        DCA   CHNO      /CHANNELNUMBER
        TAD   M1
        DCA   CHCNT /SET COUNTER TO -1
        SKP
SINGLE, CLA IAC         /SET AC TO 11
ALL,    TAD   P10       /SET AC TO 10
        JMP I RELO      /RELOCATE
ACLEAR, DCA I TEMP      /CLEAR RCLEAR IN COMMAND BUFFER
        ISZ   TADDR     /SET POINTER TO CORRECT
        CDF             /ADD TERM IN TBTAB
        DCA I TADDR        /ZERO ADD TERM
        JMS I RSETDF    /RESET DATA FIELD
        NOP
        CMA
        DCA   QCPFEL
        JMS I DCWAIT
        TAD   QCP       /INDICATE READY
        CIF
        CLL
        JMS I MONDSC    /RETURN TO QCP
        HLT             /SECURITY HALT
COMWRD, 0               /ADD TERM IN AC
        TAD   COMAND
        DCA   TEMP      /ADDR IN COMAND BUFFER
        TAD I TEMP      /FETCH COMAND WORD
        JMP I COMWRD    /TO AC AND RETURN

/CONSTANTS:
BAND1,  66    /PAGE0, MEM0
BAND2,  67              /  "      "
B1,     0
B2,     0
TEMP,   0
P3,     3
P4,     4
P5,     5
P10,    10
P50,    50
P51,    51
P52,    52
P54,    54
P55,    55
P77,    77
P777,   777
P3777,  3777
P6000,  6000
M1,     -1
M2,     -2
M2001D, -3721
QCP,    4023            /AUT
OSTART QCP

$
Nu när maskinen verkar fungera hyffsat är nästa steg att restaurera en passande terminal. Jag har en LA30 Decwriter som är en passande kandidat!
Senast redigerad av MattisLind 28 mars 2014, 20:13:51, redigerad totalt 1 gång.
Användarvisningsbild
Oskar
Inlägg: 1805
Blev medlem: 6 september 2005, 15:11:36
Ort: Storsjö, Sorsele

Re: Restaurera en PDP11/04

Inlägg av Oskar »

Gratulerar till framgångarna!
Det är lite spännande att gå igenom gammal lagringsmedia och se vad man hittar, eller hur? :)
Användarvisningsbild
säter
Inlägg: 32561
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Restaurera en PDP11/04

Inlägg av säter »

Synd att jag kastade min Decwriter.
MiaM
Inlägg: 9980
Blev medlem: 6 maj 2009, 22:19:19

Re: Restaurera en PDP11/04

Inlägg av MiaM »

Ja, vi är nog många som kastat eller på annat gjort oss av med gammal datorhårdvara som hade varit kul att ha idag.

Min lärdom är att ifall man t.ex. av utrymmesskäl är tvungen att kasta en av två äldre prylar så är det oftast bäst att kasta den nyare, för den behöver safta till sig längre innan den når kultstatus.
MattisLind
Inlägg: 742
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av MattisLind »

Decwriter LA30
Oskar skrev:Gratulerar till framgångarna!
Det är lite spännande att gå igenom gammal lagringsmedia och se vad man hittar, eller hur?
Tackar. Ja, visst är det spännande att se vad folk kodade ihop för 40 år sedan. Lite märklig känsla att veta att folk satt och kodade i miljöer som CAPS-11. Syntaxhighlighting, interaktiva debuggers, Eclipse, etc etc släng er i väggen. Här kör vi hardcore. Radeditor och 5 minuter för att assemblera ett program. Hur man debuggar med ODT vågar jag inte tänka på.
säter skrev:Synd att jag kastade min Decwriter.
Ja, det var synd. Här kan du få återuppliva minnet!

DEC byggde Decwriter (I) som en egen ersättning för den välkända teletypen som konsolskrivmaskin. LA30 var sannolikt den första skrivande terminalen som använde punktmatrisskrivare. Centronics hade något år tidigare gjort en vanlig skrivare, 101, med punktmatris.

Bild

Härligt strömlinjeformad och rejält tung. Chassit är i pressgjuten aluminium och stativet likaså. Kåpan är gjord av glasfiberarmerad plast.
Vår maskin är enligt typskylten en LA30P, dvs parallell. Jag lät mig luras av att till höger om tangentbordet sitter tre omkopplare, varav en för baudrate. Kan den vara ombyggd senare? Jag vet inte. Ett som är säkert är att det fattas två kort för att kunna ha den som serieterminal.

Bild

Hela skrivaren styrs av logiken ovan. Bara en massa TTL chip.

Efter lite rengöring ser tangentbordet riktigt trevligt ut. Lite lustig tangentbordlayout får man väl säga.
Bild
Tangentbordet har en egen tagentbordsavkodare och teckengenerator från SMC. Stiligt chip får man nog lov att säga. Riktigt retro.

Jag började med att montera ur kondensatorerna för formering. En av dem har en 0,5 mA läckström efter en dag. De övriga har knappt någon läckström alls. Borde vara OK.
Sedan gjorde jag rent själva punktmatrishuvudet. Ska försöka prova det så det inte kärvar på något vis. Kanske man bara kan lägga på lite svag ström och se om det händer något? Alla spolarna mäter 2,6 ohm, vilket borde vara ett gott tecken.

Ett grundläggande problem är att denna är parallell. Egentligen måste jag ha ett M7910 kort i min PDP-11 för att det ska fungera. Jag har inget, tyvärr. Någon som har?
Annars kan jag försöka skaffa de två kort som fattas för seriekommunikation i terminalen. Nästan ännu svårare skulle jag tro. Kanske det enklaste är att bygga något enkelt med ett Arduino kort. Borde vara en smal sak kan man tycka.
Användarvisningsbild
säter
Inlägg: 32561
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Restaurera en PDP11/04

Inlägg av säter »

"Ja, det var synd. Här kan du få återuppliva minnet!"

Nja, det var inte den modellen jag kastade.
Förmodligen var min lite nyare.
Inte fullt så djup, och liggande A4, traktormatat.

Jag har fortfarande ett hål uppsågat i skrivbordsskivan där jag matade upp papperet till Decwritern. :)

Har din modell RS-232?
Användarvisningsbild
anders_bzn
Inlägg: 5462
Blev medlem: 17 december 2008, 19:22:18
Ort: Kävlinge
Kontakt:

Re: Restaurera en PDP11/04

Inlägg av anders_bzn »

Säter: Då var det kanske en DECWriter II: http://www.vintagecomputer.net/digital/ ... ter-II.jpg

En sådan har jag, men den är trasig och är i uselt skick. Så uselt så jag funderat på att göra reservdelar av den.
Skriv svar