8-Bit Software Online Conversion
/* fahr.c 17-Dec-88 A.J.Travis */
/*
* print Fahrenheit-Celsius table
* ------------------------------
* Adapted from the tutorial example in Kernighan and Ritchie
* to show how fixed-point arithmetic can be used in Small-C.
*/
#include <stdio.h>
#define SCALE 10 /* fixed-point scale */
main()
{
int lower, upper, step;
int fahr, celsius;
int integer, fraction;
lower = 0; /* lower limit of temperature table */
upper = 300; /* upper limit */
step = 20; /* step size */
fahr = lower;
while (fahr <= upper) {
celsius = (SCALE * 5 * (fahr - 32)) / 9;
integer = celsius / SCALE;
if ((fraction = celsius % SCALE) < 0)
fraction = -fraction;
printf("%4d %4d.%1d\n", fahr, integer, fraction);
fahr = fahr + step;
}
}
/* cmp.c - 19 Apr 88 A.J.Travis */
/*
* Simple file comparison
*/
#include <stdio.h>
char buf1[BUFSIZ];
char buf2[BUFSIZ];
char *bp1, *bp2;
int c1, c2;
int fd1, fd2;
int n1, n2;
int n;
main(argc, argv)
int argc;
char *argv[];
{
if (argc != 3) {
fprintf(stderr, "usage: cmp file1 file2\n");
exit(-1);
}
if ((fd1 = open(argv[1], 0)) == -1) {
fprintf(stderr, "cmp: can't open %s\n", argv[1]);
exit(-1);
}
if ((fd2 = open(argv[2], 0)) == -1) {
fprintf(stderr, "cmp: can't open %s\n", argv[2]);
close(fd1);
exit(-1);
}
n = 0;
do {
n1 = read(fd1, buf1, BUFSIZ);
n2 = read(fd2, buf2, BUFSIZ);
bp1 = buf1;
bp2 = buf2;
while ((bp1 < buf1 + n1) & (bp2 < buf2 + n2)) {
if ((c1 = *bp1++ & 0xFF) != (c2 = *bp2++ & 0xFF))
printf("%4X: %02X %02X\n", n, c1, c2);
n++;
}
if (n1 < n2)
printf("cmp: end of file on %s\n", argv[1]);
if (n1 > n2)
printf("cmp: end of file on %s\n", argv[2]);
}
while (n1 > 0 & n1 == n2);
close(fd1);
close(fd2);
}
/* hanoi.c 19-Nov-88 Modified by A.J.Travis */
/*
* Towers of Hanoi in Small-C by Jon Welch
* ---------------------------------------
* The program should be run in mode 2, and
* shows the disks in 7 different colours.
*/
#include <stdio.h>
int j, n;
int one, two, three;
main()
{
printf("\f\nHeight (0-12): ");
scanf("%d", &n);
if (n > 12)
n = 12;
j = n;
while (j > 0) {
box((j % 7) + 1, 200, (n - j + 1) * 40, j * 16);
j = j - 1;
}
one = n * 40;
two = 0;
three = 0;
hanoi(n, 1, 2, 3);
}
up(x)
int x;
{
if (x == 1)
one = one + 40;
else if (x == 2)
two = two + 40;
else
three = three + 40;
}
down(x)
int x;
{
if (x == 1)
one = one - 40;
else if (x == 2)
two = two - 40;
else
three = three - 40;
}
height(x)
int x;
{
if (x == 1)
return(one);
else if (x == 2)
return(two);
else
return(three);
}
bytes(x)
int x;
{
vdu(x);
vdu(x >> 8);
}
box(col, x, y, size)
int col, x, y, size;
{
vdu(18);
vdu(0);
vdu(col + 128);
vdu(24);
bytes(x - size);
bytes(y);
bytes(x + size);
bytes(y + 20);
vdu(16);
}
move(n, s, e)
int n, s, e ;
{
box(0, s * 400 - 200, height(s), n * 16);
down(s);
up(e);
box((n % 7) + 1, e * 400 - 200, height(e), n * 16);
}
hanoi(a, b, c, d)
int a, b, c, d;
{
if (a != 0) {
hanoi(a - 1, b, d, c);
move(a, b, c);
hanoi(a - 1, d, c, b);
}
}