Category : C Source Code
Archive   : CTB100T.ZIP
Filename : CTDEMO.C
/* CTDEMO.C
*
*
* This is a simple demo program to test some of the C Tool Box
* functions. Current plans call for further expansion of the library.
* The final library developed will hopefully include data entry
* forms and menus built around windows. It is hoped to provide
* full data editing and verification with the window forms.
*
* This version requires the use of a color graphics adapter if you
* beyond the window portion of the program.
*
*
* This program and its supporting code (with the exception of the
* Unicorn Library) are placed in the public domain by the author.
* You have full rights to use this code in any manner you may see
* fit with the exception of using any or all for profit. A club
* or users group may however charge a small handling fee not to
* exceed $7.00. The author retains all rights to the Library
* subject to the shareware notice contained with the documentation for
* that library.
*
* This will be released under the shareware concept as was the previous
* Unicorn library.
*
*
* David A. Miller
* Unicorn Software
* 8018 NE 123rd St
* Kirkland, WA 98034
* (206) 823-4656 after 6PM PST
* Please, no collect calls
*
* Release date 22 August 1987
*/
#include
#include
#include
#include
#include
#include
#include
extern ct_mode_; /* These are global variables where the current video */
extern ct_col_; /* mode and number of screen columns are stored */
extern v_start;
BOX *title, *first, *second, *third, *fourth, *fifth, *sixth, *small;
BOX *mine;
/* The user is allowed up to 249 notes for background music. The last
* note (the 250th if all are used) MUST be 0xff or the function will
* not terminate properly.
*/
/* Short segment for test purposes */
/*
int melody[250] = {26, 29, 31, 33, 0xff};
int beat[250] = { 6, 12, 6, 7, 1};
*/
/* The below defines notes for Greensleeves */
int melody[250] = {26, 29, 31, 33, 35, 33, 31, 28, 24, 26, 28, 29, 26,100,
26, 25, 26, 28, 25, 21, 26, 29, 31, 33, 35, 33, 31,
28, 24, 26, 28, 29, 28, 26, 25, 23, 25, 26,100, 26, 36,
100, 36, 35, 33, 31, 28, 24, 26, 28, 29, 26,100, 26, 25, 26,
28, 25, 21, 36,100, 36, 35, 33, 31, 28, 24, 26, 28, 29,
28, 26, 25, 23, 25, 26,100, 26, 0xff};
int beat[250] = { 6, 12, 6, 7, 4, 6, 12, 6, 7, 4, 6, 12, 6, 1,
7, 4, 6, 12, 6, 12, 6, 12, 6, 7, 4, 6, 12,
6, 7, 4, 6, 7, 4, 7, 4, 6, 6, 18, 1, 18, 12,
1, 6, 6, 6, 12, 6, 7, 4, 6, 12, 6, 1, 7, 4, 6,
12, 6, 20, 20, 1, 7, 4, 6, 12, 6, 7, 4, 6, 7,
4, 6, 6, 6, 6, 20, 1, 16, 1};
int start = 9;
main()
{
char a[80], *wgets(), ch, name[60];
int i, j, w, h, row, col;
unsigned *p, *mem;
sm(3);
ctinit();
/* makebox sets up the definition of a box by allocating memory for a box
* structure and placing data into it. The form is
* makebox(row, col, height, width, bfore, bback, ffore, fback);
*
* savebox copies the screen area under the box and stores a pointer to
* that memory in the box structure.
*
* draw box actually draws the box on the screen using direct video memory
* writes for speed.
*
* boxtitle places a title in the border area of the box. The form is
* boxtitle(BoxPointer, 0/1, " Title ", fore, back);
*
*/
first = makebox(0,0,23,79,14, 4, 14, 1);
savebox(first);
drawbox(first);
boxtitle(first, 0, 72, " Box 1 " , YELLOW, 99);
ct_wvstr(6, 68, LTWHITE, 99, "Vertical Strings", first);
ct_wvstr(6, 72, LTWHITE, 99, "are possible ", first);
ct_str( 8, 10, 4, 1, " ÜÜÜÜÜÜ ");
ct_str( 9, 10, 4, 1, " ÛÛÛÛÛÜ ");
ct_str(10, 10, 11, 1, " ³ ");
ct_str(11, 10, 11, 1, " ³ ");
ct_str(12, 10, 7, 1, "ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ");
ct_str(13, 10, 7, 1, " ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ");
ct_str(14, 10, 7, 1, " ÛÛÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛ ÛÛÛ ");
ct_str(15, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ");
ct_str(16, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ");
ct_str(17, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ");
ct_str(18, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ");
ct_str(19, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ");
ct_str(20, 10, 7, 1, " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ");
ct_str(21, 5, GREEN, 1, "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
ct_str(22, 5, GREEN, 1, "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
if (ct_mode_ != 7)
{
ct_str(14, 15, 14, 1, "ÛÛ");
ct_str(16, 37, 14, 1, "ÛÛ");
ct_str(8, 18, 4, 1, "ÜÜÜÜÜ");
ct_str(9, 18, 11, 4, " CTB ");
ct_str(8, 18, 7, 4, "ß");
ct_str(17, 29, 8, 6, "°°°°°°");
ct_str(18, 29, 8, 6, "°°°°°°");
ct_str(19, 29, 8, 6, "°°°°°°");
ct_str(20, 29, 8, 6, "°°°°°°");
}
title = makebox(1, 25, 2, 27, 14, 1, 14, 1);
makebdr(title, space);
savebox(title);
drawbox(title);
ct_wstr(1,5,99,99, "Unicorn Software ", title);
second = makebox(3, 25, 4, 26, 9, 1, 9, 1);
makebdr(second, space);
savebox(second);
drawbox(second);
ct_wstr(1,9,99,99, "Presents", second);
ct_wstr(2,6,15 + BLINK, 99, "The C Tool Box", second);
for(i = 0; i <= 10000; i++)
for(j = 0; j <= 30; j++)
;
third = makebox(12, 10, 4, 59, 9,6,9,6);
makebdr(third, bdr1);
savebox(third);
drawbox(third);
boxtitle(third, 1, 2, " Box 3 ", 98, 98);
ct_wstr(1,15,99,99, "What is your name?", third);
setcurps(0, 13, 45);
gets(name);
ct_wstr(2,15,99,99,"Hello ", third);
ct_wstr(2,22,99,99, name, third);
ct_wstr(3,5,99,99, "Would you be so kind as to press my enter key?", third);
setcurps(0, 15, 67);
gets(a);
fourth = makebox(18, 10, 3, 59, 7,4,7, 4);
makebdr(fourth, bdr21);
savebox(fourth);
drawbox(fourth);
boxtitle(fourth, 0, 10, " Fourth Box ", 99, 99);
ct_wstr(1,5,99,99, "Thank you ", fourth);
ct_wstr(1,16,99,99, name, fourth);
ct_wstr(2, 5, 99,99, "Now if you would press it again please", fourth);
setcurps(0, 20, 57);
gets(a);
fifth = makebox(6,10, 13, 59, LTMAGENTA, 5, 9, 5);
makebdr(fifth, bdr12);
savebox(fifth);
drawbox(fifth);
boxtitle(fifth, 0, 10, "® Fifth Box ¯", 99, 99);
ct_wstr(1,3,99,99," Unicorn Software is happy to provide this tool box of", fifth);
ct_wstr(2,3,99,99,"functions in the form of shareware. The library may ", fifth);
ct_wstr(3,3,99,99,"be registered with the author. Upon registration you ", fifth);
ct_wstr(4,3,99,99,"will be sent the complete manual on disk and full ", fifth);
ct_wstr(5,3,99,99,"source code to the library. The manual runs well over", fifth);
ct_wstr(6,3,99,99,"200 pages. If you wish, a preprinted manual is also ", fifth);
ct_wstr(7,3,99,99,"available. ", fifth);
ct_wstr(9, 3,YELLOW,99, " David A. Miller ", fifth);
ct_wstr(10,3,WHITE,99, " Unicorn Software ", fifth);
ct_wstr(11,3,LTMAGENTA,99," 8018 NE 123rd St. Kirkland, WA 98034 ", fifth);
gets(a);
sixth = makebox(5,5, 10, 59, 4, 3, 15, 3);
makebdr(sixth, bdr12);
savebox(sixth);
drawbox(sixth);
boxtitle(sixth, 0, 10, "® Sixth Box ¯", 99, 99);
ct_wstr(1,3,99,99,"The tool box contains most of the previous Unicorn ", sixth);
ct_wstr(2,3,99,99,"Library functions ( over 200) plus a fast window ", sixth);
ct_wstr(3,3,99,99,"library, background sound and much more. The entire ", sixth);
ct_wstr(4,3,99,99,"library encompasses graphics, text handling, mouse and", sixth);
ct_wstr(5,3,99,99,"joystick control graphics and daisy wheel control ", sixth);
ct_wstr(6,3,99,99,"functions, background sound functions and more. An ", sixth);
ct_wstr(7,3,99,99,"EGA version of the library should be released ", sixth);
ct_wstr(8,3,99,99,"before the end of 1987.
setcurps(0,0,0);
gets(a);
resbox(sixth);
gets(a);
resbox(fifth);
gets(a);
resbox(fourth);
gets(a);
resbox(third);
gets(a);
resbox(second);
gets(a);
resbox(first);
back16_8(12, 14); /* Switch to using highlighted background colors */
printf("\tMode is %d and columns are %d and start is %X Hex\n", ct_mode_, ct_col_, v_start);
if (gcomtype() == 0xff)
printf("\tThis computer is a PC or very close compatible\n\n");
if (gcomtype() == 0xfc)
printf("\tThis computer is an AT or very close compatible\n\n");
if (gcomtype() == 0xfe)
printf("\tThis computer is an XT or very close compatible\n\n");
if (gcomtype() == 0xfd)
printf("\tThis computer is an PCjr or very close compatible\n\n");
if (gcomtype() == 0xf9)
printf("\tThis computer is an PC convertible or very close compatible\n\n");
printf("\tNote that it is possible to use the highlighted colors in the\n");
printf("\ttext mode for background color if you give up the blinking \n");
printf("\ttext attribute. Functions are available to switch between\n");
printf("\tblink and high-intensity background modes. If you wish to\n");
printf("\tgo further in this demo you MUST have a graphics adapter\n");
printf("\tinstalled. Please be aware also that music will be played\n");
printf("\tin the background mode while other things occur on screen.\n");
printf("\tWhile this is similar to BASIC in some respects you have \n");
printf("\ta limit of 249 notes with this library, not the limit of \n");
printf("\t32 notes BASIC allows you. Even this limit is user changable.\n");
printf("\n\t\t\tPress any key to continue\n");
waitkey();
/* Draw bar graphs next */
sm(4);
palette(2, 5, 14);
hollow('B', 5, 70, 3);
hollow('A', 5, 90, 3);
hollow('R', 5, 110, 3);
hollow('G', 5, 140, 3);
hollow('R', 5, 160, 3);
hollow('A', 5, 180, 3);
hollow('P', 5, 200, 3);
hollow('H', 5, 220, 3);
vbar3d(150, 80, 100, 12, 16, 2, 3);
vbar3d(150, 100, 140, 8, 26, 2, 3);
vbar3d(150, 40, 180, 25, 8, 2, 3);
usrfont('I', 153, 90, 1, 1, 2, 1);
usrfont('T', 153, 95, 1, 1, 2, 1);
usrfont('E', 153, 100, 1, 1, 2, 1);
usrfont('M', 153, 105, 1, 1, 2, 1);
usrfont('1', 153, 115, 1, 1, 2, 1);
usrfont('I', 153, 135, 1, 1, 2, 1);
usrfont('T', 153, 140, 1, 1, 2, 1);
usrfont('E', 153, 145, 1, 1, 2, 1);
usrfont('M', 153, 150, 1, 1, 2, 1);
usrfont('2', 153, 160, 1, 1, 2, 1);
usrfont('I', 153, 180, 1, 1, 2, 1);
usrfont('T', 153, 185, 1, 1, 2, 1);
usrfont('E', 153, 190, 1, 1, 2, 1);
usrfont('M', 153, 195, 1, 1, 2, 1);
usrfont('3', 153, 205, 1, 1, 2, 1);
script('O', 158, 66, 1);
script('t', 158, 82, 1);
script('h', 158, 98, 1);
script('e', 158, 114, 1);
script('r', 158, 130, 1);
script('g', 158, 156, 1);
script('r', 158, 172, 1);
script('a', 158, 188, 1);
script('p', 158, 204, 1);
script('h', 158, 220, 1);
usrfont('S', 189, 30, 1, 1, 1, 0);
usrfont('T', 189, 40, 1, 1, 1, 0);
usrfont('Y', 189, 50, 1, 1, 1, 0);
usrfont('L', 189, 60, 1, 1, 1, 0);
usrfont('E', 189, 70, 1, 1, 1, 0);
usrfont('S', 189, 80, 1, 1, 1, 0);
usrfont('W', 189, 100, 1, 1, 2, 0);
usrfont('I', 189, 110, 1, 1, 2, 0);
usrfont('L', 189, 120, 1, 1, 2, 0);
usrfont('L', 189, 130, 1, 1, 2, 0);
usrfont('B', 189, 150, 1, 1, 1, 0);
usrfont('E', 189, 160, 1, 1, 1, 0);
usrfont('A', 189, 180, 1, 1, 1, 0);
usrfont('V', 189, 190, 1, 1, 1, 0);
usrfont('A', 189, 200, 1, 1, 1, 0);
usrfont('I', 189, 210, 1, 1, 1, 0);
usrfont('L', 189, 220, 1, 1, 1, 0);
usrfont('A', 189, 230, 1, 1, 1, 0);
usrfont('B', 189, 240, 1, 1, 1, 0);
usrfont('L', 189, 250, 1, 1, 1, 0);
usrfont('E', 189, 260, 1, 1, 1, 0);
waitkey();
sm(4);
backclr(1);
gothic('U',10,start+0,3);
gothic('n',10,start+25,3);
gothic('i',10,start+45,3);
gothic('c',10,start+60,3);
gothic('o',10,start+80,3);
gothic('r',10,start+100,3);
gothic('n',10,start+120,3);
gothic('S',10,start+150,3);
gothic('o',10,start+170,3);
gothic('f',10,start+190,3);
gothic('t',10,start+205,3);
gothic('w',10,start+220,3);
gothic('a',10,start+240,3);
gothic('r',10,start+260,3);
gothic('e',10,start+280,3);
raschar('P', 50, start + 70, 2, 2, 3);
raschar('r', 50, start + 90, 2, 2, 3);
raschar('e', 50, start + 110, 2, 2, 3);
raschar('s', 50, start + 130, 2, 2, 3);
raschar('e', 50, start + 150, 2, 2, 3);
raschar('n', 50, start + 170, 2, 2, 3);
raschar('t', 50, start + 190, 2, 2, 3);
raschar('s', 50, start + 210, 2, 2, 3);
setsound(); /* Play the greensleeves melody in the background */
unicorn();
atsay(24, 3, 2, 0,"Copyright (c) 1986 David A. Miller");
cntue();
waitkey();
sm(4); /* this resets the mode which in effect is a
clear screen command. */
backclr(9);
printf("\n\n A demonstration of IBM PC graphics\n");
printf(" using the 4 color med. resolution mode\n");
printf(" and the C Tool Box library of\n");
printf(" functions.\n");
printf(" This library is designed to work with \n");
printf(" the Turbo C small model. It has\n");
printf(" been written using Turbo C 1.0 \n");
printf(" and the Microsoft Assembler 4.0.\n");
printf(" Not all library functions are\n");
printf(" illustrated in this demo. The\n");
printf(" library is capable of many graphics\n");
printf(" concepts including points, lines,\n");
printf(" circles, ellipses (these may be \n");
printf(" rotated from the vertical or\n");
printf(" horizontal) and colorful print\n");
printf(" including different fonts. We\n");
printf(" hope you enjoy the C TOOL BOX\n");
printf(" Version 1.00 for Turbo C ver 1.0\n");
printf(" small model.\n");
printf(" Copyright (C) 1986 David A. Miller\n");
atsay(23,8,2,0,"Press any key to continue");
waitkey();
sm(4); /* this resets the mode which in effect is a
clear screen command. */
backclr(14);
pg1();
waitkey();
sm(4);
backclr(1);
pg2();
cntue();
waitkey();
sm(4);
backclr(1);
pg3();
cntue();
waitkey();
sm(4);
backclr(9);
atom();
cntue();
waitkey();
sm(4);
backclr(1);
printf(" The next screen will demonstrate\n\n");
printf(" T U R T L E F U N C T I O N S");
printf("\n\n\n\n\n The delay function is used to");
printf("\n slow down the display of lines\n");
cntue();
waitkey();
palette(0,5,8);
pg5();
cntue();
waitkey();
sm(4);
backclr(1);
script('P', 5, 100, 3);
script('a', 5, 116, 3);
script('l', 5, 132, 3);
script('e', 5, 148, 3);
script('t', 5, 164, 3);
script('t', 5, 180, 3);
script('e', 5, 196, 3);
redalert();
printf("\n\n\n\nThe following page illustrates\n");
printf("the palette command. This command\n");
printf("allows the programmer to control the\n");
printf("color set and background color with\n");
printf("one command. There are a total of 6\n");
printf("sets of three colors that may be \n");
printf("displayed. Three of these are normal;\n");
printf("while the other three are bright\n");
printf("versions of the basic three.\n");
printf("\n\n Press any key to continue\n");
waitkey();
pg6();
cntue();
waitkey();
sm(4);
backclr(9);
pg7();
cntue();
waitkey();
sm(4);
backclr(9);
pg8();
atsay(24,7,3,0, "Press any key to continue");
waitkey();
sm(4);
backclr(9);
pgf();
waitkey();
sm(3);
backclr(1);
sm(3);
printf("\n\n\n\n");
printf("\tPlease address any comments, sugestions or criticisms to the\n");
printf("\tauthor - we do listen, many of the functions in the library\n");
printf("\tcurrently are a result of listening to users. \n");
printf("\tThis Lirary is designed as a library for Turbo C from \n");
printf("\tBorland International. A Microsoft C version 4.0 and 5.0\n");
printf("\tversion of the library are also available. Other versions\n");
printf("\tare possible if there is enough interest in them.\n\n");
printf("\tAll currently registered owners of the Unicorn Library will be\n");
printf("\table to update for an update fee. A preprinted manual will also\n");
printf("\tbe made available for those who so wish. Registered owners, as with\n");
printf("\tthe Unicorn Library will, of course, receive ALL source code for the\n");
printf("\tlibrary.\n\n");
printf(" David A. Miller\n");
printf(" Unicorn Software\n");
printf(" 8018 NE 123rd St\n");
printf(" Kirkland, WA 98034\n");
printf(" (206) 823 4656 after 6:30PM \n");
printf(" (no collect calls PLEASE) \n");
}
pg1()
{
atsay(10,5,2,0, "The next page will demonstrate");
atsay(11,5,2,0, "some of the simple graphics");
atsay(12,5,2,0, "primitives including dots,");
atsay(13,5,2,0, "lines, filled boxes and");
atsay(14,5,2,0, "rectangles. ");
atsay(20,5,3,0, "Press any key to continue");
}
pg2()
{
int i;
for(i=0; i <= 20; i++)
point(20, 10+i*2, i % 4);
rect(50,20,80,50,1);
boxfill(54,24,76,46,2);
rect1(50,80,80,110,2,1);
rect2(50,140,80,170,3,1);
circle(65,240,50,1,1,3);
paint(65,240,2,3);
line(120,20,190,300,1);
line(190,20,120,300,2);
line(155,20,155,300,3);
}
pg3()
{
atsay(7,5,3,0, "The following screen will further");
atsay(8,5,3,0, "demonstrate the circle function");
atsay(9,5,3,0, "and introduce the rotated ellipse");
atsay(10,5,3,0, "function. The latter allows the");
atsay(11,5,3,0, "user to draw an ellipse with a");
atsay(12,5,3,0, "specified aspect and angle of");
atsay(13,5,3,0, "rotation.");
}
pg5()
{
turnright(150); /* Double Triangle */
pencolor(1);
forward(50);
delay(500);
turnright(120);
forward(50);
delay(500);
turnright(120);
forward(100);
delay(500);
turnleft(120);
forward(50);
delay(500);
turnleft(120);
forward(50);
turnright(180);
forward(50);
pencolor(0);
forward(50);
turnright(120);
pencolor(2);
delay(500);
forward(100);
turnright(60);
delay(500);
forward(100);
turnright(60);
delay(500);
forward(100);
turnright(60);
delay(500);
forward(100);
turnright(60);
delay(500);
forward(100);
turnright(60);
delay(500);
forward(97);
turnright(72);
forward(5);
pencolor(0);
forward(48);
turnright(96);
turnleft(72);
pencolor(3);
forward(90);
turnright(72);
forward(90);
turnright(72);
forward(90);
turnright(72);
forward(90);
turnright(73);
forward(90);
pencolor(0);
paint(90,160,3,1);
paint(110,160,3,1);
paint(40,160,2,3);
paint(182,160,1,2);
}
pg6()
{
palette(2,4,0);
house();
palette(0,5,0);
house();
palette(0,4,0);
house();
}
house()
{
int i;
for(i=0;i<=120;i++) /* Make some stars in the sky */
point(rand() / 165,rand() / 103, rand() / 8192);
line(180,0,180,319,1); /* grass line */
paint(183,10,1,1); /* grass */
line(150,50,120,110,1);
line(120,110,152,160,1);
line(140,70,180,70,1);
line(140,140,180,140,1);
line(180,70,180,140,1);
line(160,80,180,80,1);
line(160,95,180,95,1);
line(160,80,160,95,1);
line(150,110,170,110,1); /* Window */
line(150,120,170,120,1);
line(150,130,170,130,1);
line(150,110,150,130,1);
line(160,110,160,130,1);
line(170,110,170,130,1);
paint(155,115,2,1); /* color the widow panes */
paint(155,125,2,1);
paint(165,115,2,1);
paint(165,125,2,1);
paint(130,110,3,1); /* color the house */
line(130,100,130,120,2); /* lines in the house */
line(161,75,161,79,2);
line(155,86,155,97,2);
line(165,100,165,107,2);
line(161,72,161,78,2);
line(142,70,142,93,2);
line(147,100,147,116,2);
paint(170,90,2,1); /* color the door */
circle(170,90,2,1,1,1); /* knob */
paint(170,90,2,1); /* fill it */
line(114,124,128,124,2); /* chimney */
line(114,136,136,136,2);
line(114,124,114,136,2);
line(128,124,136,136,2);
paint(120,130,2,2); /* fill chimney */
line(116,125,116,135,3); /* horizontal bricks */
line(118,125,118,135,3);
line(120,125,120,135,3);
line(122,125,122,135,3);
line(124,125,124,135,3);
line(126,125,126,135,3);
line(128,125,128,135,3);
line(130,128,130,135,3);
line(132,132,132,135,3);
line(134,134,134,135,3);
line(116,130,118,130,3); /* vertical bricks */
line(118,133,120,133,3);
line(118,127,120,127,3);
line(120,130,122,130,3);
line(122,127,124,127,3);
line(122,133,124,133,3);
line(124,130,126,130,3);
line(126,127,128,127,3);
line(126,133,128,133,3);
line(128,130,130,130,3);
line(130,133,132,133,3);
line(132,130,134,130,3);
boxfill(140,190,180,210,3); /* Tree Trunk */
line(168,190,172,188,3);
line(172,188,180,177,3);
line(168,210,172,212,3);
line(172,212,180,223,3);
line(180,177,180,223,3); /* base line of tree */
paint(178,185,3,3); /* paint the tree */
paint(178,215,3,3);
line(174,190,178,183,2); /* root lines in tree */
line(172,210,178,213,2);
line(174,198,178,190,2);
line(176,203,178,207,2);
circle(150,190,3,3,1,3);
paint(150,189,3,3);
circle(160,210,3,1,3,3);
paint(160,211,3,3);
point(168,205,2);
point(171,203,2);
point(168,193,2);
point(172,195,2);
circle(135,216,10,1,2,1);
paint(135,216,1,1);
circle(105,180,9,1,1,1);
paint(105,180,1,1);
circle(128,180,9,1,3,1);
paint(128,180,1,1);
circle(125,228,5,1,2,1);
paint(125,228,1,1);
circle(94,200,10,1,3,1);
paint(94,200,1,1);
circle(117,200,30,3,5,1);
paint(116,200,1,1);
line(110,190,117,200,3);
line(120,180,128,197,3);
line(115,200,125,180,3);
circle(74,100,10,1,1,2); /* cloud */
paint(74,100,2,2);
circle(62,130,12,1,2,2);
paint(62,130,2,2);
circle(72,70,9,1,2,2);
paint(72,70,2,2);
circle(32,58,8,1,2,2);
paint(32,58,2,2);
circle(20,68,22,1,2,2);
paint(20,68,2,2);
circle(35,130,12,1,2,2);
paint(35,130,2,2);
circle(21,95,10,1,2,2);
paint(21,95,2,2);
circle(33,125,7,1,2,2);
paint(33,125,2,2);
circle(50,100,41,3,7,2); /* cloud */
paint(50,100,2,2); /* fill it */
line(150,194,167,194,1);
line(142,197,153,197,1);
line(165,195,174,195,1);
line(147,200,153,200,1);
line(150,205,164,205,1);
line(153,201,164,201,1);
line(163,202,172,202,1);
circle(50,270,15,1,1,3); /* moon */
paint(50,270,03,03); /* fill it */
point(52,273,1);
point(43,260,1);
point(52,262,1);
point(53,262,1);
point(52,261,1);
point(53,273,1);
point(40,270,1);
point(60,268,1);
point(45,281,1);
point(45,282,1);
point(44,281,1);
point(44,272,0);
point(43,272,0);
point(43,271,0);
point(47,265,0);
point(46,265,0);
point(46,264,0);
point(53,275,0);
point(54,276,0);
delay(3000);
}
pg7()
{
rhollow(20, 100, 'F',0, 0,3, .15);
rhollow(20, 100, 'O',0, 22,3, .15);
rhollow(20, 100, 'N',0, 44,3, .15);
rhollow(20, 100, 'T',0, 66,3, .15);
rhollow(20, 100, 'S',0, 88,3, .15);
gliss(100,1000,300);
atsay(6,2,2,0," Many different Fonts are Possible");
atsay(7,2,3,0, " Including rotated fonts");
usrfont('T',80,60,2,2,3,0);
usrfont('H',80,80,2,2,3,0);
usrfont('I',80,100,2,2,3,0);
usrfont('N',80,120,2,2,3,0);
usrfont('L',88,140,1,1,3,0);
usrfont('E',88,150,1,1,3,0);
usrfont('T',88,160,1,1,3,0);
usrfont('T',88,170,1,1,3,0);
usrfont('E',88,180,1,1,3,0);
usrfont('R',88,190,1,1,3,0);
usrfont('S',88,200,1,1,3,0);
usrfont('S',135,146,1,1,3,1);
usrfont('U',135,152,1,1,3,1);
usrfont('B',135,158,1,1,3,1);
usrfont('/',130,164,1,1,3,0);
usrfont('S',127,174,1,1,3,1);
usrfont('U',127,180,1,1,3,1);
usrfont('P',127,186,1,1,3,1);
usrfont('E',127,192,1,1,3,1);
usrfont('R',127,198,1,1,3,1);
usrfont('S',130,209,1,1,2,0);
usrfont('C',130,219,1,1,2,0);
usrfont('R',130,229,1,1,2,0);
usrfont('I',130,239,1,1,2,0);
usrfont('P',130,249,1,1,2,0);
usrfont('T',130,259,1,1,2,0);
usrfont('S',130,269,1,1,2,0);
usrfont('X',175,65,3,3,1,0);
usrfont('2',175,97,2,2,1,1);
usrfont('+',175,105,3,3,1,0);
usrfont('X',175,134,3,3,1,0);
usrfont('-',175,160,3,3,1,0);
usrfont('4',175,185,3,3,1,0);
usrfont('=',175,210,3,3,1,0);
usrfont('0',175,230,3,3,1,0);
}
pg8()
{
printf(" Below are a few Unit Conversions\n\n\n\n\n");
printf("%8.6f inches = %f cm\n",4.0, INCH_CM(4.0));
printf("%8.6f cm = %f inches\n",10.0, CM_INCH(10.0));
printf("%8.6f degrees = %f radians\n",90.0, DEG_RAD(90.0));
printf("%8.6f radians = %f degrees\n",1.0, RAD_DEG(1.0));
printf("%8.6f ounces = %f grams\n",4.0, OZ_GM(4.0));
printf("%8.6f grams = %f ounces\n",50.0, GM_OZ(50.0));
printf("%8.6f gallons = %f liters\n",10.0, GAL_LT(10.0));
printf("%8.6f liters = %f gallons\n",50.0, LT_GAL(50.0));
printf("%8.6f pounds = %f kilograms\n",4.0, LB_KG(4.0));
printf("%8.6f kilogram = %f pounds\n",50.0, KG_LB(50.0));
}
pgf()
{
rgothic(25, 15, 'U', 0, 0, 3, .2);
rgothic(25, 15, 'n', 0, 16, 3, .2);
rgothic(25, 15, 'i', 0, 32, 3, .2);
rgothic(25, 15, 'c', 0, 48, 3, .2);
rgothic(25, 15, 'o', 0, 64, 3, .2);
rgothic(25, 15, 'r', 0, 80, 3, .2);
rgothic(25, 15, 'n', 0, 96, 3, .2);
rgothic(5, 155, 'S', 0, 0, 3, -.17);
rgothic(5, 155, 'o', 0, 18, 3, -.17);
rgothic(5, 155, 'f', 0, 32, 3, -.17);
rgothic(5, 155, 't', 0, 48, 3, -.17);
rgothic(5, 155, 'w', 0, 64, 3, -.17);
rgothic(5, 155, 'a', 0, 80, 3, -.17);
rgothic(5, 155, 'r', 0, 96, 3, -.17);
rgothic(5, 155, 'e', 0, 112, 3, -.17);
atsay(7,5,3,0, "We Hope you have enjoyed seeing");
atsay(8,5,3,0, "some of the features contained");
atsay(9,5,3,0, "in the C TOOL BOX for the");
atsay(10,5,3,0, "IBM PC medium resolution mode");
atsay(11,5,3,0, "graphics. The next release");
atsay(12,5,3,0, "(Dec 87) will contain even");
atsay(13,5,3,0, "more features. Currently");
atsay(14,5,3,0, "registered users will receive.");
atsay(15,5,3,0, "a FREE UPDATE when released.");
atsay(17,5,2,0, " Developed by");
atsay(18,5,2,0, " David A. Miller");
gliss(3000, 200, 100);
atsay(24,4,2,0, " Press any key to return to Dos");
}
atom()
{
ellipser(100,160,0,50,25,2);
ellipser(100,160,0,25,50,2);
ellipser(100,160,48,50,25,1);
ellipser(100,160,48,25,50,1);
circle(100,160,70,1,1,1);
circle(100,160,66,1,1,1);
paint(100,228,2,1);
circle(100,160,4,1,1,3);
paint(100,160,3,3);
}
cntue()
{
atsay(15,1,2,0, "Press any");
atsay(16,2,2,0, "Key to");
atsay(17,1,2,0, "continue");
}
unicorn()
{
line(66,100,107,156, 3); /* horn */
line(66,100,113,148, 3);
line(157,170,158,154, 3);
line(158,154,172,138, 3);
line(172,138,173,125, 3);
line(173,125,166,115, 3);
line(166,115,151,117, 3);
line(151,117,130,138, 3);
line(130,138,120,140, 3);
line(120,140,98,168, 3); /* this line ends at the ear */
line(98,168,85,165, 3);
line(85,165,89,172, 3);
line(89,172,97,180, 3);
line(97,180,121,224, 3); /* outline after ear */
line(121,224,156,255, 3);
line(156,255,198,266, 3); /* very bottom line */
line(157,170,170,180, 3); /* part to left going down */
line(170,180,198,180, 3); /* very bottom line */
line(198,180,198,266,3); /* line across base of head */
paint(188,182,3,3); /* fill in the head!! */
paint(111,148, 3,3); /* fill in the horn */
line(148,185,157,170, 2); /* head starting at bottom */
line(152,130,140,142, 2); /* in head near mouth */
line(140,142,133,156, 2);
line(103,167,123,173,2); /* between ear and eye */
line(173,125,160,138,2); /* mouth */
line(167,145,181,151,3); /* goatee */
line(181,151,175,141,3);
line(175,141,183,139,3);
line(183,139,173,133,3);
paint(172,141,3,3); /* color the goatee */
line(102,149,107,142, 2); /* lines across the horn */
line(97,140, 100,135, 2);
line(91,134,94,130, 2);
line(86,127,88,122, 2);
line(81,121,83,119, 2);
line(76,113,77,111, 2);
line(98,180,140,182,2); /* mane */
line(106,160,118,168,2);
line(140,182,149,198,2);
line(130,205,170,208,2);
line(170,208,180,220,2);
line(154,232,190,235,2);
line(190,235,194,245,2);
ellipser(122,158,42,7,3,2);
paint(122,158,2,2);
ellipser(156,123,72,4,2,2);
paint(156,123,2,2);
circle(123,157,2,1,1,1);
paint(123,157,1,1);
point(123,157,3);
}
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/