Working on B printf and argv stuff
This commit is contained in:
+3
-2
@@ -231,7 +231,7 @@ flush: 0
|
|||||||
|
|
||||||
initio: 0
|
initio: 0
|
||||||
lac 017777 i
|
lac 017777 i
|
||||||
sad d4
|
" sad d4
|
||||||
jmp 2f
|
jmp 2f
|
||||||
sad d8
|
sad d8
|
||||||
jmp 1f
|
jmp 1f
|
||||||
@@ -270,7 +270,8 @@ initio: 0
|
|||||||
dzm oflg
|
dzm oflg
|
||||||
jmp initio i
|
jmp initio i
|
||||||
|
|
||||||
.argv: 0
|
.argv: .+1
|
||||||
|
.=.+10
|
||||||
.fin: 0
|
.fin: 0
|
||||||
.fout: 1
|
.fout: 1
|
||||||
eibufp: 0
|
eibufp: 0
|
||||||
|
|||||||
+15
-19
@@ -1,13 +1,13 @@
|
|||||||
/* brtb.b - B run-time library */
|
/* brtb.b - B run-time library */
|
||||||
|
|
||||||
char(s, n) {
|
char(s, n) {
|
||||||
if (n & 1) return ((s[n/2]/512) & 0777);
|
if (n & 1) return(s[n/2] & 0777);
|
||||||
return(s[n/2] & 0777);
|
return ((s[n/2]/512) & 0777);
|
||||||
}
|
}
|
||||||
|
|
||||||
lchar(s, n, c) {
|
lchar(s, n, c) {
|
||||||
if (n & 1) s[n/2] = (s[n/2] & 0777) | (c*512);
|
if (n & 1) s[n/2] = (s[n/2] & 0777000) | c;
|
||||||
else s[n/2] = (s[n/2] & 0777000) | c;
|
else s[n/2] = (s[n/2] & 0777) | (c*512);
|
||||||
}
|
}
|
||||||
|
|
||||||
putstr(s) {
|
putstr(s) {
|
||||||
@@ -20,20 +20,6 @@ putstr(s) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
getstr(s) {
|
|
||||||
auto c, i;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while ((c = getch()) != '*n' & c != '*e') {
|
|
||||||
lchar(s,i,c);
|
|
||||||
i = i+1;
|
|
||||||
}
|
|
||||||
lchar(s,i,'*e');
|
|
||||||
return(s);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
putnum(n) {
|
putnum(n) {
|
||||||
if (n > 9) {
|
if (n > 9) {
|
||||||
putnum(n / 10);
|
putnum(n / 10);
|
||||||
@@ -42,6 +28,14 @@ putnum(n) {
|
|||||||
putchr(n + '0');
|
putchr(n + '0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
octal(n) {
|
||||||
|
if (n > 7) {
|
||||||
|
octal(n / 8);
|
||||||
|
n = n & 7;
|
||||||
|
}
|
||||||
|
putchr(n + '0');
|
||||||
|
}
|
||||||
|
|
||||||
printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9) {
|
printf(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9) {
|
||||||
auto adx, c, i;
|
auto adx, c, i;
|
||||||
|
|
||||||
@@ -62,7 +56,9 @@ loop:
|
|||||||
*adx = -*adx;
|
*adx = -*adx;
|
||||||
}
|
}
|
||||||
putnum(*adx);
|
putnum(*adx);
|
||||||
} else if (c=='c')
|
} else if (c=='o')
|
||||||
|
octal(*adx);
|
||||||
|
else if (c=='c')
|
||||||
putchr(*adx);
|
putchr(*adx);
|
||||||
else if (c=='s')
|
else if (c=='s')
|
||||||
putstr(*adx);
|
putstr(*adx);
|
||||||
|
|||||||
+6
-1
@@ -9,7 +9,12 @@
|
|||||||
|
|
||||||
main {
|
main {
|
||||||
extrn fname, fin;
|
extrn fname, fin;
|
||||||
auto ch;
|
auto ch,p;
|
||||||
|
|
||||||
|
p = 017777;
|
||||||
|
printf("mem[0%o] = 0%o*n",p,*p);
|
||||||
|
printf("mem[0%o] = %d*n",*p,**p);
|
||||||
|
|
||||||
|
|
||||||
/* fin = open(fname, 0); */
|
/* fin = open(fname, 0); */
|
||||||
fin = open("abc ", 0);
|
fin = open("abc ", 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user