home *** CD-ROM | disk | FTP | other *** search
Wrap
1 '***************************************** 2 '* * 3 '* G R A F - P I X * 4 '* * 5 '* A Graphics Program Version 1.0 * 6 '* by Read G. Gilgen * 7 '* U.W. Labs for Recorded Instruction * 8 '* Madison, WI 53706 608-262-1408 * 9 '* * 10 '* (c) 1982 by Board of Regents * 11 '* University of Wisconsin System * 12 '* * 13 '**************************************** 14 ' 15 ' 16 ' 20 '*************************************** 22 '* NOTICE: This program may be copied * 24 '* freely, so long as the copyright * 26 '* information and this notice are * 28 '* included unchanged. * 30 '*************************************** 35 ' 36 ' 37 ' 100 CLEAR ,,1024:CLS:KEY OFF 105 REM program to check for default monitor 110 DEF SEG=0 115 IF (PEEK(&H410) AND &H30)=&H30 THEN GOSUB 6000 120 DIM CLRA$(20) 125 SCREEN 1 130 COLOR 0,1 135 LOCATE 13,16:PRINT "GRAF-PIX" 137 LOCATE 15,9:PRINT "Created by Read Gilgen" 140 LOCATE 19,7:PRINT "(c) 1982 Board of Regents" 142 LOCATE 20,5:PRINT "University of Wisconsin System" 145 FOR PAUSE=1 TO 2000:NEXT PAUSE 150 CLS:DEF SEG=&H40: POKE &H17, (PEEK(&H17) AND &HFFBF) +64:DEF SEG=&HB000: POKE 3998,24: ' SETS UPPER CASE FROM KEYBOARD 155 COLOR 0,1 160 PRINT "REMOVE GRAF-PIX DISK AND INSERT" 165 PRINT "IBM-FORMATTED STORAGE DISK." 170 PRINT:PRINT "(PRESS ANY KEY TO CONTINUE)":ANS$=INPUT$(1) 175 CLS:PRINT "Do you wish to:" 180 PRINT " 1. Edit an existing graphics file" 185 PRINT " 2. Create a new graphics file" 190 PRINT " 3. Delete a graphics file" 195 PRINT " 4. Print Graf-Pix documentation" 200 PRINT " 5. Exit from Graf-Pix" 205 ON ERROR GOTO 365 210 ANS$=INPUT$(1) 215 IF ANS$="1" THEN GOTO 270 ELSE IF ANS$="2" THEN GOTO 315 ELSE IF ANS$="3" THEN GOTO 220 ELSE IF ANS$="4" THEN GOTO 5000 ELSE IF ANS$="5" THEN GOTO 400 ELSE GOTO 150 220 CLS:PRINT "Graphics files on this disk are:" 225 PRINT:FILES "*.GRF":PRINT 230 PRINT :PRINT "Type COMPLETE filename to delete:" 235 INPUT FILENAME$ 240 ON ERROR GOTO 255 245 CLS:PRINT "Delete ";FILENAME$;"? (Y/N)"; 250 ANS$=INPUT$(1):IF ANS$="Y" OR ANS$="y" THEN GOTO 260 ELSE IF ANS$<>"N" AND ANS$<>"n" THEN GOTO 245 ELSE GOTO 150 255 CLS:PRINT "Deletion NOT completed":FOR PAUSE=1 TO 2000: NEXT PAUSE: RESUME 220 260 KILL FILENAME$ 265 CLS: PRINT FILENAME$ " has been deleted.":FOR PAUSE = 1 TO 2000 : NEXT PAUSE : GOTO 150 270 CLS:PRINT "Graphics files on this disk are:" 275 PRINT: FILES "*.grf":PRINT 280 PRINT "Please type filename to edit: ":INPUT PICTURENAME$ 285 ON ERROR GOTO 300 290 CLS:DEF SEG=&HB800: BLOAD PICTURENAME$,0 295 GOTO 500 300 CLS:PRINT "Error in loading file. Try again? (Y/N)" 305 ANS$=INPUT$(1) 310 IF ANS$="N" OR ANS$="n" THEN RESUME 150 ELSE IF ANS$="Y" OR ANS$="y" THEN RESUME 270 ELSE GOTO 300 315 CLS: PRINT "Existing graphics files are:":ON ERROR GOTO 340 320 PRINT:FILES "*.grf":PICTURENAME$="" 325 PRINT:PRINT "Please type the new filename:":PRINT 330 ANS$=INPUT$(1) 335 IF ANS$=CHR$(13) THEN GOTO 355 ELSE IF ANS$="." THEN GOTO 355 ELSE IF ANS$=CHR$(8) THEN GOTO 370 ELSE IF ANS$=CHR$(27) THEN GOTO 150 ELSE GOTO 345 340 PRINT:PRINT "(No files yet created . . .)":RESUME 325 345 PICTURENAME$=PICTURENAME$+ANS$:PRINT ANS$; 350 GOTO 330 355 TAG$=".grf":PICTURENAME$=PICTURENAME$+TAG$ 360 GOTO 380 365 CLS:PRINT "FILE NOT AVAILABLE":PRINT:RESUME 175 370 PICTURENAME$=LEFT$(PICTURENAME$,(LEN(PICTURENAME$)-1)) 375 PRINT CHR$(29);CHR$(32);CHR$(29);:GOTO 330 380 CLS:PRINT "The new filename is ";PICTURENAME$ 385 PRINT "OK? (Y/N): "; 390 ANS$=INPUT$(1):IF ANS$="Y" OR ANS$="y" THEN GOTO 395 ELSE GOTO 315 395 CLS:GOTO 500 400 GOTO 4000 405 ' 406 ' 500 REM Turtle Grahpics Program 501 ' 505 ON ERROR GOTO 3000 510 BND=3 'Boundary color (lines, etc.); default to WHITE 515 BKGRD=0 'Background default to BLACK 520 PLT=1 'Pallete; default to CYAN, MGTA, WHITE 525 CLRA$(1)="Blue":CLRB$(1)="Cyan ":CLRC$(1)="Mgnta":CLRD$(1)="White" 530 CLRA$(0)="Black":CLRB$(0)="Green":CLRC$(0)="Red ":CLRD$(0)="Brown" 535 COLOR (BKGRD),(PLT) 540 OLDA=160:OLDB=100 545 NEWA=OLDA:NEWB=OLDB 550 AMT=6 555 HELP=0 560 KEY (1) ON:ON KEY (1) GOSUB 1300 'help menu 565 KEY (3) ON:ON KEY (3) GOSUB 1400 'circle 570 KEY (4) ON : ON KEY (4) GOSUB 1700 'fill area 575 KEY (6) ON: ON KEY (6) GOSUB 1800 'box 580 KEY (8) ON: ON KEY (8) GOSUB 1900 'end program 585 KEY(7) ON: ON KEY(7) GOSUB 750 'increase/decrease cursor movement 590 KEY (11) ON: ON KEY (11) GOSUB 760 'cursor movements 595 KEY (12) ON: ON KEY (12) GOSUB 765 600 KEY (13) ON: ON KEY (13) GOSUB 770 605 KEY (14) ON: ON KEY (14) GOSUB 775 610 KEY (5) ON: ON KEY (5) GOSUB 1000 'input text 615 KEY (2) ON: ON KEY (2) GOSUB 2000 'set new color parameters 620 KEY (9) ON:ON KEY (9) GOSUB 800 625 KEY (10) ON:ON KEY (10) GOSUB 900 630 IF DOIT=0 THEN GOTO 645 635 LINE (OLDA,OLDB)-(NEWA,NEWB),BND 636 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),BND 640 DOIT=0 645 DIAG$=INKEY$ 650 IF DIAG$<>"" THEN GOSUB 700 655 GOTO 630 660 ' 661 ' 700 REM Diagonal cursor movements 701 ' 705 IF DIAG$=CHR$(0)+CHR$(71) THEN GOTO 710 ELSE GOTO 715 710 LINE (OLDA,OLDB)-(NEWA,NEWB),0 711 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA-AMT:NEWB=NEWB-AMT:DOIT=1 712 RETURN 715 IF DIAG$=CHR$(0)+CHR$(79) THEN GOTO 720 ELSE GOTO 725 720 LINE (OLDA,OLDB)-(NEWA,NEWB),0 721 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA-AMT:NEWB=NEWB+AMT:DOIT=1 722 RETURN 725 IF DIAG$=CHR$(0)+CHR$(73) THEN GOTO 730 ELSE GOTO 735 730 LINE (OLDA,OLDB)-(NEWA,NEWB),0 731 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA+AMT:NEWB=NEWB-AMT:DOIT=1 732 RETURN 735 IF DIAG$=CHR$(0)+CHR$(81) THEN GOTO 740 ELSE GOTO 745 740 LINE (OLDA,OLDB)-(NEWA,NEWB),0 741 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA+AMT:NEWB=NEWB+AMT:DOIT=1 742 RETURN 745 RETURN 750 IF AMT=6 THEN AMT=1 ELSE IF AMT=1 THEN AMT=6:RETURN 755 RETURN 760 LINE (OLDA,OLDB)-(NEWA,NEWB),0 761 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWB=NEWB-AMT:DOIT=1:RETURN 765 LINE (OLDA,OLDB)-(NEWA,NEWB),0 766 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA-AMT:DOIT=1:RETURN 770 LINE (OLDA,OLDB)-(NEWA,NEWB),0 771 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWA=NEWA+AMT:DOIT=1:RETURN 775 LINE (OLDA,OLDB)-(NEWA,NEWB),0 776 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0:NEWB=NEWB+AMT:DOIT=1:RETURN 780 ' 781 ' 800 REM Erase the line and have a new point 801 ' 805 PASTA=OLDA:PASTB=OLDB 810 IF DONE=0 THEN GOTO 840 815 IF NEWA<> OLDA AND NEWB<>OLDB THEN GOTO 860 820 IF NEWA>OLDA THEN OLDA=OLDA+2 825 IF NEWB>OLDB THEN OLDB=OLDB+1 830 IF NEWA<OLDA THEN OLDA=OLDA-2 835 IF NEWB<OLDB THEN OLDB=OLDB-1 840 LINE (OLDA,OLDB)-(NEWA,NEWB),0 841 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0 845 OLDA=NEWA:OLDB=NEWB 850 DONE=0 855 RETURN 860 LINE (OLDA,OLDB)-(NEWA,NEWB),0 861 LINE (OLDA+1,OLDB)-(NEWA+1,NEWB),0 865 LINE (OLDA,OLDB)-(OLDA,OLDB),BND 866 LINE (OLDA+1,OLDB)-(OLDA+1,OLDB),BND 870 GOTO 820 875 ' 876 ' 900 REM Draw the line permanently and have a new point 901 ' 905 PASTA=OLDA:PASTB=OLDB 910 OLDA=NEWA:OLDB=NEWB 915 DONE=1 920 RETURN 925 ' 926 ' 1000 REM ROUTINE TO ALLOW TEXT PRINTING 1001 ' 1005 LOCATE 25,1 1010 PRINT " Esc = Return to Graphics";SPC(9); 1015 LINE (OLDA,OLDB)-(NEWA,NEWB),0: LOCATE (INT(NEWB/8)),(INT((NEWA/8)+1)),1,6,7 1020 CHRS=1 1025 TEXT$=INPUT$(1) 1030 IF TEXT$=CHR$(27) OR TEXT$=CHR$(13) THEN GOTO 1080 ELSE GOTO 1035 1035 IF TEXT$=CHR$(8) THEN GOTO 1040 ELSE GOTO 1060 1040 CHRS=CHRS-1 1045 LOCATE (INT(NEWB/8)),(INT((NEWA/8)+CHRS)):PRINT " " 1050 LOCATE (INT(NEWB/8)),(INT((NEWA/8)+CHRS)) 1055 GOTO 1025 1060 PRINT TEXT$ 1065 CHRS=CHRS+1 1070 LOCATE (INT(NEWB/8)),(INT((NEWA/8)+CHRS)) 1075 GOTO 1025 1080 HELP=0 1085 FOR BLANK=1 TO 39:LOCATE 25,BLANK:PRINT CHR$(32);:NEXT BLANK 1090 RETURN 1095 ' 1096 ' 1100 REM ROUTINE TO SAVE THE PICTURE 1101 ' 1105 LOCATE 25,1:PRINT SPC(39); 1110 LOCATE 25,1:PRINT "Save/Print this as ";PICTURENAME$;"? (Y/N)"; 1115 ANS$=INPUT$(1) 1120 IF ANS$="Y" OR ANS$="y" THEN GOTO 1180 ELSE IF ANS$<>"N" AND ANS$<>"n" THEN GOTO 1105 ELSE GOTO 1125 1125 LOCATE 25,1:PRINT SPC(39); 1130 LOCATE 25,1:PRINT "What name: "; 1135 LOCATE 25,13:GOSUB 2200 1140 PICTURENAME$="" 1145 FOR SCAN=1 TO 8 1150 IF MID$(INPT$,SCAN,1)="." THEN GOTO 1165 ELSE GOTO 1155 1155 PICTURENAME$=PICTURENAME$+MID$(INPT$,SCAN,1) 1160 NEXT SCAN 1165 TAG$=".grf" 1170 PICTURENAME$=PICTURENAME$+TAG$ 1175 GOTO 1105 1180 LOCATE 25,1 1185 PRINT SPC(39); 1190 DEF SEG= &HB800 1195 BSAVE PICTURENAME$,0,&H4000 1200 RETURN 1205 ' 1206 ' 1300 REM Help Menu on Line 25 1301 ' 1305 KEY OFF 1310 LOCATE 25,1 1315 IF HELP=0 THEN GOTO 1320 ELSE GOTO 1325 1320 PRINT "1=Help 2=Clr 3=Circle 4=AreaFill 5=Text"; 1325 IF HELP = 1 THEN GOTO 1330 ELSE GOTO 1335 1330 PRINT "6=Box 7=Cursor 8=EndPgm 9=Erase 10=Line"; 1335 IF HELP = 2 THEN GOTO 1340 ELSE GOTO 1345 1340 PRINT SPC(39); 1345 IF HELP=0 THEN HELP =1 ELSE IF HELP=1 THEN HELP=2 ELSE IF HELP=2 THEN HELP=0 1350 RETURN 1355 ' 1356 ' 1400 REM Create a circle 1401 ' 1405 ASPECT=.8330001 1410 START=0 1415 ENDS=0 1420 PI=3.141593 1425 LOCATE 25,1:PRINT "Radius = ";SPC(29); 1430 LOCATE 25,13:GOSUB 2200 1435 RD=VAL(INPT$):IF RD=<0 THEN GOTO 1425 1440 LOCATE 25,1:PRINT "Full Circle? (Y/N)";SPC(20); 1445 LOCATE 25,23:GOSUB 2200:FULL$=INPT$ 1450 IF FULL$="Y" OR FULL$="y" THEN GOTO 1515 ELSE IF FULL$<>"N" AND FULL$<>"n" THEN GOTO 1440 1455 ANGLE$="2=Rt 1.5=Btm 1=Lft .5=Top" 1460 LOCATE 25,1:PRINT "Start: ";ANGLE$;SPC(7); 1465 LOCATE 25,34:GOSUB 2200:START$=INPT$ 1470 START=VAL(START$):IF START=<0 THEN GOTO 1460 1475 LOCATE 25,1:PRINT "End: ";ANGLE$;SPC(9); 1480 LOCATE 25,33:GOSUB 2200:ENDS$=INPT$ 1485 ENDS=VAL(ENDS$):IF ENDS=<0 THEN GOTO 1475 1490 START=(START*PI):ENDS=(ENDS*PI) 1495 LOCATE 25,1:PRINT "Draw radius lines? (Y/N)";SPC(15); 1500 LOCATE 25,26:GOSUB 2200:RLINS$=INPT$ 1505 IF RLINS$="Y" OR RLINS$="y" THEN GOTO 1510 ELSE IF RLINS$="N" OR RLINS$="n" THEN GOTO 1515 ELSE GOTO 1495 1510 START=-(START):ENDS=-(ENDS) 1511 DONE=1 1515 LOCATE 25,1:PRINT "Aspect: N=Normal T=Tall F=Flat "; 1520 LOCATE 25,36:GOSUB 2200:VIEW$=INPT$ 1525 IF VIEW$="T" OR VIEW$="t" THEN GOTO 1550 ELSE IF VIEW$="F" OR VIEW$= "f" THEN GOTO 1530 ELSE GOTO 1570 1530 LOCATE 25,1:PRINT "Flat Range: .01 to .8";SPC(17); 1535 LOCATE 25,26:GOSUB 2200:ASPECT$=INPT$ 1540 ASPECT=VAL(ASPECT$):IF ASPECT<.01 OR ASPECT>.83 THEN GOTO 1530 1545 GOTO 1570 1550 LOCATE 25,1:PRINT "Tall Range: .9 to 50(?)";SPC(15); 1555 LOCATE 25,30:GOSUB 2200:ASPECT$=INPT$ 1560 ASPECT=VAL(ASPECT$):IF ASPECT<.84 OR ASPECT>100 THEN GOTO 1550 1565 GOTO 1570 1570 REM Print the circle 1575 IF START=0 AND ENDS=0 THEN GOTO 1590 1580 CIRCLE (NEWA,NEWB),RD,BND,START,ENDS,ASPECT 1581 CIRCLE (NEWA+1,NEWB),RD,BND,START,ENDS,ASPECT 1585 GOTO 1595 1590 CIRCLE(NEWA,NEWB),RD,BND,,,ASPECT 1591 CIRCLE(NEWA+1,NEWB),RD,BND,,,ASPECT 1595 LOCATE 25,1:PRINT SPC(39); 1600 RETURN 1605 ' 1606 ' 1700 REM Fill in an area 1701 ' 1705 LOCATE 25,1:PRINT "Is cursor within closed area. (Y/N) "; 1710 LOCATE 25,37:GOSUB 2200:READY$=INPT$ 1715 IF READY$="Y" OR READY$="y" THEN GOTO 1725 ELSE GOTO 1785 1720 LOCATE 25,1:PRINT SPC(39); 1725 LOCATE 25,1:PRINT "Color? 0=";CLRA$(BKGRD);" 1=";CLRB$(PLT);" 2="; CLRC$(PLT);" 3=";CLRD$(PLT); 1730 LOCATE 25,38:GOSUB 2200:CLR$=INPT$ 1735 FILLCOLOR=VAL(CLR$) 1740 IF FILLCOLOR <0 OR FILLCOLOR>3 THEN GOTO 1725 1745 GOSUB 800 'erase cursor 1750 LOCATE 25,1:PRINT SPC(39); 1755 LOCATE 25,1:PRINT "Boundary? 1=";CLRB$(PLT);" 2=";CLRC$(PLT);" 3="; CLRD$(PLT); 1760 LOCATE 25,36:GOSUB 2200:BOUNDS$=INPT$ 1765 BND=VAL(BOUNDS$) 1770 IF BND<1 OR BND>3 THEN GOTO 1750 1775 PAINT (NEWA,NEWB),FILLCOLOR,BND 1780 IF FILLCOLOR = 0 THEN BND=3 ELSE BND=FILLCOLOR 1785 LOCATE 25,1:PRINT SPC(39); 1790 DONE=1 1795 RETURN 1798 ' 1799 ' 1800 REM Draw box 1801 ' 1805 LOCATE 25,1:PRINT "Do you want the box filled? (Y/N)";SPC(6); 1810 LOCATE 25,35:GOSUB 2200:FILLED$=INPT$ 1815 IF FILLED$="N" OR FILLED$="n" THEN GOTO 1830 ELSE IF FILLED$<>"Y" AND FILLED$<>"y" THEN GOTO 1805 1820 GOSUB 800 1825 LINE (PASTA,PASTB)-(NEWA,NEWB),BND,BF 1826 LINE (PASTA+1,PASTB)-(NEWA+1,NEWB),BND,BF 1830 GOSUB 800 1835 LINE (PASTA,PASTB)-(NEWA,NEWB),BND,B 1836 LINE (PASTA+1,PASTB)-(NEWA+1,NEWB),BND,B 1840 LOCATE 25,1:PRINT SPC(39); 1845 HELP=0 1850 DONE=1 1855 RETURN 1860 ' 1861 ' 1900 REM End the Program 1901 ' 1905 LOCATE 25,1:PRINT "(ESC)ape (S)ave (P)rint (E)nd-not save "; 1910 LOCATE 25,37:ANS$=INPUT$(1) 1915 IF ANS$="E" OR ANS$="e" THEN GOTO 1925 ELSE IF ANS$="S" OR ANS$="s" THEN GOSUB 1100 ELSE IF ANS$=CHR$(27) THEN GOTO 1930 ELSE IF ANS$="P" OR ANS$="p" THEN GOTO 1940 ELSE GOTO 1905 1920 GOTO 1905 1925 CLS: GOTO 150 1930 LOCATE 25,1:PRINT SPC(39); 1935 RETURN 1940 GOSUB 1100 1945 GOTO 4000 1950 RETURN 1951 ' 1955 ' 2000 REM Change the Color Parameters 2001 ' 2005 LOCATE 25,1:PRINT SPC(39); 2010 LOCATE 25,1:PRINT "Line Color= "; 2015 IF BND=1 THEN PRINT CLRB$(PLT); ELSE IF BND=2 THEN PRINT CLRC$(PLT); ELSE IF BND=3 THEN PRINT CLRD$(PLT); 2020 LOCATE 25,20:PRINT "Change? (Y/N)"; 2025 LOCATE 25,35:CHNG$=INPUT$(1) 2030 IF CHNG$="Y" OR CHNG$="y" THEN GOTO 2035 ELSE GOTO 2045 2035 IF BND=1 THEN BND=2 ELSE IF BND=2 THEN BND=3 ELSE IF BND=3 THEN BND=1 2040 GOTO 2005 2045 LOCATE 25,1:PRINT SPC(39); 2050 LOCATE 25,1:PRINT "Other changes? (Y/N)"; 2055 LOCATE 25,30:MORE$=INPUT$(1) 2060 IF MORE$="Y" OR MORE$="y" THEN GOTO 2070 2065 LOCATE 25,1:PRINT SPC(39);:RETURN 2070 LOCATE 25,1:PRINT SPC(39); 2075 LOCATE 25,1:PRINT "Clrs 0(Grn,Rd,Brn) 1(Cyan,Mgta,Wht)"; 2080 LOCATE 25,37:PALETTE$=INPUT$(1) 2085 PLT=VAL(PALETTE$) 2090 IF PLT<0 OR PLT>1 THEN GOTO 2070 2095 LOCATE 25,1:PRINT SPC(39); 2100 LOCATE 25,1:PRINT "Bkgrnd 0(Blk) 1(Blue) 2-15(Others)"; 2105 LOCATE 25,36:GOSUB 2200:BACKGROUND$=INPT$ 2110 BKGRD=VAL(BACKGROUND$) 2115 IF BKGRD<0 OR BKGRD>15 THEN GOTO 2095 2120 COLOR (BKGRD),(PLT) 2125 LOCATE 25,1:PRINT SPC(39); 2130 RETURN 2135 ' 2136 ' 2200 REM routine to eliminate carriage return on input 2201 ' 2205 INPT$="" 2210 X$=INPUT$(1) 2215 IF X$=CHR$(13) THEN RETURN ELSE GOTO 2220 2220 IF X$=CHR$(8) THEN GOTO 2225 ELSE GOTO 2240 2225 INPT$=LEFT$(INPT$,(LEN(INPT$)-1)) 2230 PRINT CHR$(29);CHR$(32);CHR$(29); 2235 GOTO 2210 2240 INPT$=INPT$+X$ 2245 PRINT X$; 2250 GOTO 2210 2255 ' 2256 ' 3000 REM Error handling section 3001 ' 3005 LOCATE 25,1:PRINT SPC(39); 3010 LOCATE 25,1:PRINT "Error #";ERR;"in line";ERL;" Any Key:"; 3015 LOCATE 25,39 3020 ANS$=INPUT$(1) 3025 RESUME 1900 3030 RESUME 500 3035 ' 3036 ' 4000 REM GRAPHICS DUMP ROUTINE 4001 ' 4010 LOCATE 25,1: PRINT "Insert Graf-Pix Disk. (Press any key)"; 4020 ANS$=INPUT$(1) 4030 SYSTEM 4035 ' 4036 ' 5000 REM Print Documentation 5005 ' 5010 CLS:SCREEN 0:WIDTH 80 5015 ON ERROR GOTO 5200 5016 PRINT "MAKE SURE THE GRAF-PIX PROGRAM DISK" 5017 PRINT "IS IN DRIVE A. HIT ANY KEY WHEN READY 5018 ANS$=INPUT$(1) 5019 CLS 5020 CLOSE #2: OPEN "GP.DOC" FOR INPUT AS #2 5025 PRINT:PRINT"MAKE SURE THAT YOUR PRINTER IS ON AND LOADED WITH CONTINUOUS FORM PAPER. 5030 PRINT"ALIGN THE PRINT HEAD WITH THE TOP OF THE FORM AND 5035 PRINT" SET THE PRINTER TO PRINT 66 LINES PER PAGE. 5040 PRINT"THE PRINTING ROUTINE WILL TAKE ABOUT 3 MINUTES AT 80 CPS. 5045 PRINT"DO YOU WISH TO PROCESS WITH PRINTING NOW (Y/N)? "; 5050 Q$=INKEY$:IF Q$="" THEN 5050 5055 IF Q$<>"Y" AND Q$<>"y" THEN GOTO 5155 5060 ON ERROR GOTO 5230 5065 LPRINT " "; '*** tests for whether printer is on 5070 LOCATE 25,1:PRINT">>> Printing Documentation <<< (Press CTRL+<Home> to terminate.)";SPACE$(13);:LOCATE 24,1 5075 ' 5076 ' - printing routine - 5080 INDENT=8 5085 FOR J=1 TO 100 5090 LPRINT:LPRINT:LPRINT:LPRINT:LPRINT:LPRINT 5095 FOR I=1 TO 55 5098 IF EOF(2) THEN CLOSE #2:GOTO 5145 5100 LINE INPUT #2,P$ 5105 PRINT P$ 5110 IF LEFT$(P$,1)="\" THEN 5135 5115 LPRINT SPACE$(INDENT);:LPRINT P$ 5120 Q$=INKEY$:IF Q$<>"" THEN IF ASC(RIGHT$(Q$,1))=119 THEN 5150 5130 NEXT I 5135 LPRINT:LPRINT:LPRINT:LPRINT:LPRINT 5140 NEXT J 5145 FOR K=I TO 55:LPRINT:NEXT K 5150 ' - terminate printing - 5155 CLOSE #2:CLS:SCREEN 1:GOTO 150 5160 FOR SPACES=1 TO 12 5165 LPRINT 5170 NEXT SPACES 5175 RETURN 5180 ' 5200 CLS:PRINT "Make sure the Graf-Pix disk" 5205 PRINT " is in the logged drive. Strike" 5210 PRINT " any key when ready." 5215 ANS$=INPUT$(1) 5220 RESUME 5000 5225 ' 5230 CLS:PRINT "Make sure the printer is ready . . ." 5235 PRINT "(Strike any key when ready.)" 5240 ANS$=INPUT$(1) 5245 RESUME 5060 5250 ' 5251 ' 6000 REM Program to transfer control to COLOR/GRAPHICS adapter 6001 ' 6005 KEY OFF:CLS 6010 COLOR 31:PRINT"CAUTION!!!":COLOR 7 6015 PRINT:PRINT "IF YOU DO NOT HAVE A COLOR ADAPTER" 6020 PRINT "CARD INSTALLED, DO NOT USE THIS" 6025 PRINT "PROGRAM OR YOU'LL HAVE TO START ALL" 6030 PRINT "OVER AGAIN!! 6035 PRINT:PRINT "DO YOU WISH TO PROCEED? (Y/N)" 6040 A$=INPUT$(1) 6045 GOSUB 6070 6050 CLS 6055 WIDTH 80: DEF SEG=0: A=PEEK(&H410): POKE &H410, (A AND &HCF) OR &H20 6060 WIDTH 40: SCREEN 1: SCREEN 0: LOCATE ,,1,6,7 6065 RETURN 6070 REM CHECK FOR ANSWER 6075 IF A$="Y" OR A$="y" THEN RETURN 6080 WIDTH 80:CLS:SYSTEM 6085 END 7001 '***************************************** 7002 '* * 7003 '* G R A F - P I X * 7004 '* * 7005 '* A Graphics Program * 7006 '* by Read G. Gilgen * 7007 '* U.W. Labs for Recorded Instruction * 7008 '* Madison, WI 53706 608-262-1408 * 7009 '* * 7010 '* (c) 1982 Board of Regents * 7011 '* University of Wisconsin System * 7012 '* * 7014 '***************************************** y of Wisconsin System * 7012 '* *