Research V5 development
authorKen Thompson <ken@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
committerKen Thompson <ken@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
Work on file usr/mdec/dtf.s

Synthesized-from: v5

usr/mdec/dtf.s [new file with mode: 0644]

diff --git a/usr/mdec/dtf.s b/usr/mdec/dtf.s
new file mode 100644 (file)
index 0000000..64f2b73
--- /dev/null
@@ -0,0 +1,337 @@
+/ unix DEC-tape time/mtrack track formatter
+
+nword = 256.
+nblock = 578.
+endz = 7200.
+
+ps = 177776
+tcst = 177340
+tccm = 177342
+tcwc = 177344
+tcba = 177346
+tcdt = 177350
+
+       mov     r5,savr5
+       mov     sp,savsp
+
+start:
+       mov     savr5,r5
+       mov     savsp,sp
+       jsr     pc,4(r5)
+               <set up to format on drive 0\n\0>
+               .even
+
+       clr     r0
+       mov     $cobtab,r1
+1:
+       jsr     pc,bcomobv
+       mov     r2,(r1)+
+       inc     r0
+       cmp     r0,$512.
+       bne     1b
+
+       mov     $buffer,r0
+1:
+       mov     $-1,(r0)+
+       cmp     r0,$buffer+nword+nword
+       blo     1b
+
+       mov     savr5,r5
+       jsr     pc,2(r5)
+
+       mov     $340,ps
+       mov     $tcdt,r5
+       mov     $13,tccm
+       jsr     pc,flag
+
+/ 8Kch for end zone
+
+       mov     $endz,r4
+1:
+       jsr     r0,mtrack; 101101
+       dec     r4
+       bne     1b
+
+/ foreward guard
+
+       mov     $199.,r4
+1:
+       jsr     r0,mtrack; 10101
+       dec     r4
+       bne     1b
+
+/ blocks
+
+       mov     $nblock,r3
+1:
+       jsr     r0,mtrack; 10101
+       jsr     r0,mtrack; 10110
+       jsr     r0,mtrack; 11010
+       jsr     r0,mtrack; 01000
+       jsr     r0,mtrack; 01000
+       jsr     r0,mtrack; 01000
+       jsr     r0,mtrack; 01000
+       mov     $nword-4,r4
+2:
+       jsr     r0,mtrack; 111000
+       dec     r4
+       bne     2b
+       jsr     r0,mtrack; 111011
+       jsr     r0,mtrack; 111011
+       jsr     r0,mtrack; 111011
+       jsr     r0,mtrack; 111011
+       jsr     r0,mtrack; 101001
+       jsr     r0,mtrack; 100101
+       jsr     r0,mtrack; 10101
+       dec     r3
+       bne     1b
+
+/ rear guard
+
+       mov     $199.,r4
+1:
+       jsr     r0,mtrack; 10101
+       dec     r4
+       bne     1b
+
+/ rear end zone
+
+       mov     $endz,r4
+1:
+       jsr     r0,mtrack; 10010
+       dec     r4
+       bne     1b
+       clr     tccm
+
+/ end of mtrack pass
+/ go back 12 blocks
+
+       mov     $12.,r0
+       mov     $4002,tccm
+1:
+       incb    tccm
+       jsr     pc,flag
+       dec     r0
+       bne     1b
+
+/ put comobv(nblock-1) in everything
+/ up to end zone
+
+       mov     $nblock-1,r0
+       mov     r0,bn
+       jsr     pc,comobv
+       mov     $17,tccm
+       jsr     pc,flag
+1:
+       movb    r1,tcst
+       mov     r0,(r5)
+       jsr     pc,flag1
+               br 1b
+
+/ reverse pass put in
+/ foreward and reverse
+/ block numbers
+
+       mov     $4017,tccm
+       jsr     pc,flag
+1:
+       mov     $nword+3.,r4
+2:
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag
+       dec     r4
+       bne     2b
+
+       clrb    tcst
+       clr     (r5)
+       mov     bn,r0
+       jsr     pc,comobv
+       jsr     pc,flag
+       movb    r1,tcst
+       mov     r0,(r5)
+       jsr     pc,flag
+       dec     bn
+       blt     check
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag
+       clrb    tcst
+       mov     bn,(r5)
+       jsr     pc,flag
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag
+       br      1b
+
+/ foreward pass
+/ confirm block numbers
+/ write all 1's in data
+
+check:
+       clrb    tcst
+       clr     (r5)
+       jsr     pc,flag1
+               br check
+       clr     r4
+1:
+       mov     $3,tccm
+       jsr     pc,flag
+       cmp     (r5),r4
+       bne     error1
+       mov     $-nword,tcwc
+       mov     $buffer,tcba
+       mov     $15,tccm
+       jsr     pc,flag
+       inc     r4
+       cmp     r4,$nblock
+       bne     1b
+       mov     $3,tccm
+       jsr     pc,flag1
+               br error2
+
+/ reverse pass
+/ confirm block numbers
+/ read data and compare
+/ to all 1's
+
+1:
+       mov     $4003,tccm
+       jsr     pc,flag
+       dec     r4
+       cmp     r4,(r5)
+       bne     error3
+       mov     $-nword,tcwc
+       mov     $buffer,tcba
+       mov     $4005,tccm
+       jsr     pc,compare
+       jsr     pc,flag
+       tst     r4
+       bne     1b
+       mov     $4003,tccm
+       jsr     pc,flag1
+               br error4
+       jsr     pc,compare
+       jmp     start
+
+error1:
+       mov     $1,r0
+       br      1f
+error2:
+       mov     $1,r0
+       br      1f
+error3:
+       mov     $3,r0
+       br      1f
+error4:
+       mov     $4,r0
+       br      1f
+error5:
+       mov     $5,r0
+       br      1f
+error6:
+       mov     $6,r0
+       br      1f
+error7:
+       mov     $7,r0
+1:
+       add     $'0,r0
+       movb    r0,0f
+       mov     tcst,-(sp)
+       mov     tccm,-(sp)
+       mov     $1,tccm
+       mov     savr5,r5
+       jsr     pc,4(r5)
+               <error>
+0:
+               <x\ntcst in r0; tccm in r1\n\0>
+               .even
+       mov     (sp)+,r1
+       mov     (sp)+,r0
+       0
+       rts     pc
+
+compare:
+       mov     r0,-(sp)
+       mov     $buffer,r0
+1:
+       cmp     (r0)+,$-1
+       bne     error5
+       cmp     r0,$buffer+nword+nword
+       blo     1b
+       mov     (sp)+,r0
+       rts     pc
+
+mtrack:
+       mov     (r0)+,(r5)
+       jsr     pc,flag
+       rts     r0
+
+flag:
+       bit     $100200,tccm
+       beq     flag
+       blt     error6
+       rts     pc
+
+flag1:
+       bit     $100200,tccm
+       beq     flag1
+       bge     1f
+       tst     tcst
+       bge     error7
+       add     $2,(sp)
+1:
+       rts     pc
+
+comobv:
+       mov     r0,r4
+       bic     $!777,r0
+       asl     r0
+       mov     cobtab(r0),r0
+       swab    r0
+       clr     r1
+       ror     r0
+       rol     r1
+       asl     r0
+       asl     r0
+       rol     r1
+       swab    r4
+       bic     $177401,r4
+       bis     cobtab(r4),r0
+       rts     pc
+
+bcomobv:
+       mov     r0,r2
+       bic     $!70,r2
+       mov     r0,r3
+       mov     $6.,r4
+1:
+       asr     r3
+       dec     r4
+       bne     1b
+       bic     $!7,r3
+       bis     r3,r2
+       mov     r0,r3
+       mov     $6.,r4
+1:
+       asl     r3
+       dec     r4
+       bne     1b
+       bic     $!700,r3
+       bis     r3,r2
+       com     r2
+       bic     $!777,r2
+       rts     pc
+
+bn:    .=.+2
+savr5: .=.+2
+savsp: .=.+2
+cobtab:        .=.+1024.
+buffer:        .=.+nword+nword
+