From 205f201334c7be6cdab359542f280050400833ec Mon Sep 17 00:00:00 2001 From: Dennis Ritchie Date: Tue, 13 May 1975 19:49:30 -0500 Subject: [PATCH] Research V6 development Work on file usr/source/s1/db2.s Work on file usr/source/s1/cmp.c Work on file usr/source/s1/db4.s Synthesized-from: v6 --- usr/source/s1/cmp.c | 90 +++++++++++ usr/source/s1/db2.s | 375 ++++++++++++++++++++++++++++++++++++++++++++ usr/source/s1/db4.s | 54 +++++++ 3 files changed, 519 insertions(+) create mode 100644 usr/source/s1/cmp.c create mode 100644 usr/source/s1/db2.s create mode 100644 usr/source/s1/db4.s diff --git a/usr/source/s1/cmp.c b/usr/source/s1/cmp.c new file mode 100644 index 0000000000..742a5cb6d2 --- /dev/null +++ b/usr/source/s1/cmp.c @@ -0,0 +1,90 @@ +int ibuf1[259]; +int ibuf2[259]; +int eflg; +int lflg 1; +int line[2] {0, 1}; +int chr[2] { -1, -1}; + +main(argc, argv) +char **argv; +{ + register c1, c2; + char *arg; + + if(argc < 3) + goto narg; + arg = argv[1]; + if(arg[0] == '-' && arg[1] == 's') { + lflg--; + argv++; + argc--; + } + arg = argv[1]; + if(arg[0] == '-' && arg[1] == 'l') { + lflg++; + argv++; + argc--; + } + if(argc < 3) + goto narg; + arg = argv[1]; + if( arg[0]=='-' && arg[1]==0 ) + ibuf1[0] = dup(0); + else if(fopen(arg, ibuf1) < 0) + goto barg; + arg = argv[2]; + if(fopen(arg, ibuf2) < 0) + goto barg; + +loop: + if (++chr[1]==0) + chr[0]++; + c1 = getc(ibuf1); + c2 = getc(ibuf2); + if(c1 == c2) { + if (c1 == '\n') + if (++line[1]==0) + line[0]++; + if(c1 == -1) { + if(eflg) + exit(1); + exit(0); + } + goto loop; + } + if(lflg == 0) + exit(1); + if(c1 == -1) { + arg = argv[1]; + goto earg; + } + if(c2 == -1) + goto earg; + if(lflg == 1) { + printf("%s %s differ: char %s, line ", argv[1], arg, + locv(chr[0], chr[1])); + printf("%s\n", locv(line[0], line[1])); + exit(1); + } + eflg = 1; + printf("%5s %3o %3o\n", locv(chr[0], chr[1]), c1, c2); + goto loop; + +narg: + printf("arg count\n"); + exit(2); + +barg: + printf("cannot open %s\n", arg); + exit(2); + +earg: + printf("EOF on %s\n", arg); + exit(1); +} + +putchar(c) +{ + + write(1, &c, 1); +} diff --git a/usr/source/s1/db2.s b/usr/source/s1/db2.s new file mode 100644 index 0000000000..d612a59dc1 --- /dev/null +++ b/usr/source/s1/db2.s @@ -0,0 +1,375 @@ +/ db2 -- debugger + +lookupn: + cmp symbol,$'. + bne 1f + mov dot,taddr + rts pc +1: + tst error + beq 1f + rts pc +1: + mov r2,-(sp) + mov namstrt,r1 + mov namsiz,r2 + jsr pc,1f + mov (sp)+,r2 + rts pc +1: + mov $symbol,r0 + cmp (r0)+,(r1)+ + bne 2f + cmp (r0)+,(r1)+ + bne 3f + cmp (r0)+,(r1)+ + bne 4f + cmp (r0)+,(r1)+ + bne 5f + tst (r1)+ + mov (r1)+,taddr + rts pc +2: + tst (r1)+ +3: + tst (r1)+ +4: + tst (r1)+ +5: + cmp (r1)+,(r1)+ + cmp r1,r2 + blo 1b + inc error + clr taddr + rts pc + +lookupv: + mov r5,-(sp) + mov $nambuf,r5 + clr r2 + mov $177777,r3 +1: + cmp r5,namsiz + bhis 4f + mov 12(r5),r1 + sub r0,r1 + neg r1 + blt 3f + cmp r1,r3 + bhi 3f + cmp r1,$4000 + bhis 3f + cmp r2,r5 + bhi 3f + mov r1,r3 + mov r5,r2 +3: + add $14,r5 + br 1b +4: + mov (sp)+,r5 + rts pc + +get: + mov *(r5)+,r0 + jsr r5,remap + tst error + bne 2f + mov r0,0f + mov curfin,r0 + sys seek; 0:0; 0 + bec 1f +2: + inc error + rts r5 +1: + mov curfin,r0 + sys read; temp; 2 + bes 2b + tst r0 + beq 2b + mov temp,r0 + rts r5 + +remap: + mov dbfin,curfin + cmp getoff,$1024. + bne 1f + cmp r0,txtsiz + bhis 2f + add $20,r0 + mov symfin,curfin + rts r5 +2: + cmp r0,rtxtsiz + blo 3f + sub rtxtsiz,r0 + cmp r0,datsiz + bhis 2f + add $1024.,r0 + rts r5 +2: + add rtxtsiz,r0 + neg r0 + cmp r0,stksiz + bhi 3f + neg r0 + add datsiz,r0 + add stksiz,r0 + add $1024.,r0 + rts r5 +1: + add getoff,r0 + rts r5 +3: + inc error + rts r5 + +printo: + mov $obuf+6,r1 + clr r2 +1: + inc r2 + movb r0,-(r1) + bicb $!7,(r1) + bisb $'0,(r1) + clc + ror r0 + asr r0 + asr r0 + bne 1b + mov r2,0f+2 + mov r1,0f + mov $1,r0 + sys write; 0:obuf; 6 + rts pc + +mesg: + movb (r5)+,r0 + beq 1f + jsr pc,putc + br mesg +1: + inc r5 + bic $1,r5 + rts r5 + +pnl: + jsr r5,mesg; <\n\0> + rts pc + +psp: + jsr r5,mesg; < \0> + rts pc + +pstar: + jsr r5,mesg; <*\0> + rts pc + +plp: + jsr r5,mesg; <(\0> + rts pc + +prp: + jsr r5,mesg; <)\0> + rts pc + +pb: + jsr r5,mesg; + rts pc + +pcom: + jsr r5,mesg; <,\0> + rts pc + +put: + mov *(r5)+,r0 + jsr r5,remap + tst error + bne 2f + cmp curfin,dbfin + bne 2f + mov r0,0f + mov dbfout,r0 + bne 1f +2: + tst (r5)+ +3: + inc error + rts r5 +1: + tst error + bne 3b + sys seek; 0:0; 0 + bes 2b + mov (r5)+,0f + mov dbfout,r0 + tst bytemod + beq 1f + mov $1,0f+2 + br 2f +1: + mov $2,0f+2 +2: + sys write; 0:0; 2 + bes 3b + rts r5 + +decodadr: + mov r0,r3 + mov r3,-(sp) + bic $!10,(sp) + bic $!7,r0 + cmp r0,$7 + beq pcadr +7: + mov r3,r0 + asr r0 + asr r0 + asr r0 + bic $!6,r0 + jmp *1f(r0) + +1: + simp + incr + decr + indx + +simp: + tst (sp) + beq 1f + jsr pc,plp +1: + jsr pc,preg + tst (sp)+ + beq 9f + jsr pc,prp + br 9f + +incr: + tst (sp)+ + beq 1f + jsr pc,pstar +1: + jsr pc,plp + jsr pc,preg + jsr r5,mesg; <)+\0>; .even + br 9f + +decr: + tst (sp)+ + beq 1f + jsr pc,pstar +1: + jsr r5,mesg; <-(\0>; .even + jsr pc,preg + jsr pc,prp + br 9f + +indx: + tst (sp)+ + beq 1f + jsr pc,pstar +1: + jsr pc,get1 + jsr pc,pname + jsr pc,plp + jsr pc,preg + jsr pc,prp + br 5f + +pcadr: + mov r3,r0 + bit $20,r3 + beq 7b + tst (sp)+ + beq 1f + jsr pc,pstar +1: + bit $40,r3 + bne 6f + jsr r5,mesg; <$\0> + jsr pc,get1 + jsr pc,pname + br 5f +6: + jsr pc,get1 + add $2,r0 + add r1,r0 + mov $3,r1 + jsr pc,pname + br 5f +9: + tst (r5)+ + clr r0 + rts r5 +5: + mov $2,r0 + rts r5 + +preg: + mov r3,r0 + bic $!7,r0 + asl r0 + mov regtab(r0),obuf + mov $1,r0 + sys write; obuf; 2 + rts pc + +regtab: + "r0 + "r1 + "r2 + "r3 + "r4 + "r5 + "sp + "pc + +pname: + mov r5,-(sp) + mov r3,-(sp) + mov r1,-(sp) + jsr pc,lookupv + tst r2 + beq 5f + cmp (sp),$1 + bne 1f + tst r3 + bne 5f +1: + mov r2,r1 + mov $8,-(sp) + mov r0,r5 +1: + movb (r1)+,r0 + beq 1f + jsr pc,putc + dec (sp) + bne 1b +1: + tst (sp)+ + cmp 12(r2),r5 + beq 1f + blt 2f + jsr r5,mesg; <-\0> + br 3f +2: + jsr r5,mesg; <+\0> +3: + mov r3,r0 +5: + jsr pc,printo +1: + tst (sp)+ + mov (sp)+,r3 + mov (sp)+,r5 + rts pc + +get1: + mov *(r5)+,r1 + add $2,r1 + mov r1,temp + jsr r5,get; temp + rts pc diff --git a/usr/source/s1/db4.s b/usr/source/s1/db4.s new file mode 100644 index 0000000000..012e528a61 --- /dev/null +++ b/usr/source/s1/db4.s @@ -0,0 +1,54 @@ +/ db4 -- debugger + +maxsym = 24000. +core: + +a.out: + +.even +zero: 0 +.bss +regbuf: + .=.+1024. +sigp = regbuf+310 +txtsiz = regbuf+322 +datsiz = regbuf+324 +stksiz = regbuf+326 +rtxtsiz: .=.+2 +.data +objmagic: 407 +nobjmagic: 410 +namsiz: nambuf +incdot: 2 +nlcom: '/ + + .bss + +starmod:.=.+2 +symbol: .=.+10. +getoff: .=.+2 +namstrt: .=.+2 +bytemod: .=.+2 +savsp: .=.+2 +error: .=.+2 +ttyfin: .=.+2 +dbfin: .=.+2 +symfin: .=.+2 +curfin: .=.+2 +dbfout: .=.+2 +ch: .=.+2 +lastop: .=.+2 +addres: .=.+2 +taddr: .=.+2 +adrflg: .=.+2 +fpsr: .=.+2 +och: .=.+2 +dot: .=.+2 +count: .=.+2 +syscnt: .=.+2 +temp: .=.+2 +temp1: .=.+2 +obuf: .=.+8. +inbuf: .=.+128. +nambuf: .=.+20 + -- 2.20.1