PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #191)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “DVED SCREEN EDITOR”

Here are three very interesting, very basic BASIC "Paint" programs.

The EASEL program is a set of standalone programs used for preparation
of artistic graphics done in medium resolution mode. Color, line size
and dimensions are controlled by function key usage.

It has a companion system here in EASYGRAF, a menu-driven facility for
producing medium or high-resolution graphics images. With it, it is
possible to store up to 10 images per diskette. Once recorded, these
images may be used with other programs since they are recorded in
standard BSAVE format.  Optionally they may also be displayed and
printed by using the print feature of EASYGRAF.

The Digidraw is a general purpose drawing tool designed to run in the
high resolution mode (640 x 200).  With Digidraw you can create, store,
change any picture or image which can be drawn in the IBM high
resolution graphics mode.  Routine shapes such as boxes, circles,
ellispses, arcs, etc. can be easily drawn with two or three keystrokes
any place on the screen.

For documenting all your work, here is DVED, a compact, screen-oriented
text editor.  As its documentation is part of the program, loading DVED
with no parameters will enter the help facility which interactively
provides the documentation of all DVED features.  This help facility
can be printed out as a complete, formatted reference manual.

System Requirements:  Some programs require color, BASIC, and
EASEL uses a Light Pen.

How to Start: Consult the .DOC and README files for directions and
documentation.  To run the BASIC programs, consult the directions in
GETTING STARTED for your configuration.

Suggested Registration:  DIGIDRAW $25.00

File Descriptions:

COLOR    BAS  Part of PIECHART.BAS
READ     ME   Part of DVED.COM
DVED     COM  Good screen-oriented text editor (Vers 6.02)-Can use
with mouse
DIGIDRAW DOC  Documentation for DIGIDRAW.BAS
DIGIDRAW BAS  Nifty drawing program  (Requires graphics & BASICA)
GRAPH    BAS  Graphs data (x, y coordinates and function)
HISTGRAM BAS  Displays and prints simple histogram
GRAPH2   BAS  Graphs data (x, y coordinates and function)
INFO     BIN  Binary file for DIGIDRAW.BAS
BUILGRAF BAS  Part of EASYGRAF.BAS - build graph file
EASYGRAF BAS  EasyGraf drawing package  (Requires color graphics)
-------- ---  EASYGRAF
PENSAVE  BAS  Part of EASEL.BAS - save drawing
PENPAINT BAS  Part of EASEL.BAS - demo - color train with light pen
PENLINE  BAS  Part of EASEL.BAS - draw lines
PENDRAW  BAS  Part of EASEL.BAS - draw dots
PENCLEAR BAS  Part of EASEL.BAS - clear screen
PENCIRC  BAS  Part of EASEL.BAS - draw circles
EASEL    ASC  Part of EASEL.BAS - documentation
EASEL    BAS  Easel drawing package  (Req light pen, color graphics)
-------- ---  EASEL
SKETCH   BAS  Etch-a-sketch with cursor keys
PLOT     BAS  Creates plots from your coordinates
PIECHART BAS  Draws pie charts - Version 1.0
LOGO     BIN  Binary file for DIGIDRAW.BAS
COLRGRAF BAS  Part of EASYGRAF.BAS
DISPGRAF BAS  Part of EASYGRAF.BAS - display graph
GRAPHIT  BAS  Part of EASYGRAF.BAS - draws with cursor & function keys
EASYGRAF ASC  Part of EASYGRAF.BAS - documentation
DRAWGRAF BAS  Part of EASYGRAF.BAS - draw a graph
DISPGRDR BAS  Part of EASYGRAF.BAS - display graph directory
TEMPGRAF BAS  Part of EASYGRAF.BAS - temporary graph storage
SAVEGRAF BAS  Part of EASYGRAF.BAS
SAMPDRAW BAS  Part of EASYGRAF.BAS - sample drawing - part of house
PRNTSAVE BAS  Part of EASYGRAF.BAS
PRNTGRAF BAS  Part of EASYGRAF.BAS
PRN2GRAF BAS  Part of EASYGRAF.BAS
PRINGRAF BAS  Part of EASYGRAF.BAS
MONOGRAF BAS  Part of EASYGRAF.BAS - monochrome graph
TESTPRNT BAS  Part of EASYGRAF.BAS
README1  NOW  Notes and file listing

BUILGRAF.BAS

50 OPEN "GRAfindx.EZG" AS #1 LEN=128
60 FIELD #1, 10 AS IDX$, 25 AS DESC$
65 FOR I = 1 TO 10
70 LSET IDX$= SPACE$(10)
80 LSET DESC$ = SPACE$(25)
90 PUT #1,I
92 NEXT
95 CLOSE #1
100 PRINT "  "
110 PRINT "     INDEX HAS BEEN BUILT"
120 CHAIN "EASYGRAF"

COLOR.BAS

5 'SAVE "C"
100 KEY OFF
105 CLS
200 WIDTH 80: DEF SEG=0: A=PEEK(&H410): POKE &H410,(A AND &HCF) OR &H20
210 WIDTH  40 :SCREEN 1: SCREEN 0: LOCATE ,,1,6,7
215 KEY ON
216 SCREEN 0,1
218 COLOR 15,9,4
220 WIDTH 40
225 CLS
230 CHAIN PROGRAMID$

COLRGRAF.BAS

8 CLS
10 WIDTH 80:DEF SEG=0:A=PEEK(&H410):POKE &H410,(A AND &HCF)OR &H20:WIDTH 40:SCREEN 1:SCREEN 0:LOCATE ,,1,6,7:COLOR 15,9,4:CLS:KEY OFF
20 CHAIN "easygraf"

DIGIDRAW.BAS

1 CLEAR,,1024 : ON ERROR GOTO 30000 : SCREEN 2 : KEY OFF : CLS
2 DEF SEG=&HB800 : BLOAD "LOGO.BIN",0
3 LOCATE 25,30 : PRINT " Hit ANY key to start"; : FOR I=1 TO 200 : NEXT I
4 S$=INKEY$ : IF S$="" THEN LOCATE 25,30 : PRINT"                     ";:GOTO 3
5 CLS : BLOAD "INFO.BIN",0
6 LOCATE 25,30 : PRINT "Hit ANY key to procede"; : FOR I=1 TO 200 : NEXT I
7 S$=INKEY$ : IF S$="" THEN LOCATE 25,30 : PRINT "                        "; :   GOTO 6
9 DEFINT A-Y : INC=1 : PENCIL=1 : C=0 : SCREEN 2 : CLS : FUNC=3 : PASS=0
10 R=4 : R$(1)="PSET" : R$(2)="PRESET" : R$(3)="XOR" : R$(4)="OR"                   : R$(5)="AND"
11 DIM IMAGE(10,10) : S=3 : ZPI=3.141593
12 REM DIGIDRAW IS THE PROPERTY OF AUTUMN SOFTWARE. YOU ARE ENCOURAGED TO COPY
13 REM AND SHARE DIGIDRAW WITH OTHER PC USERS. MAKE SURE THE FOLLOWING FOUR
14 REM FILES ARE COPIED : DIGIDRAW.BAS, LOGO.BIN, INFO.BIN, AND DIGIDRAW.DOC
15 REM DIGIDRAW.DOC CONTAINS PROGRAM DIRECTIONS.
16 REM IF YOU FIND DIGIDRAW USEFUL, A CONTRIBUTION ($15. SUGGESTED) WILL BE
17 REM GREATLY APPRECIATED.  THANK YOU!!
18 REM    AUTUMN SOFTWARE   BOX 253C   GREENPOINT RD.  LAVALE, MD.  21502
19 REM ******************************************************************
20 ON KEY(1) GOSUB 1000 : ON KEY(2) GOSUB 2000 : ON KEY(3) GOSUB 3000
30 ON KEY(4) GOSUB 4000 : ON KEY(5) GOSUB 5000 : ON KEY(6) GOSUB 6000
40 ON KEY(7) GOSUB 7000 : ON KEY(8) GOSUB 8000 : ON KEY(9) GOSUB 9000
50 ON KEY(10) GOSUB 10000 : ON KEY(11) GOSUB 900 : ON KEY(12) GOSUB 910
60 ON KEY(13) GOSUB 920 : ON KEY(14) GOSUB 930
70 FOR I=1 TO 14 : KEY(I) ON : NEXT I
75 GOSUB 1000 : GOSUB 2000 : GOSUB 3000  : GOSUB 9000 : GOSUB 10000
80 X=320 : Y=100 : NX=X : NY=Y : OP=0
90 PSET (X,Y) : PRESET (X,Y)
100 K$=INKEY$ : IF K$="" GOTO 90
101 IF ASC(K$) = 27 THEN PASS=0
102 IF LEN(K$)=2 THEN K$=RIGHT$(K$,1) : GOSUB 950
110 GOTO 90
900 KEY(11) OFF
901 NY=Y-INC : NX=X : GOSUB 20000 : GOSUB 990
902 KEY(11) ON : RETURN
910 KEY(12) OFF
911 NX=X-INC : NY=Y : GOSUB 20000 : GOSUB 990
912 KEY(12) ON : RETURN
920 KEY(13) OFF
921 NX=X+INC : NY=Y : GOSUB 20000 : GOSUB 990
922 KEY(13) ON : RETURN
930 KEY(14) OFF
931 NY=Y+INC : NX=X : GOSUB 20000 : GOSUB 990
932 KEY(14) ON : RETURN
950 IF K$="G" THEN NX=X-INCX : NY=Y-INC : GOSUB 21000 : GOSUB 990 :RETURN
960 IF K$="I" THEN NX=X+INCX : NY=Y-INC : GOSUB 21000 : GOSUB 990 : RETURN
970 IF K$="O" THEN NX=X-INCX : NY=Y+INC : GOSUB 21000 : GOSUB 990 : RETURN
980 IF K$="Q" THEN NX=X+INCX : NY=Y+INC : GOSUB 21000 : GOSUB 990 :RETURN
981 IF K$="R" THEN GOSUB 11000 : RETURN
982 IF ASC(K$)= 25 THEN KEY OFF : LOCATE 25,3 : PRINT "  Present Pencil Position = " X;Y; : FOR I=1 TO 2500 : NEXT I : KEY ON
983 IF ASC(K$)= 18 THEN CLS :OP=0 : RETURN
984 IF ASC(K$)= 19 THEN GOTO 985 ELSE RETURN
985 KEY OFF : LOCATE 25,1 : PRINT "Present RECALL= "; R$(R); "   PSET=1  PRESET=2  XOR=3  OR=4  AND=5 Enter new number ";
986 K$=INKEY$ : IF K$="" THEN GOTO 986
987 IF ASC(K$) >48 AND ASC(K$) <54 THEN LOCATE 25,78 : PRINT K$; ELSE GOTO 986
988 R=ASC(K$)-48 :KEY ON : RETURN
990 IF PENCIL=0 THEN GOTO 992
991 LINE (X,Y)-(NX,NY),C : OP=C : X=NX : Y=NY :  RETURN
992 PSET (X,Y),OP : OP=POINT(NX,NY) : X=NX : Y=NY : PSET(X,Y),C : RETURN
1000 KEY(1) OFF
1010 IF PENCIL=0 THEN PENCIL=1 ELSE PENCIL=0
1020 IF PENCIL=0 THEN KEY 1,"Pen up"
1030 IF PENCIL=1 THEN KEY 1,"Pen dn"
1040 KEY(1) ON : RETURN
2000 KEY(2) OFF
2010 IF C=0 THEN C=1 ELSE C=0
2020 IF C=0 THEN KEY 2,"Erase"
2030 IF C=1 THEN KEY 2,"Point"
2040 KEY(2) ON : RETURN
3000 KEY(3) OFF
3010 INC=INC+1 : INCX=INC*3 : IF INC=23 THEN  BEEP
3015 IF INC=26 THEN INC=1 : INCX=3
3020 KEY 3,"pm="+STR$(INC)
3030 KEY(3) ON : RETURN
4000 KEY(4) OFF
4010 PASS=PASS+1
4020 IF PASS=1 THEN FX=X : FY=Y : GOTO 4900
4030 IF PASS=2 THEN SX=X : SY=Y : PASS=0 : ON FUNC GOTO 4040,4050
4040 LINE (FX,FY)-(SX,SY),C : OP=C : GOTO 4900
4050 LINE (FX,FY)-(SX,SY),C,B : OP=C
4900 KEY(4) ON : RETURN
5000 KEY(5) OFF  : ON FUNC GOTO 5010,5200
5010 PASS=PASS+1 : IF PASS=1 THEN FX=X : FY=Y : OP=1 : GOTO 5900
5020 IF PASS=2 THEN SX=X : SY=Y : OP=1 : GOTO 5900
5030 IF PASS=3 THEN PASS=0
5100 LINE(X,Y)-(SX,SY),C : OP=C
5110 LINE(SX,SY)-(FX,FY),C
5120 LINE(FX,FY)-(X,Y),C : GOTO 5900
5200 PASS=PASS+1
5210 IF PASS=1 THEN FX=X : FY=Y : GOTO 5900
5220 IF PASS=2 THEN GOTO 5300
5230 IF PASS=3 THEN PASS=0 : GOTO 5900
5300 ZBX=ABS((FX-X)^2) : ZBY=ABS(((FY-Y)*2.4)^2) : RA=INT(SQR(ZBX+ZBY))
5310 DX=X-FX : DY=2.4*(Y-FY) : IF DX=0 OR DY=0 THEN GOTO 5341 ELSE ZANG=ATN(ABS(DY/DX))
5311 IF DX >= 0 AND DY <= 0 THEN ZQUAD = 0 : GOTO 5350
5320 IF DX <= 0 AND DY <= 0 THEN ZQUAD = -1*ZPI : GOTO 5350
5330 IF DX <= 0 AND DY >= 0 THEN ZQUAD = ZPI : GOTO 5350
5340 IF DX >= 0 AND DY >= 0 THEN ZQUAD = -2*ZPI : GOTO 5350
5341 IF DX= 0 AND DY> 0 THEN ZANG=3*ZPI/2
5342 IF DY= 0 AND DX> 0 THEN ZANG=0!
5343 IF DY= 0 AND DX< 0 THEN ZANG=ZPI
5344 IF DX= 0 AND DY< 0 THEN ZANG=ZPI/2
5345 ZQUAD=0!
5350 ZSA=ABS(ZANG+ZQUAD)
5351 KEY OFF : LOCATE 25,5 : PRINT "Hold space bar to draw arc , hit ENTER key when done";
5360 A$=INKEY$ : IF A$="" GOTO 5360
5370 IF ASC(A$)=32 THEN GOTO 5380
5371 IF ASC(A$)=13 THEN KEY ON : PASS=0  : OP=C : GOTO 5900
5380 IF C=1 THEN GOTO 5400 ELSE GOTO 5500
5400 ZFA=ZSA+0.01745 : IF ZFA > 2*ZPI THEN ZFA=0!
5410 CIRCLE(FX,FY),RA,C,ZSA,ZFA : GOTO 5600
5500 ZFA=ZSA-0.01745 : IF ZFA < 0 THEN ZFA=2*ZPI
5510 CIRCLE(FX,FY),RA,C,ZFA,ZSA : GOTO 5600
5600 ZSA=ZFA : GOTO 5360
5900 KEY(5) ON : RETURN
6000 KEY(6) OFF
6010 PASS=PASS+1
6020 IF PASS=1 THEN FX=X : FY=Y : GOTO 6900
6030 ON FUNC GOTO 6040,6100
6040 PASS=0 : OP=C : ZBX=ABS((FX-X)^2) : ZBY=ABS(((FY-Y)*2.4)^2)
6041 RA=INT(SQR(ZBX+ZBY))
6050 CIRCLE (FX,FY),RA,C : GOTO 6900
6100 IF PASS=2 THEN SX=X : SY=Y : GOTO 6900
6110 PASS=0 : DX=ABS(SX-FX) : IF DX=0 THEN DX=ABS(X-SX) : IF DX=0 THEN DX=1
6115 DY=ABS(Y-SY) : IF DY=0 THEN DY=ABS(SY-FY) : IF DY=0 THEN DY=1
6120 IF DY/DX > 1 THEN CIRCLE (FX,FY),DY,C,,,DY/DX : OP=C
6130 IF DY/DX <=1 THEN CIRCLE (FX,FY),DX,C,,,DY/DX : OP=C
6900 KEY(6) ON : RETURN
7000 KEY(7) OFF
7010 ON FUNC GOTO 7020,7030
7020 PRESET (X,Y) : PAINT (X,Y),1 : OP=1 : GOTO 7040
7030 PSET (X,Y) : PAINT (X,Y),0 : OP=0
7040 KEY(7) ON : RETURN
8000 KEY(8) OFF
8010 ON FUNC GOTO 8100,8200
8100 ON S GOTO 8110,8110,8130
8110 PASS=PASS+1 : IF PASS=1 THEN FX=X : FY=Y : GOTO 8900
8111 PASS=0 : XD=ABS(X-FX)+1 : YD=ABS(Y-FY)+1 : D=INT((XD+7)/8)*YD+4
8112 ERASE IMAGE : DIM IMAGE(D) : PSET(X,Y),OP :  GET(FX,FY)-(X,Y),IMAGE :       ON S GOTO 8900,8123
8123 KEY OFF : LOCATE 25,10 : PRINT "Enter filename for IMAGE save     " ;
8124 F1$="" : GOSUB 8500
8125 OPEN F1$ FOR OUTPUT AS #1 : FOR I=0 TO D : WRITE #1,IMAGE(I) : NEXT I
8126 CLOSE : KEY ON : GOTO 8900
8130 KEY OFF : LOCATE 25,10 : PRINT "Enter filename for SCREEN save    " ;
8131 F1$="" : GOSUB 8500
8132 DEF SEG=&HB800 :BSAVE F1$,0,&H4000 :KEY ON : GOTO 8900
8200 ON S GOTO 8210,8220,8230
8210 IF C=0 THEN PUT (X,Y),IMAGE,>= : GOTO 8219
8211 ON R GOTO 8212,8213,8214,8215,8216
8212 PUT (X,Y),IMAGE,PSET : GOTO 8219
8213 PUT (X,Y),IMAGE,PRESET : GOTO 8219
8214 PUT (X,Y),IMAGE,>= : GOTO 8219
8215 PUT (X,Y),IMAGE,OR : GOTO 8219
8216 PUT (X,Y),IMAGE,AND : GOTO 8219
8219 OP=POINT(X,Y) : KEY ON : GOTO 8900
8220 KEY OFF : LOCATE 25,10 : PRINT "Enter filename for IMAGE recall    ";
8221 F1$="" : GOSUB 8500
8222 OPEN F1$ FOR INPUT AS #1 : INPUT #1,N1,N2 : ERASE IMAGE
8223 D=4+INT((N1+7)/8)*N2 : DIM IMAGE(D) : IMAGE(0)=N1 : IMAGE(1)=N2
8224 FOR I=2 TO D : INPUT #1,IMAGE(I) : NEXT I : CLOSE : GOTO 8210
8230 KEY OFF : LOCATE 25,10 : PRINT" Enter filename for SCREEN recall     ";
8231 F1$="" : GOSUB 8500
8232 DEF SEG=&HB800 : BLOAD F1$,0 : KEY ON : GOTO 8900
8500 COLUMN=POS(0) : COL=POS(0)
8501 LOCATE 25,COLUMN
8505 S$=INKEY$ : IF S$="" THEN GOTO 8505
8510 IF ASC(S$) = 8 THEN GOTO 8600
8520 IF ASC(S$) > 31 AND ASC(S$) < 123 THEN PRINT S$; : COLUMN=COLUMN+1
8530 IF ASC(S$) = 13 THEN GOTO 8700 ELSE GOTO 8505
8600 COLUMN=COLUMN-1 : LOCATE 25,COLUMN : PRINT " "; : GOTO 8501
8700 F1$=""
8710 FOR I=COL TO COLUMN : IF SCREEN(25,I) <> 32 THEN F1$=F1$+CHR$(             SCREEN(25,I))
8720 NEXT I
8721 KEY ON : KEY OFF
8730 RETURN
8900 KEY(8) ON : RETURN
9000 KEY(9) OFF
9010 S=S+1 : IF S=4 THEN S=1
9020 ON S GOTO 9100,9200,9300
9100 KEY 9,"Memory" : GOTO 9500
9200 KEY 9,"Disk  " : GOTO 9500
9300 KEY 9,"Screen"
9500 KEY(9) ON : RETURN
10000 KEY(10) OFF
10010 FUNC=FUNC+1 : IF FUNC=4 THEN FUNC=1
10020 ON FUNC GOTO 10030,10040,10050
10030 KEY ON : KEY 4,"Line" : KEY 5,"Triang" : KEY 6,"Circle" : KEY 7,"White" : KEY 8,"Store" : KEY 10,"One" : GOTO 10060
10040 KEY 4," Box" : KEY 5," Arc  " : KEY 6,"Elipse" : KEY 7,"Black" :          KEY 8,"Recall" : KEY 10,"Two" : GOTO 10060
10050 KEY OFF
10060 KEY(10) ON : RETURN
11000 ROW=INT(Y+4)/8 : COLUMN=INT(X+4)/8
11001 LOCATE ROW,COLUMN
11010 L$=INKEY$ : IF L$="" THEN GOTO 11010
11011 IF ASC(L$) = 8 THEN GOTO 11050
11020 IF ASC(L$) > 31 AND ASC(L$) < 123 THEN PRINT L$; : COLUMN=COLUMN+1
11021 IF COLUMN > 79 THEN GOTO 11060
11030 IF ASC(L$) = 13 THEN OP=POINT(X,Y) : RETURN ELSE GOTO 11010
11050 COLUMN=COLUMN-1 : LOCATE ROW,COLUMN : PRINT " "; : GOTO 11001
11060 KEY OFF: BEEP: LOCATE 25,1: PRINT "No room left on that line, re-enter the INSERT mode at a new pencil location..";
11061 FOR I=1 TO 7000 : NEXT I : OP=POINT(X,Y) : KEY ON : BEEP : RETURN
20000 IF NX > 639 THEN NX=639
20001 IF NX < 0 THEN NX=0
20002 IF NY > 191 THEN NY=191
20003 IF NY < 0 THEN NY=0
20004 RETURN
21000 IF NX >= 639 THEN COR=NX-639 : NX=639 : IF K$="I" THEN NY=NY+COR/3        ELSE  NY=NY-COR/3
21001 IF NX <= 0 THEN COR=-1*NX : NX=0 : IF K$="O" THEN  NY=NY-COR/3            ELSE  NY=NY+COR/3
21002 IF NY >= 191 THEN COR=NY-191 : NY=191 : IF K$="O" THEN  NX=NX+COR*3       ELSE  NX=NX-COR*3
21003 IF NY <= 0 THEN COR=NY*-1 : NY=0 : IF K$="I" THEN  NX=NX-COR*3            ELSE  NX=NX+COR*3
21004 RETURN
30000 SOUND 40,20 : KEY OFF : LOCATE 25,10
30010 PRINT" **** Sorry, Basic Error Code =";ERR;" ****                   ";
30020 PTIME$=TIME$ : TIME$="00:00:00"
30030 IF TIME$="00:00:08" THEN GOTO 30040 ELSE GOTO 30030
30040 TIME$=PTIME$ : FOR I=1 TO 14 : KEY(I) ON : NEXT I : KEY ON
30050 RESUME 90

DISPGRAF.BAS

1 DEF SEG=&HB800
10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
40 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF  DISPLAY SCREEN    "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
101 INPUT " ENTER NAME OF ITEM TO BE DISPLAYED      ==>";GRAFNAM$
200 INPUT " ENTER RESOLUTION <Low or High)          ==>";RESOLUT$
210 IF LEFT$(RESOLUT$,1) = "l" OR LEFT$(RESOLUT$,1) = "L" THEN RES%=1:GOTO 233
220 IF LEFT$(RESOLUT$,1) = "h" OR LEFT$(RESOLUT$,1) = "H" THEN RES%=2:GOTO 233
230 LOCATE CSRLIN-1:BEEP:GOTO 200
233 COLOR 9,1
234 SCREEN RES%,1
235 DEF SEG=&HB800
240 BLOAD GRAFNAM$+".EZG",0
270 K$=INKEY$:IF K$="" THEN 270
275 SCREEN 0,1
277 CLS
280 PRINT " "
300 CHAIN "EASYGRAF"

DISPGRDR.BAS

10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
40 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF   DIRECTORY        "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
120 OPEN "GRAFINDX.EZG" AS #1 LEN=128
130 FIELD #1,10 AS IDX$, 25 AS DESC$
135 FOR I = 1 TO 10
140 GET #1,I
150 IF IDX$ <> SPACE$(10) THEN PRINT " "+IDX$+"  "+DESC$: FOUND$="yes"
160 NEXT
180 IF FOUND$ <> "yes" THEN GOTO 500
430 PRINT " "
440 PRINT "   PRESS space bar TO RETURN TO MENU"
450 CLOSE #1
460 K$=INKEY$: IF K$="" THEN 460
470 IF K$ = " " THEN 490
480 GOTO 460
490 CHAIN "EASYGRAF"
500 PRINT " "
510 PRINT "          NO  ENTRIES  FOUND"
520 PRINT " "
530 PRINT " "
540 PRINT " "
550 PRINT " "
560 PRINT " "
570 GOTO 430

DRAWGRAF.BAS

10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
40 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF   DRAW  GRAPHICS   "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
110 PRINT "          A  -  HIGH RESOLUTION         "+"          B  -  MEDIUM RESOLUTION"
150 PRINT "        Esc  -  EXIT"
190 PRINT " "
200 PRINT " "
210 PRINT "       SELECT FUNCTION BY LETTER"
220 K$=INKEY$:IF K$="" THEN 220
230 IF K$="A" THEN CHAIN "GRAPHIT"
240 IF K$="a" THEN CHAIN "GRAPHIT"
250 IF K$="B" THEN CHAIN "GRAPHII"
260 IF K$="b" THEN CHAIN "GRAPHII"
370 IF K$=CHR$(27) THEN GOTO 500
380 GOTO 220
500 CHAIN "EASYGRAF"

EASEL.BAS

1 ON ERROR GOTO 0
2 TITLE1$="EASEL Drawing Board":TITLE2$="Version 1.0"
5 DRIVEID$="A:":DRIVEID2$="B:"
8 KEY OFF
10 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
15 SCREEN 0,1:COLOR 7,9,4:CLS
20 GOSUB 1060
25 PRINT " "
30 PRINT SPACE$(10);" A - Draw circles"
40 PRINT SPACE$(10);" B - Draw lines"
50 PRINT SPACE$(10);" C - Draw dots"
60 PRINT SPACE$(10);" D - Save drawing"
70 PRINT SPACE$(10);" E - Clear drawing"
121 PRINT SPACE$(9);"Esc - Exit"
125 PRINT " "
126 PRINT " "
130 PRINT SPACE$(7);"Select Function by Letter"
140 ON ERROR GOTO 300
150 K$=INKEY$: IF K$="" THEN 150
160 IF K$="A" OR K$="a" THEN CHAIN DRIVEID$+"pencirc"
170 IF K$="B" OR K$="b" THEN CHAIN DRIVEID$+"penline"
180 IF K$="C" OR K$="c" THEN CHAIN DRIVEID$+"pendraw"
190 IF K$="E" OR K$="e" THEN CHAIN DRIVEID$+"penclear
220 IF K$=CHR$(27) THEN KEY ON:CLS:END
259 BEEP
260 GOTO 150
300 PRINT " "
305 GOTO 1
1000 CLS
1010 REM heading generation routine
1020 LOCATE 21,8:INPUT "title1";TITLE1$
1030 LOCATE 22,8:INPUT "title2";TITLE2$
1040 GOSUB 1070
1050 GOTO 1020
1060 REM ENTER PROGRAM HERE IF CONSOLE INPUT NOT DESIRED
1070 LH%=LEN(TITLE1$)
1080 IF LEN(TITLE2$)> LH% THEN LH%=LEN(TITLE2$)
1090 OH%=19-(LH%/2)
1100 LOCATE 1,1:PRINT SPACE$(40);SPACE$(40);SPACE$(40);SPACE$(40)
1110 COLOR 0,7:LOCATE 1,OH%:PRINT CHR$(218);STRING$(LH%,196);CHR$(191)
1120 IL%=LEN(TITLE1$)
1130 LOCATE 2,OH%:PRINT CHR$(179);
1140 IF LEN(TITLE1$) = LH% THEN PRINT TITLE1$;CHR$(179) ELSE GOSUB 1210: PRINT SPACE$(NSP%);TITLE1$;SPACE$(LH%-NSP%-LEN(TITLE1$));CHR$(179)
1150 IL% = LEN(TITLE2$)
1160 LOCATE 3,OH%:PRINT CHR$(179);
1170 IF LEN(TITLE2$) = LH% THEN PRINT TITLE2$;CHR$(179) ELSE GOSUB 1210: PRINT SPACE$(NSP%);TITLE2$;SPACE$(LH%-NSP%-LEN(TITLE2$));CHR$(179)
1180 LOCATE 4,OH%:PRINT CHR$(192);STRING$(LH%,196);CHR$(217)
1190 COLOR 7,9
1200 RETURN
1210 NSP%=(LH%-IL%)/2
1220 RETURN

EASYGRAF.BAS

1 DEF SEG=0
2 IF (PEEK(&H410) AND &H30)=&H30 THEN GOTO 400
10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
40 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF   MAIN  MENU       "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
110 PRINT "          A  -  DISPLAY ITEM            "+"          B  -  ADD/CHANGE ITEM"
130 PRINT "          C  -  DISPLAY DIRECTORY       "+"          D  -  DELETE ITEM"
150 PRINT "          E  -  PRINT ITEM             "
170 PRINT "          X  -  ERASE/BUILD INDEX       "+"        Esc  -  EXIT"
190 PRINT " "
200 PRINT " "
210 PRINT "       SELECT FUNCTION BY LETTER"
220 K$=INKEY$:IF K$="" THEN 220
230 IF K$="A" THEN CHAIN "DISPGRAF"
240 IF K$="a" THEN CHAIN "dispgraf"
250 IF K$="B" THEN CHAIN "DRAWGRAF"
260 IF K$="b" THEN CHAIN "DRAWGRAF"
270 IF K$="C" THEN CHAIN "dispgrdr"
280 IF K$="c" THEN CHAIN "dispgrdr"
290 IF K$="D" THEN CHAIN "delgraf"
300 IF K$="d" THEN CHAIN "delgraf"
310 IF K$="E" THEN CHAIN "pringraf"
320 IF K$="e" THEN CHAIN "pringraf"
330 IF K$="F" THEN CHAIN "animgraf"
340 IF K$="f" THEN CHAIN "animgraf"
350 IF K$="X" THEN CHAIN "builgraf"
360 IF K$="x" THEN CHAIN "builgraf"
370 IF K$=CHR$(27) THEN GOTO 500
380 GOTO 220
400 CLS
410 PRINT " "
420 PRINT "        This program requires color display"
430 PRINT "            *****READY DISPLAY*****"
440 PRINT "  "
450 PRINT " "
460 PRINT " "
470 INPUT "        PRESS ENTER WHEN READY";ANSW$
480 CHAIN "colrgraf"
500 CLS
505 PRINT " "
510 PRINT " "
520 PRINT " "
530 PRINT "      Do you wish to switch to"
540 PRINT "      a monochrome display?"
550 INPUT "      [yes or no] ==>";ANSW2$
555 ANS$=LEFT$(ANSW2$,1)
560 IF ANS$="Y" OR ANS$="y" THEN CHAIN "monograf"
570 IF ANS$="N" OR ANS$="n" THEN GOTO 600
580 GOTO 550
600 COLOR 7,0,0
605 CLS
610 KEY ON
620 END

FILES191.TXT

---------------------------------------------------------------------------
Disk No 191   DVED Screen Editor, Easel & Easygraf                   v1.2
---------------------------------------------------------------------------
COLOR    BAS  Part of PIECHART.BAS
DIGIDRAW BAS  Nifty drawing program  (Requires graphics & BASICA)
DIGIDRAW DOC  Documentation for DIGIDRAW.BAS
DVED     COM  Good screen-oriented text editor (Version 6.02) - Can use with mouse
READ     ME   Part of DVED.COM
GRAPH    BAS  Graphs data (x, y coordinates and function)
GRAPH2   BAS  Graphs data (x, y coordinates and function)
HISTGRAM BAS  Displays and prints simple histogram
INFO     BIN  Binary file for DIGIDRAW.BAS
LOGO     BIN  Binary file for DIGIDRAW.BAS
PIECHART BAS  Draws pie charts - Version 1.0
PLOT     BAS  Creates plots from your coordinates
SKETCH   BAS  Etch-a-sketch with cursor keys
------------  EASEL
EASEL    BAS  Easel drawing package  (Requires light pen, color graphics)
EASEL    ASC  Part of EASEL.BAS - documentation
PENCIRC  BAS  Part of EASEL.BAS - draw circles
PENCLEAR BAS  Part of EASEL.BAS - clear screen
PENDRAW  BAS  Part of EASEL.BAS - draw dots
PENLINE  BAS  Part of EASEL.BAS - draw lines
PENPAINT BAS  Part of EASEL.BAS - demo - color train with light pen
PENSAVE  BAS  Part of EASEL.BAS - save drawing
------------  EASYGRAF
EASYGRAF BAS  EasyGraf drawing package  (Requires color graphics)
BUILGRAF BAS  Part of EASYGRAF.BAS - build graph file
COLRGRAF BAS  Part of EASYGRAF.BAS
DISPGRAF BAS  Part of EASYGRAF.BAS - display graph
DISPGRDR BAS  Part of EASYGRAF.BAS - display graph directory
DRAWGRAF BAS  Part of EASYGRAF.BAS - draw a graph
EASYGRAF ASC  Part of EASYGRAF.BAS - documentation
EZGDOCM  BAS  Part of EASYGRAF.BAS - use BASIC LIST to view
GRAPHIT  BAS  Part of EASYGRAF.BAS - draws with cursor & function keys
MONOGRAF BAS  Part of EASYGRAF.BAS - monochrome graph
PRINGRAF BAS  Part of EASYGRAF.BAS
PRN2GRAF BAS  Part of EASYGRAF.BAS
PRNTGRAF BAS  Part of EASYGRAF.BAS
PRNTSAVE BAS  Part of EASYGRAF.BAS
SAMPDRAW BAS  Part of EASYGRAF.BAS - sample drawing - part of house
SAVEGRAF BAS  Part of EASYGRAF.BAS
TEMPGRAF BAS  Part of EASYGRAF.BAS - temporary graph storage
TESTPRNT BAS  Part of EASYGRAF.BAS

PC-SIG
1030D E Duane Avenue
Sunnyvale Ca. 94086
(408) 730-9291
(c) Copyright 1986,1987 PC-SIG

GRAPH.BAS

110 PRINT :PRINT :PRINT :PRINT :PRINT
1000 REM: GRAPH
1010 KEY OFF
1020 REM: *************************
1030 A$=CHR$(248):B$=CHR$(196):C$=CHR$(179):D$=CHR$(218):E$=CHR$(192)
1040 F$=CHR$(191):G$=CHR$(217):H$=CHR$(195):I$=CHR$(180):J$=CHR$(194)
1050 K$=CHR$(193):YPLUS$=CHR$(24):YMINUS$=CHR$(25)
1060 REM: *************************
1070 CLS:PRINT TAB(35) "G R A P H":PRINT
1080 GOSUB 2200
1090 GOSUB 1800:GOSUB 1200:GOSUB 1400:GOSUB 1600
1100 GOSUB 2000:KEY ON:CLS:END
1200 REM ***********************
1210 REM ***   PRINT GRAPH   ***
1220 REM ***********************
1230 CLS:FOR J=3 TO 21 :LOCATE J,15:PRINT H$:LOCATE J,75:PRINT I$:NEXT
1240 FOR J=16 TO 74 :LOCATE 2,J: PRINT J$:LOCATE 22,J:PRINT K$:NEXT
1250 LOCATE 2,15:PRINT D$:LOCATE 2,75:PRINT F$
1260 LOCATE 22,15:PRINT E$:LOCATE 22,75:PRINT G$
1270 FOR J=7 TO 17 STEP 5 :LOCATE J,16:PRINT B$:LOCATE J,74:PRINT B$:NEXT
1280 FOR J=20 TO 70 STEP 5 :LOCATE 3,J:PRINT C$:LOCATE 21,J:PRINT C$:NEXT
1290 LOCATE 12,17:PRINT B$:LOCATE 12,73:PRINT B$
1300 LOCATE 4,45:PRINT C$:LOCATE 20,45:PRINT C$
1310 RETURN
1400 REM ***********************
1410 REM ***   PLOT Y=F(X)   ***
1420 REM ***********************
1430 DX=(XU-XL)/60:DY=(YU-YL)/20:FOR J=0 TO 60
1440 X=XL+DX*(J):XP=15+J:GOSUB 1500
1450 IF F=1 THEN LOCATE 22,15+J:PRINT YMINUS$:GOTO 1480
1460 IF F=2 THEN LOCATE 2,15+J:PRINT YPLUS$:GOTO 1480
1470 LOCATE YP,XP:PRINT A$
1480 NEXT
1490 RETURN
1500 GOSUB 5000:V=(Y-YL)/DY:D=CINT(V)
1510 IF Y<YL THEN F=1:RETURN
1520 IF Y>YU THEN F=2:RETURN
1530 F=0:YP=22-D:RETURN
1600 REM ***********************
1610 REM ***   LABLE GRAPH   ***
1620 REM ***********************
1630 LOCATE 1,15:PRINT "Y"
1640 LOCATE 22,76:PRINT "X"
1650 FOR J=2 TO 22 STEP 5
1660 Y=YU-DY*(J-2)
1670 L=LEN(STR$(Y))
1680 LOCATE J,13-L:PRINT Y
1690 NEXT
1700 FOR J=15 TO 75 STEP 10
1710 X=XL+DX*(J-15)
1720 L=(LEN(STR$(X)))/2
1730 LOCATE 23,J-L:PRINT X
1740 NEXT
1750 LOCATE 25,27:PRINT "HIT ANY KEY TO CONTINUE. ?";
1760 Q$=INKEY$:IF Q$="" THEN 1760
1770 RETURN
1800 REM ************************************
1810 REM ***   SELECT RANGE FOR X AND Y   ***
1820 REM ************************************
1830 PRINT :INPUT"LOWEST VALUE OF X";XL
1840 INPUT "HIGHEST VALUE OF X";XU
1850 IF XU<=XL THEN PRINT :PRINT "   -- BAD X RANGE --":GOTO 1830
1860 DX=(XU-XL)/60:X=XL:XM=(XU+XL)/2:GOSUB 5000:MN=Y:MX=Y
1870 FOR J=1 TO 60
1880 X=XL+DX*J:GOSUB 5000:IF Y>MX THEN MX=Y
1890 IF Y<MN THEN MN=Y
1900 NEXT:YM=(MN+MX)/2
1910 PRINT:PRINT"OVER THIS RANGE OF X":                                              PRINT"  MINIMUM Y =";MN
1920 PRINT"  MAXIMUM Y=";MX:                                                         PRINT"NOW CHOOSE THE SCALE FOR Y"
1930 PRINT:INPUT"MINIMUM Y SCALE VALUE";YL
1940 INPUT"MAXIMUM Y SCALE VALUE";YU:                                                IF YU>YL THEN RETURN
1950 PRINT:PRINT"  -- BAD Y SCALE VALUE --":GOTO  1910
2000 REM ************************************
2010 REM ***   PRINT VALUES FOR X AND Y   ***
2020 REM ************************************
2030 CLS:PRINT "X VALUES":                                                           PRINT"  MINIMUM - ";XL
2040 PRINT"  MID     - ";XM:PRINT"  MAXIMUM - ";XU:                                  PRINT
2050 PRINT"Y VALUES":PRINT"  MINIMUM - ";MN
2060 PRINT"  MID     - ";YM:PRINT"  MAXIMUM - ";MX:
2070 LOCATE 25,27:PRINT "HIT ANY KEY TO CONTINUE. ?";
2080 Q$=INKEY$:IF Q$="" THEN 2080
2090 GOSUB 2400
2100 LOCATE 25,11:PRINT "HIT 'G' TO SEE THE GRAPH AGAIN OR ANY OTHER KEY TO QUIT . ?";
2110 Q$=INKEY$:IF Q$="" THEN 2110
2120 IF Q$="G" THEN GOSUB 1200 :GOSUB 1400:GOSUB 1600
2130 RETURN
2200 REM *************************
2210 REM ***   PRINT WARNING   ***
2220 REM *************************
2230 LOCATE 3,11:PRINT D$:FOR J=12 TO 28:LOCATE 3,J:PRINT B$:NEXT
2240 LOCATE 3,32:PRINT "W A R N I N G !":FOR J=50 TO 68:LOCATE 3,J:PRINT B$:         NEXT
2250 LOCATE 3,69:PRINT F$:LOCATE 4,24:PRINT "REVISE THE SUBROUTINE AT LINES "
2260 LOCATE 5,23:PRINT "5000-5999 TO DEFINE YOUR FUCTION"
2270 LOCATE 6,26:PRINT "DEFINE Y AS A FUNCTION OF X"
2280 FOR J=4 TO 6 :LOCATE J,11:PRINT C$:LOCATE J,69:PRINT C$:NEXT
2290 LOCATE 7,11:PRINT E$:LOCATE 7,69:PRINT G$
2300 FOR J=12 TO 68:LOCATE 7,J:PRINT B$:NEXT
2310 RETURN
2400 REM ***********************
2410 REM ***   PRINT TABLE   ***
2420 REM ***********************
2430 CLS
2440 LOCATE 1,3:PRINT "X":LOCATE 1,16:PRINT "Y"
2450 LOCATE 1,29:PRINT "X":LOCATE 1,42:PRINT "Y"
2460 LOCATE 1,55:PRINT "X":LOCATE 1,68:PRINT "Y"
2470 FOR J=2 TO 21
2480 X=XL+(J-2)*DX
2490 GOSUB 5000
2500 LOCATE J,2:PRINT X
2510 LOCATE J,15:PRINT Y
2520 NEXT
2530 FOR J=22 TO 41
2540 X=XL+(J-2)*DX
2550 GOSUB 5000
2560 LOCATE J-20,28:PRINT X
2570 LOCATE J-20,41:PRINT Y
2580 NEXT
2590 FOR J=42 TO 62
2600 X=XL+(J-2)*DX
2610 GOSUB 5000
2620 LOCATE J-40,54:PRINT X
2630 LOCATE J-40,67:PRINT Y
2640 NEXT
2650 RETURN
4997 REM ************************************************
4998 REM ***   SUBROUTINE AT LINE 5000 MUST BE SET    ***
4999 REM ************************************************
5000 REM ***   Y=F(X) GOES HERE   ***
5010 RETURN

GRAPH2.BAS

1 SCREEN 2
10 '**********************************
20 '*   THIS IS A REVISION OF THE    *
30 '*   GRAPH PROGRAM THAT IS ON THE *
40 '*   CAPITAL-PC DISC 5 TO TAKE    *
50 '*   ADVANTAGE OF THE COLOR GRAP- *
60 '*   HICS BOARD TO DRAW A CURVE   *
70 '*   AS A CURVE AND TO PLOT THE   *
80 '*   X AXIS OR A SECOND CURVE     *
90 '*   BY B.J.RECKMAN,ROCKVILLE,MD. *
95 '**********************************
110 PRINT :PRINT :PRINT :PRINT :PRINT
1000 REM: GRAPH
1010 KEY OFF
1020 PRINT "HIGH RESOLUTION GRAPHICS = 2"
1030 PRINT "LOW RESOLUTION GRAPHICS  = 1"
1040 INPUT "ENTER 1 OR 2 ?             " ,L
1050 SCREEN L
1070 CLS:PRINT TAB(15) "G R A P H":PRINT
1080 GOSUB 2200
1090 GOSUB 1800:GOSUB 1400:GOSUB 11400:GOSUB 1200:GOSUB 1600
1100 GOSUB 2000:KEY ON:CLS:END
1200 REM ***********************
1210 REM ***   PRINT GRAPH   ***
1220 REM ***********************
1230 LINE (60,16)-(300*L,176),,B
1240 LINE (60,56)-(300*L,56)
1250 LINE (60,96)-(300*L,96)
1260 LINE (60,136)-(300*L,136)
1270 LL=3 : DIV=80
1271 IF L=2 THEN LL=7
1272 IF L=2 THEN DIV=67.5
1280 FOR N=1 TO LL : NDIV=CINT(N*DIV) : LINE (60+NDIV,16)-(60+NDIV,176) : NEXT
1310 RETURN
1400 REM ***********************
1410 REM ***   PLOT Y=F(X)   ***
1420 REM ***********************
1421 CLS
1429 LDIV=300*L-60
1430 DX=(XU-XL)/LDIV:DY=(YU-YL)/160:FOR J=0 TO LDIV
1440 X=XL+DX*(J):XP=60+J:GOSUB 1500
1469 IF J=0 GOTO 1491
1470 LINE -(INT(XP),INT(YP))
1480 GOTO 1492
1491 PSET (INT(XP),INT(YP))
1492 NEXT
1494 RETURN
1500 GOSUB 5000:V=(Y-YL)/DY:D=CINT(V)
1510 IF Y<YL THEN YP=176:RETURN
1520 IF Y>YU THEN YP=16:RETURN
1530 YP=176-D:RETURN
1600 REM ***********************
1610 REM ***   LABLE GRAPH   ***
1620 REM ***********************
1630 LOCATE 1,8:PRINT "Y"
1640 LOCATE 22,39*L:PRINT "X"
1650 FOR J=2 TO 22 STEP 5
1660 Y=YU-DY*8*(J-2)
1680 LOCATE J,1:PRINT USING "###.##";Y
1690 NEXT
1694 NSTEP=10
1695 IF L=2 THEN NSTEP=8
1696 NF=38
1697 IF L=2 THEN NF=76
1698 NS=8
1699 IF L=2 THEN NS=12
1700 JJ=NF : FOR J=8 TO JJ STEP NSTEP
1710 X=XL+DX*8*(J-8)
1711 IF L=2 THEN X=XL + (J-8)*(XU-XL)/(NF-12)
1720 LLL=3
1721 IF J=40*L-2 THEN LLL=LLL+2
1722 IF L=2 THEN LLL=2
1730 LOCATE 23,J-LLL:PRINT USING "###.##"; X
1740 NEXT
1760 Q$=INKEY$:IF Q$="" THEN 1760
1770 RETURN
1800 REM ************************************
1810 REM ***   SELECT RANGE FOR X AND Y   ***
1820 REM ************************************
1825 LOCATE 14,27:PRINT "**************************************":PRINT"AFTER GRAPH IS ON SCREEN": PRINT "HIT ANY KEY TO CONTINUE. ":PRINT"**************************************"
1830 PRINT :INPUT"LOWEST VALUE OF X";XL
1840 INPUT "HIGHEST VALUE OF X";XU
1850 IF XU<=XL THEN PRINT :PRINT "   -- BAD X RANGE --":GOTO 1830
1860 DX=(XU-XL)/100:X=XL:XM=(XU+XL)/2:GOSUB 5000:GOSUB 6000:MN=Y:MX=Y
1870 FOR J=1 TO 100
1880 X=XL+DX*J:GOSUB 5000:IF Y>MX THEN MX=Y
1890 IF Y<MN THEN MN=Y
1891 GOSUB 6000:IF Y>MX THEN MX=Y
1892 IF Y<MN THEN MN=Y
1900 NEXT:YM=(MN+MX)/2
1910 PRINT:PRINT"OVER THIS RANGE OF X":                                              PRINT"  MINIMUM Y =";MN
1920 PRINT"  MAXIMUM Y=";MX:                                                         PRINT"NOW CHOOSE THE SCALE FOR Y"
1930 PRINT:INPUT"MINIMUM Y SCALE VALUE";YL
1940 INPUT"MAXIMUM Y SCALE VALUE";YU:                                                IF YU>YL THEN GOTO 1960
1950 PRINT:PRINT"  -- BAD Y SCALE VALUE --":GOTO  1910
1960 RETURN
2000 REM ************************************
2010 REM ***   PRINT VALUES FOR X AND Y   ***
2020 REM ************************************
2030 CLS:PRINT "X VALUES":                                                           PRINT"  MINIMUM - ";XL
2040 PRINT"  MID     - ";XM:PRINT"  MAXIMUM - ";XU:                                  PRINT
2050 PRINT"Y VALUES":PRINT"  MINIMUM - ";MN
2060 PRINT"  MID     - ";YM:PRINT"  MAXIMUM - ";MX:
2080 Q$=INKEY$:IF Q$="" THEN 2100
2100 LOCATE 22,11:PRINT "HIT 'G' TO SEE THE GRAPH AGAIN OR ANY OTHER KEY TO QUIT . ?";
2110 Q$=INKEY$:IF Q$="" THEN 2110
2120 IF Q$="G" THEN GOSUB 1400 :GOSUB 11400:GOSUB 1200:GOSUB 1600
2130 RETURN
2200 REM *************************
2210 REM ***   PRINT WARNING   ***
2220 REM *************************
2240 LOCATE 2,12:PRINT "W A R N I N G !":
2250 LOCATE 4,4:PRINT "REVISE THE SUBROUTINE AT LINES "
2260 LOCATE 5,3:PRINT "5000-5999 TO DEFINE YOUR FUCTION"
2270 LOCATE 6,6:PRINT "DEFINE Y AS A FUNCTION OF X"
2280 LOCATE 8,3:PRINT "IF YOU HAVE TWO EQUATIONS THEN"
2285 LOCATE 9,3:PRINT "REVISE THE SUBROUTINE AT LINES"
2290 LOCATE 10,4:PRINT "6000-6999 TO DEFINE THE 2nd"
2300 LOCATE 11,3:PRINT "FUNCTION Y AS A FUNCTION OF X"
2310 RETURN
4997 REM ************************************************
4998 REM ***   SUBROUTINE AT LINE 5000 MUST BE SET    ***
4999 REM ************************************************
5000 REM ***   Y=F(X) GOES HERE   ***
5001 Y=SIN(X)-2*SIN(2*X)+3*SIN(3*X)
5010 RETURN
6000 REM****************SECOND EQUATION GOES HERE********************
6001 Y=0
6010 RETURN
11400 REM ***********************
11410 REM ***   PLOT Y=F(X)   ***
11420 REM ***********************
11429 LDIV=300*L-60
11430 DX=(XU-XL)/LDIV:DY=(YU-YL)/160:FOR J=0 TO LDIV
11440 X=XL+DX*(J):XP=60+J:GOSUB 11500
11469 IF J=0 GOTO 11491
11470 LINE -(INT(XP),INT(YP))
11480 GOTO 11492
11491 PSET (INT(XP),INT(YP))
11492 NEXT
11494 RETURN
11500 GOSUB 6000:V=(Y-YL)/DY:D=CINT(V)
11510 IF Y<YL THEN YP=176:RETURN
11520 IF Y>YU THEN YP=16:RETURN
11530 YP=176-D:RETURN

GRAPHIT.BAS

10 CLEAR
20 SCREEN 2,1
30 KEY OFF
40 CLS
50 DIM ARRAY$(255)
55 COMMON ARRAY$,LEFT,RIGHT,TOP,BOT,RES%
58 RES%=2
60 TOP = 98
70 BOT=102
80 LEFT=318
90 RIGHT=322
100 COLR=3
110 XCOR=320
120 YCOR=100
130 SWIT=1
140 GOSUB 620
150 GOSUB 460
160 GOSUB 500
170 GOSUB 540
180 GOSUB 580
190 K$=INKEY$: IF K$ = "" THEN 190
200 IF K$=CHR$(0)+CHR$(77) THEN XCOR=XCOR+1
210 IF K$=CHR$(0)+CHR$(77) THEN GOSUB 620
220 IF K$=CHR$(0)+CHR$(75) THEN XCOR=XCOR-1
230 IF K$=CHR$(0)+CHR$(75) THEN GOSUB 620
240 IF K$=CHR$(0)+CHR$(72) THEN YCOR=YCOR-1
250 IF K$=CHR$(0)+CHR$(72) THEN GOSUB 620
260 IF K$=CHR$(0)+CHR$(80) THEN YCOR=YCOR+1
270 IF K$=CHR$(0)+CHR$(80) THEN GOSUB 620
280 IF K$="T" THEN GOSUB 460
290 IF K$="B" THEN GOSUB 500
300 IF K$="L" THEN GOSUB 540
310 IF K$="R" THEN GOSUB 580
320 IF K$="S" THEN GOSUB 970
330 IF K$="U" THEN GOSUB 690
340 IF K$="D" THEN GOSUB 760
350 IF K$=">" THEN GOSUB 830
360 IF K$="<" THEN GOSUB 900
370 IF K$="1" THEN COLR=1 PALETT=0
380 IF K$="2" THEN COLR=2
390 IF K$="3" THEN COLR=3 PALETT=0
400 IF K$="4" THEN COLR=1 PALETT=1
410 IF K$="5" THEN COLR=2 PALETT=1
420 IF K$="6" THEN COLR=3 PALETT=1
430 IF K$="-" THEN SWIT=0
440 IF K$="+" THEN SWIT=1
441 IF K$=CHR$(27) THEN LINE (LEFT,TOP)-(RIGHT,TOP),0:LINE (LEFT,BOT)-(RIGHT,BOT),0:LINE (LEFT,TOP)-(LEFT,BOT),0:LINE (RIGHT,TOP)-(RIGHT,BOT),0:CHAIN "savegraf"
450 GOTO 190
460 LINE (LEFT,TOP)-(RIGHT,TOP),0
470 TOP = TOP - 1
480 LINE (LEFT,TOP)-(RIGHT,TOP),1
490 RETURN
500 LINE (LEFT,BOT)-(RIGHT,BOT),0
510 BOT = BOT + 1
520 LINE (LEFT,BOT)-(RIGHT,BOT),1
530 RETURN
540 LINE (LEFT,TOP)-(LEFT,BOT),0
550 LEFT = LEFT - 1
560 LINE (LEFT,TOP)-(LEFT,BOT),1
570 RETURN
580 LINE (RIGHT,TOP)-(RIGHT,BOT),0
590 RIGHT = RIGHT + 1
600 LINE (RIGHT,TOP)-(RIGHT,BOT),1
610 RETURN
620 IF XCOR > RIGHT - 2 THEN XCOR = RIGHT - 2
630 IF XCOR < LEFT + 2  THEN XCOR = LEFT + 2
640 IF YCOR > BOT - 2 THEN YCOR = BOT - 2
650 IF YCOR < TOP + 2 THEN YCOR = TOP + 2
660 IF SWIT = 0 THEN PRESET (XCOR,YCOR)
670 IF SWIT = 1 THEN PSET (XCOR,YCOR)
680 RETURN
690 NLEFT=XLEFT
700 IF XTOP < 9 THEN XTOP = 9
710 NTOP=XTOP-5
720 PUT (NLEFT,NTOP),ARRAY$
730 PUT (XLEFT,XTOP),ARRAY$
740 XTOP = XTOP - 5
750 RETURN
760 NLEFT=XLEFT
770 IF XTOP + BOT - TOP > 190 THEN XTOP = 190  - BOT + TOP
780 NTOP=XTOP+5
790 PUT (NLEFT,NTOP),ARRAY$
800 PUT (XLEFT,XTOP),ARRAY$
810 XTOP = XTOP + 5
820 RETURN
830 IF XLEFT + RIGHT - LEFT > 630 THEN XLEFT= 630  - RIGHT + LEFT
840 NLEFT=XLEFT+5
850 NTOP=XTOP
860 PUT (NLEFT,NTOP),ARRAY$
870 PUT (XLEFT,XTOP),ARRAY$
880 XLEFT=XLEFT + 5
890 RETURN
900 IF XLEFT < 9 THEN XLEFT = 9
910 NLEFT=XLEFT-5
920 NTOP=XTOP
930 PUT (NLEFT,NTOP),ARRAY$
940 PUT (XLEFT,XTOP),ARRAY$
950 XLEFT=XLEFT - 5
960 RETURN
970 XLEFT=LEFT+1
990 XRIGHT=RIGHT-1
1000 XTOP=TOP+1
1010 XBOT=BOT-1
1011 GET (XLEFT,XTOP)-(XRIGHT,XBOT),ARRAY$
1020 RETURN
1050 RETURN

HISTGRAM.BAS

0 KEY OFF
1 DIM VALUE(100):DIM DESC$(100):WIDTH "lpt1:",132:ON ERROR GOTO 20000
2 CLS
5 INPUT "Do you want a printout too";PRNT$
6 IF LEFT$(PRNT$,1)="Y" OR LEFT$(PRNT$,1)="y" THEN PRNSWI=1:WIDTH "lpt1:",132: ELSE PRNSWI=0
7 INPUT "Title";TITL$
10 INPUT "Maximum Value";M
15 IF M=0 THEN KEY ON:END
20 INPUT "Number of items";N
30 FOR GRF=1 TO N
40 IF PRNSWI THEN INPUT "Description";DESC$(GRF)
50 INPUT "Value";VALUE(GRF)
60 NEXT
65 CLS:LOCATE 2,20
66 IF PRNSWI THEN LPRINT CHR$(12)
67 IF PRNSWI THEN LPRINT CHR$(18);TAB(20);TITL$:LPRINT CHR$(15);" ":LPRINT " ":LPRINT " "
69 PRINT TITL$:PRINT " ":PRINT " ":PRINT " "
70 FOR GRF=1 TO N
80 V=VALUE(GRF)
90 GOSUB 10000
91 LOCATE CSRLIN,5
92 PRINT V
93 LOCATE CSRLIN-1,12
94 PRINT G$
95 IF PRNSWI THEN LPRINT TAB(5);DESC$(GRF);TAB(45);V;TAB(55);P$
100 NEXT
110 LOCATE 1,1
120 K$=INKEY$:IF K$="" THEN 120
130 IF K$=CHR$(27) THEN IF PRNSWI THEN WIDTH "lpt1:",80:LPRINT CHR$(18):GOTO 2 ELSE GOTO 2
140 GOTO 120
10000 REM generates a histogram graphline
10010 REM M is the maximum value
10020 REM V is the input value
10030 REM G$ is teh graph-line
10040 G$=SPACE$(64)
10045 P$=SPACE$(64)
10050 X=INT(V/M*64+0.5)
10060 IF X<65 THEN 10080
10070 X=64
10080 FOR I=1 TO X
10090 MID$(G$,I,1)="*"
10095 MID$(P$,I,1)="*"
10100 NEXT I
10110 RETURN
20000 RESUME

MONOGRAF.BAS

8 CLS
10 DEF SEG=0:A=PEEK(&H410):POKE &H410,A OR &H30:WIDTH 80:LOCATE ,,1,12,13:COLOR 15,9,4:CLS:KEY OFF
20 END

PENCIRC.BAS

2 ON ERROR GOTO 300
5 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
10 CLS:SCREEN 1:COLOR 7,0:PEN ON
12 DEF SEG=&HB800
15 BLOAD "tempdraw",0
20 J=1
30 X=PEN(4):Y=PEN(5)
40 X2=PEN(1):Y2=PEN(2)
50 PSET (X,Y),1
60 FOR T=1 TO 20:NEXT T
65 K$=INKEY$:IF K$=CHR$(27) THEN 200
70 PRESET (X,Y),0
72 IF K$="<" THEN N=1
74 IF K$=">" THEN N=-1
76 IF K$="?" THEN J=1
80 IF K$="'" THEN CIRCLE (X2,Y2),J:J=J+N:IF J<1 THEN J=1
100 GOTO 30
200 BSAVE "tempdraw",0,&H4000
210 CHAIN DRIVEID$+"easel"
300 RESUME 20

PENCLEAR.BAS

2 DEF SEG=&HB800
3 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
5 ON ERROR GOTO 300
12 CLS:SCREEN 1:COLOR 7,0:PEN ON
15 KILL "tempdraw.bas"
20 J=1
210 CHAIN DRIVEID$+"easel"
300 RESUME 20

PENDRAW.BAS

2 DEF SEG=&HB800
3 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
5 ON ERROR GOTO 300
10 CLS:SCREEN 1:COLOR 7,0:PEN ON
15 BLOAD "tempdraw",0
20 J=1
30 X=PEN(4):Y=PEN(5)
40 K$=INKEY$:IF K$=CHR$(27) THEN 200
50 PSET (X,Y),1
100 GOTO 30
200 BSAVE "tempdraw",0,&H4000
210 CHAIN DRIVEID$+"easel"
300 RESUME 20

PENLINE.BAS

2 DEF SEG=&HB800
3 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
5 ON ERROR GOTO 300
10 CLS:SCREEN 1:COLOR 7,0:PEN ON
15 BLOAD "tempdraw",0
20 J=1
30 X=PEN(1):Y=PEN(2)
40 K$=INKEY$:IF K$=CHR$(27) THEN 200
50 LINE -(X,Y)
60 PSET (X,Y),1
100 GOTO 30
200 BSAVE "tempdraw",0,&H4000
210 CHAIN DRIVEID$+"easel"
300 RESUME 20

PENPAINT.BAS

5 F3=0
10 KEY OFF
20 PAINTBRU$="NO"
30 CLS
40 SCREEN 1
50 COLOR 7,0
52 PAINT (1,1),2
60 B=0
70 FOR X=80 TO 180 STEP 50
80 LET B=B+1
90 LINE (X,160)-(X+30,180),B,BF
92 LINE (X,160)-(X+30,180),F3,B
100 NEXT
110 FOR X=30 TO 300 STEP 50
120 CIRCLE (X,110),20,F3
130 NEXT
140 FOR X=10 TO 300 STEP 100
150 LINE (X,65)-(X+90,90),F3,B
160 NEXT
170 DRAW "c"+STR$(F3)
172 DRAW "BM15,65":DRAW "E15;L30":DRAW "F15"
180 DRAW "c"+STR$(F3)
182 DRAW "BM55,65":DRAW "U20":DRAW"R45":DRAW"D20":DRAW"U15":DRAW"L25":DRAW "D15"
193 PAINT (1,1),0,F3
195 F3=0
220 PEN ON
230 SW=PEN(0)
235 IF SW=-1 THEN 400 ELSE 230
280 IF Y>160 THEN GOTO 360
290 IF PAINTBRU$="NO" THEN GOTO 230
300 PAINT (X,Y),P,F3
310 SOUND 880,3
320 PAINTBRU$="NO"
330 GOTO 230
360 P=POINT(X,Y)
365 IF P<1 THEN GOTO 230
370 PAINTBRU$="YES"
380 SOUND 440,3
390 GOTO 230
400 X=PEN(1):Y=PEN(2)
410 IF X<0 OR X>319 OR Y<0 OR Y>199 THEN GOTO 230
420 GOTO 280

PENSAVE.BAS

2 DEF SEG=&HB800
3 COMMON DRIVEID$,DRIVEID2$,TITLE1$,TITLE2$
5 ON ERROR GOTO 300
10 INPUT "  Enter Name for drawing";N$
12 CLS:SCREEN 1:COLOR 7,0:PEN ON
15 BLOAD "tempdraw",0
18 BSAVE N$,0,&H4000
20 J=1
200 BSAVE "tempdraw",0,&H4000
210 CHAIN DRIVEID$+"easel"
300 RESUME 20

PIECHART.BAS

965 COMMON LEFT,RIGHT,TOP,BOT,RES%,PROGRAMID$:LEFT=150:RIGHT=150:TOP=1:BOT=170:RES%=1:PROGRAMID$="piechart"
975 DEF SEG: POKE 106,0
980 SAMPLES$="NO"
990 GOTO 1010
1000 SAMPLES$="YES"
1010 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
1020 LOCATE 7,12,0:PRINT "Personal Computer"
1030 COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
1040 LOCATE 11,9,0:PRINT CHR$(179)+"      PIECHART       "+CHR$(179)
1050 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
1060 LOCATE 13,9,0:PRINT CHR$(179)+"    Version 1.00     "+CHR$(179)
1070 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
1080 COLOR 15,0:LOCATE 17,7,0:PRINT "                           "
1090 COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue"
1100 IF INKEY$<>"" THEN GOTO 1100
1110 CMD$ = INKEY$
1120 IF CMD$ = "" THEN GOTO 1110
1130 IF CMD$ = CHR$(27) THEN GOTO 1298
1140 IF CMD$ = " " THEN GOTO 1160
1150 GOTO 1110
1160 DEF SEG=0
1170 IF (PEEK(&H410) AND &H30)<>&H30 THEN DEF SEG:GOTO 1291
1180 WIDTH 80:CLS:LOCATE 3,1
1185 COMMON PROGRAMID$:PROGRAMID$="piechart":CHAIN "color"
1190 PRINT "HOLD IT!"
1200 PRINT "YOU'RE NOT USING THE COLOR/GRAPHICS MONITOR ADAPTER!"
1210 PRINT "THIS PROGRAM USES GRAPHICS AND REQUIRES THAT ADAPTER."
1220 PRINT "PRESS THE SPACE BAR TO CONTINUE."
1230 DEF SEG
1240 IF INKEY$<>"" THEN GOTO 1240
1250 CMD$ = INKEY$
1260 IF CMD$ = "" THEN GOTO 1250
1270 IF CMD$ = CHR$(27) THEN GOTO 1298
1280 IF CMD$ = " " THEN GOTO 1298
1290 GOTO 1250
1291 KEY OFF
1292 ON ERROR GOTO 1295
1293 PLAY "p16"
1294 GOTO 1300
1295 COLOR 31,0,0
1296 PRINT "THIS PROGRAM REQUIRES ADVANCED BASIC -- USE COMMAND 'BASICA'":COLOR 15,0,0:FOR I=1 TO 9000:NEXT: RESUME 1298
1298 ON ERROR GOTO 0
1299 SCREEN 0,1:IF SAMPLES$="YES" THEN CHAIN"samples",1000 ELSE COLOR 7,0,0:CLS:END
1300 DIM R(100),A$(100)
1400 CLS
1420 SCREEN 1,0:COLOR 8,0
1440 LR=50:SR=44
1450 INPUT "title of chart";T$
1460 INPUT "how many items in chart";N
1470 S=0
1480 FOR I=1 TO N
1490 INPUT "numeric value ,name";R(I),A$(I)
1500 S=S+R(I)
1510 NEXT
1520 FOR I=1 TO N:R(I)=R(I)/S:NEXT
1530 A2=0
1540 CLS
1550 LOCATE 2,20-LEN(T$)/2:PRINT T$
1560 LINE (8*(19.5-LEN(T$)/2)-8,7)-(8*(19.5+LEN(T$)/2)  ,16),3,B
1570 FOR C=1 TO N
1580 A1=A2:A2=A2+R(C)*2*3.1415926#
1590 AA=(A1+A2)/2
1600 CX=160+COS(AA)*(LR-SR)
1610 CY=100-SIN(AA)*(LR-SR)
1620 CIRCLE (CX,CY),SR,1,-A1-0.001,-A2,5/6
1630 PAINT (CX+COS(AA)*0.8*SR,CY-SIN(AA)*0.8*SR),C MOD 4,1
1640 LX=CX+COS(AA)*(16+SR)-4*LEN(A$(C)):LY=CY-SIN(AA)*(SR+16)
1650 LOCATE 1+(LY\8),1+(LX\8):PRINT A$(C);
1652 IF LEFT > 1+(LX) THEN LEFT=1+(LX)
1654 IF RIGHT< 1+(LX)+(LEN(A$(C))*8) THEN RIGHT=1+(LX)+(LEN(A$(C))*8)
1660 LINE ((LX\8)*8,8*((LY\8)+1))-((LX\8)*8+8*LEN(A$(C)),8*((LY\8)+1)),1
1670 NEXT C
1680 LOCATE 23,1
1700 REM PRINT"Another Chart? (Y or N)";
1705 IF A$=CHR$(27) THEN 1298
1710 A$=INKEY$:IF A$="" THEN 1710
1720 IF A$="p" OR A$="P" THEN CHAIN "prntgraf"
1730 IF A$="N" OR A$="n" THEN 1298
1740 IF A$="Y" OR A$="y" THEN 1400
1750 GOTO 1680

PLOT.BAS

10 SCREEN 2
40 INPUT " xmin, xmax, increment ";X1,X2,X4
50 INPUT "ymin, ymax, increment ";Y1,Y2,Y4
55 CLS
60 X5 = - ((X1/(X2-X1))*635)+2
61 IF X1 < 0 AND X2 < 0 THEN X5 =637
62 IF X1> 0 AND X2 > 0 THEN X5 = 2
70 Y5=((Y2/(Y2-Y1))*195)+2
71 IF Y1 < 0 AND Y2< 0 THEN Y5 = 2
72 IF Y1 >0 AND Y2 > 0 THEN Y5 = 197
80 LINE  (X5,Y5) - (X5,2)
90 LINE (X5,Y5 )-(X5,197)
100 LINE (X5,Y5)-(2,Y5)
110 LINE (X5,Y5)-(637,Y5)
120 FOR X3=X5 TO 637 STEP 634 * (X4/(X2- X1))
130 IF X3>637 THEN 160
140 LINE (X3, Y5 -2)-( X3,Y5 +2)
150 NEXT X3
160 FOR X3 = X5 TO 2 STEP -635 *(X4/(X2-X1))
170 IF X3 <2 THEN 200
180 LINE (X3,Y5 - 2 )-(X3,Y5 +2)
190 NEXT X3
200 FOR Y3 = Y5 TO 197 STEP 195 *(Y4/(Y2-Y1))
220         IF Y3 > 195 THEN 250
230 LINE (X5-2,Y3) - (X5 +2,Y3 )
240 NEXT Y3
250 FOR Y3 = Y5 TO 2 STEP - 195 * (Y4 /(Y2 - Y1 ))
260 IF Y3 < 2 THEN 290
270 LINE (X5 - 2, Y3 ) - (X5 +2, Y3)
280 NEXT Y3
281 INPUT " start, finish, increment "      ;X1,X2,X6
284 X=X1
290 Y= SIN(X)
430 PSET((X-X1)*(635/(X2-X1))+2,(-Y     +Y2)*(195/(Y2-Y1))+2)
431 X=X+X6
435 IF X<X2 THEN 290 ELSE 460
460             END

PRINGRAF.BAS

1 DEF SEG=&HB800
2 COMMON LEFT,RIGHT,TOP,BOT,RES%
5 WIDTH 40
10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
45 OPEN "grafindx.ezg" AS #1 LEN=128
46 FIELD #1, 10 AS IDX$, 23 AS DESC$,2 AS RESOL$, 2 AS LEFTCOR$, 2 AS RIGHTCOR$, 2 AS TOPCOR$, 2 AS BOTCOR$
49 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF   PRINT SCREEN     "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
101 INPUT " ENTER NAME OF ITEM TO BE PRINTED        ==>";GRAFNM$
103 IF LEN(GRAFNM$) = 0 THEN CLOSE #1:CHAIN "easygraf"
105 GRAFNAM$=GRAFNM$+SPACE$(10-LEN(GRAFNM$))
110 INDX$="9999999999"
115 I = 0
120 WHILE INDX$ <> GRAFNAM$
130 I = I+1
140 IF I > 10 THEN INDX$=GRAFNAM$:GOTO 180
150 GET #1,I
152 INDX$=IDX$
155 IF INDX$=GRAFNAM$ THEN LEFT=CVI(LEFTCOR$):RIGHT=CVI(RIGHTCOR$):TOP=CVI(TOPCOR$):BOT=CVI(BOTCOR$):RES%=CVI(RESOL$)
180 WEND
185 IF I > 10 THEN PRINT "   ";GRAFNAM$;" not found":GOTO 49
190 CLOSE #1
233 SCREEN RES%,1
235 DEF SEG=&HB800
240 BLOAD GRAFNM$+".EZG",0
300 IF RES% = 1 THEN CHAIN "PRNTGRAF"
310 IF RES% = 2 THEN CHAIN "PRN2GRAF"

PRN2GRAF.BAS

200 REM This program currently only prints using 960 bit graphics.  You could convert to 480 bit graphics to get lower  resolution.
250 WIDTH "lpt1:",255
252 LPRINT CHR$(27);"3";CHR$(24)
255 FOR Z%=1 TO INT(((TOP-1)/8))
256 LPRINT " "
257 NEXT
270 FOR Y1% = TOP TO BOT STEP 7
275 GLIN$=SPACE$(RIGHT-LEFT+1)
280 P%=0
285 LPRINT CHR$(27);"L";CHR$(107);CHR$(2);STRING$(LEFT-1,0);
290 FOR X%=LEFT TO RIGHT
300 CLR%=(POINT(X%,Y1%)*128)+(POINT(X%,Y1%+1)*64)+(POINT(X%,Y1%+2)*32)+(POINT(X%,Y1%+3)*16)+(POINT(X%,Y1%+4)*8)+(POINT(X%,Y1%+5)*4)+(POINT(X%,Y1%+6)*2)+POINT(X%,Y1%+7)
310 IF CLR% = 7 THEN CLR% = 3
311 P%=P%+1
320 MID$(GLIN$,P%)=CHR$(CLR%)
340 NEXT
345 LPRINT GLIN$;
350 LPRINT STRING$(619-RIGHT,0)
460 NEXT
470 SCREEN 0,1
480 WIDTH 40
490 CLS
500 PRINT " "
510 PRINT "    PRINT COMPLETE"
520 CHAIN "easygraf"

PRNTGRAF.BAS

250 WIDTH "lpt1:",255
252 LPRINT CHR$(27);"3";CHR$(24)
255 FOR Z%=1 TO INT(((TOP-1)/8))
256 LPRINT " "
257 NEXT
270 FOR Y1% = TOP TO BOT STEP 7
275 GLIN$=SPACE$(RIGHT-LEFT+1)
280 P%=0
285 LPRINT CHR$(27);"K";CHR$(63);CHR$(1);STRING$(LEFT-1,0);
290 FOR X%=LEFT TO RIGHT
300 CLR%=(POINT(X%,Y1%)*128)+(POINT(X%,Y1%+1)*64)+(POINT(X%,Y1%+2)*32)+(POINT(X%,Y1%+3)*16)+(POINT(X%,Y1%+4)*8)+(POINT(X%,Y1%+5)*4)+(POINT(X%,Y1%+6)*2)+POINT(X%,Y1%+7)
310 IF CLR% = 7 THEN CLR% = 3
311 P%=P%+1
320 MID$(GLIN$,P%)=CHR$(CLR%)
340 NEXT
345 LPRINT GLIN$;
350 LPRINT STRING$(319-RIGHT,0)
460 NEXT
470 SCREEN 0,1
480 WIDTH 40
490 CLS
500 PRINT " "
510 PRINT "    PRINT COMPLETE"
520 CHAIN "easygraf"

PRNTSAVE.BAS

250 WIDTH "lpt1:",255
252 LPRINT CHR$(27);"3";CHR$(24)
255 FOR Z%=1 TO INT(((TOP-1)/8))
256 LPRINT " "
257 NEXT
270 FOR Y1% = TOP TO BOT STEP 7
285 LPRINT CHR$(27);"K";CHR$(63);CHR$(1);STRING$(LEFT-1,0);
290 FOR X%=LEFT TO RIGHT
300 CLR%=(POINT(X%,Y1%)*128)+(POINT(X%,Y1%+1)*64)+(POINT(X%,Y1%+2)*32)+(POINT(X%,Y1%+3)*16)+(POINT(X%,Y1%+4)*8)+(POINT(X%,Y1%+5)*4)+(POINT(X%,Y1%+6)*2)+POINT(X%,Y1%+7)
310 IF CLR% = 7 THEN CLR% = 3
320 LPRINT CHR$(CLR%);
340 NEXT
350 LPRINT STRING$(319-RIGHT,0)
460 NEXT
470 SCREEN 0,1
480 WIDTH 40
490 CLS
500 PRINT " "
510 PRINT "    PRINT COMPLETE"
520 CHAIN "easygraf"

SAMPDRAW.BAS

1 J2=0
5 SCREEN 1 :CLS
10 A$="c1;l20;d20;r20;u20;l10;d20;l10;u10;r20"
20 B$="c3;l100;u40;r100;d40":Z$="e60;u40;g60"
50 D$="bm150,150;xb$;"
60 E$="xz$;"
70 F$="bl100;bd40;xz$;"
80 G$="bd40;be60;br100;xb$;"
90 H$="bm50,110;e50;f50"
100 I$="bl100;be60;e50;f50;h50;g60;"
110 J$="bm75,120;xa$;bm130,120;xa$;"
135 CLS
140 DRAW "a=j2:xd$;xe$;xf$;xg$;xh$;xi$;xj$;"
150 END

SAVEGRAF.BAS

1 DEF SEG=&HB800
2 BSAVE "tempgraf",0,&H4000
5 WIDTH 40
10 SCREEN 0,1
20 COLOR 15,9,1
30 KEY OFF
40 CLS
50 PRINT STRING$(40,176)
60 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
70 PRINT STRING$(1,176)+"       EASY - GRAF   SAVE SCREEN      "+STRING$(1,176)
80 PRINT STRING$(1,176)+SPACE$(38)+STRING$(1,176)
90 PRINT STRING$(40,176)
100 PRINT " "
101 INPUT " ENTER NAME TO BE GIVEN TO GRAPHICS ITEM ==>";GRAFNAM$
102 INPUT " ENTER DESCRIPTION OF ITEM               ==>";GRAFDESC$
120 OPEN "GRAFINDX.EZG" AS #1 LEN=128
130 FIELD #1, 10 AS IDX$, 23 AS DESC$,2 AS RESOL$, 2 AS LEFTCOR$, 2 AS RIGHTCOR$,2 AS TOPCOR$, 2 AS BOTCOR$
135 LSET IDX$="9999999999"
140 WHILE  IDX$ <> SPACE$(10)
150 I = I+1
155 IF I > 10 THEN LSET IDX$ = "999999": GOTO 170
160 GET #1,I
170 WEND
175 SUBSCR = 0
176 NSPCS = 8 - LENGTHPARM
180 IF I>10 THEN 1100
182 LSET LEFTCOR$ = MKI$(LEFT)
185 LSET RIGHTCOR$ = MKI$(RIGHT)
187 LSET TOPCOR$=MKI$(TOP)
188 LSET BOTCOR$=MKI$(BOT)
190 LSET IDX$=GRAFNAM$
200 LSET DESC$= GRAFDESC$
205 LSET RESOL$ = MKI$(RES%)
210 PUT #1,I
220 CLOSE #1
222 CLOSE #1
225 GRAPHICFILENAME$ = GRAFNAM$+".EZG"
230 PRINT "     Index updated"
233 SCREEN RES%,1
235 DEF SEG=&HB800
240 BLOAD "TEMPGRAF",0
245 DEF SEG=&HB800
250 BSAVE GRAFNAM$+".EZG",0,&H4000
270 KILL "TEMPGRAF.BAS"
275 SCREEN 0,1
276 WIDTH 40
277 CLS
280 PRINT " "
290 PRINT "     "+GRAFNAM$+" SAVED TO DISKETTE"
300 CHAIN "EASYGRAF"
1100 PRINT " "
1110 PRINT "     DIRECTORY IS FULL"
1120 PRINT "     USE ANOTHER DISKETTE"
1130 CHAIN "EASYGRAF"

SKETCH.BAS

10 'INTERACTIVELY SKETCH PICTURES.
20      'USES INKEY$ TO MONITOR THE KEYBOARD AND RECEIVE INSTRUCTIONS.
30      'USER CAN DRAW (USING CURSOR CONTROL KEYS) OR JUST MOVE "PEN"
40      'TO NEW PART OF THE SCREEN.  WHEN MOVING TO NEW PART OF THE SCREEN
50      '(WITHOUT DRAWING), DRAWING$ IS SET TO "N", AND POINTS INDICATED
60      'BY THE CURSOR CONTROL KEYS ARE SET AND THEN IMMEDIATELY ERASED.
70 SCREEN 0: WIDTH 80: CLS
80 PRINT "THIS PROGRAM LETS YOU SKETCH PICTURES INTERACTIVELY, USING"
90 PRINT "THE KEYBOARD TO CONSTRUCT YOUR DISPLAY.  THE PROGRAM"
100 PRINT "ASKS YOU TO CHOOSE A BACKGROUND COLOR AND A DRAWING COLOR FOR"
110 PRINT "YOUR PICTURE, AND A PAIR OF COORDINATES AT WHICH TO START"
120 PRINT "DRAWING.  USE THE CURSOR CONTROL KEYS TO DRAW UP, DOWN, LEFT,"
130 PRINT "OR RIGHT.  TO PICK UP YOUR PEN AND MOVE IT TO SOME OTHER PART"
140 PRINT "OF THE SCREEN, PRESS `B' AND THEN THE CURSOR CONTROL KEYS.  TO"
150 PRINT "RESUME DRAWING, PRESS `D' AND CONTINUE WITH THE CURSOR CONTROL"
160 PRINT "KEYS.  PRESS `S' WHEN YOU ARE FINISHED SKETCHING."
170 PRINT
180 PRINT "0 - BLACK    4 - RED         8 - GRAY          12 - LIGHT RED     "
190 PRINT "1 - BLUE     5 - MAGENTA     9 - LIGHT BLUE    13 - LIGHT MAGENTA "
200 PRINT "2 - GREEN    6 - BROWN      10 - LIGHT GREEN   14 - YELLOW        "
210 PRINT "3 - CYAN     7 - WHITE      11 - LIGHT CYAN    15 - INTENSE WHITE "
220 PRINT
230 INPUT "COLOR CHOICE FOR BACKGROUND"; BACKGROUND
240 IF BACKGROUND >=0 AND BACKGROUND <=15 THEN 260
250 PRINT "INVALID COLOR CHOICE.  TRY AGAIN": GOTO 230
260 PRINT
270 PRINT "           1 - GREEN         4 - CYAN       "
280 PRINT "           2 - RED           5 - MAGENTA    "
290 PRINT "           3 - BROWN         6 - WHITE      "
300 PRINT
310 INPUT "COLOR CODE FOR FOREGROUND"; FORE
320 IF FORE >=1 AND FORE <=6 THEN 340
330 PRINT "INVALID COLOR CHOICE.  TRY AGAIN": GOTO 310
340 IF FORE = 1 OR FORE = 2 OR FORE = 3 THEN PALETTE = 0 ELSE PALETTE = 1
350 IF FORE = 1 OR FORE = 4 THEN DRAWCOLOR = 1
360 IF FORE = 2 OR FORE = 5 THEN DRAWCOLOR = 2
370 IF FORE = 3 OR FORE = 6 THEN DRAWCOLOR = 3
380 PRINT
390 PRINT "HIT THE DOWN ARROW TO EXTEND YOUR LINE DOWNWARD"
400 PRINT "HIT THE UP ARROW TO EXTEND YOUR LINE UPWARD"
410 PRINT "HIT THE RIGHT ARROW TO EXTEND YOUR LINE TO THE RIGHT"
420 PRINT "HIT THE LEFT ARROW TO EXTEND YOUR LINE TO THE LEFT"
430 PRINT
440 INPUT "INPUT STARTING COORDINATES"; X,Y
450 SCREEN 1: COLOR BACKGROUND, PALETTE: CLS
455 KEY OFF
460 LINE (0,0) - (319,199),DRAWCOLOR,B        'DRAW BOX AROUND SCREEN EDGES
470 IF X < 0 OR X > 319 OR Y < 0 OR Y > 199 THEN 580
480 PSET (X,Y),DRAWCOLOR
490 IF DRAWING$ = "N" THEN FOR J=1 TO 50: NEXT: PRESET (X,Y)     'MOVING TO
500 A$ = INKEY$: IF A$ = " " THEN 500                            'NEW POSITION
510 IF RIGHT$(A$,1) = CHR$(80) THEN Y = Y + 1: GOTO 480          'DOWN
520 IF RIGHT$(A$,1) = CHR$(72) THEN Y = Y - 1: GOTO 480          'UP
530 IF RIGHT$(A$,1) = CHR$(77) THEN X = X + 1: GOTO 480          'RIGHT
540 IF RIGHT$(A$,1) = CHR$(75) THEN X = X - 1: GOTO 480          'LEFT
550 IF A$ = "D" OR A$ = "d" THEN DRAWING$ = "Y": GOTO 500
555 IF A$="B" OR A$="b" THEN DRAWING$="N": GOTO 500
560 IF A$ = CHR$(83) THEN 580
570 GOTO 470
580 IF INKEY$ = " " THEN 580

TESTPRNT.BAS

250 WIDTH "lpt1:",255
265 CRL = 0
270 FOR Y1 = 0 TO 7
280 CRL = CRL + 2^Y1
290 PRINT Y1;" - ";CRL
319 LPRINT CHR$(27);"K";CHR$(63);CHR$(1);
320 LPRINT STRING$(255,CRL);STRING$(64,CRL);
325 LPRINT
460 NEXT
470 SCREEN 0,1
480 WIDTH 40
490 CLS
500 PRINT " "
510 PRINT "    PRINT COMPLETE"

Directory of PC-SIG Library Disk #0191

 Volume in drive A has no label
 Directory of A:\

COLOR    BAS       256   5-12-82
DIGIDRAW BAS      8064  11-08-83   8:21p
DIGIDRAW DOC     27904  11-09-83   6:14p
DVED     COM     44855   9-14-83   9:32a
READ     ME       5923   9-18-83   1:57a
GRAPH    BAS      5632   6-25-83   6:23a
GRAPH2   BAS      6144   5-28-83   9:16a
HISTGRAM BAS      1024   7-15-82  10:33p
INFO     BIN     16512  10-23-83   6:57p
LOGO     BIN     16512  10-16-83   7:06p
PIECHART BAS      2432   5-19-82
PLOT     BAS      1152   7-17-82
SKETCH   BAS      3072   1-01-80  12:07a
--------             4   8-20-85   8:01a
EASEL    BAS      1536   7-22-82   3:48p
EASEL    ASC      1920   7-20-82   9:31p
PENCIRC  BAS       512   7-22-82   3:55p
PENCLEAR BAS       256   7-22-82   3:49p
PENDRAW  BAS       256   7-22-82   3:08p
PENLINE  BAS       384   7-22-82   3:07p
PENPAINT BAS       768   7-15-82  10:36p
PENSAVE  BAS       256   7-22-82   3:22p
-------              4   8-20-85   8:04a
EASYGRAF BAS      1664   3-21-82
BUILGRAF BAS       256   3-07-82
COLRGRAF BAS       128   3-21-82
DISPGRAF BAS       640   5-11-82
DISPGRDR BAS       640   3-07-82
DRAWGRAF BAS       640   2-16-82
EASYGRAF ASC      2048   7-20-82   9:29p
GRAPHIT  BAS      2432   5-11-82
MONOGRAF BAS       128   3-21-82
PRINGRAF BAS      1024   5-11-82
PRN2GRAF BAS       768   5-11-82
PRNTGRAF BAS       640   3-31-82
PRNTSAVE BAS       512   3-31-82
SAMPDRAW BAS       384   5-12-82
SAVEGRAF BAS      1280   5-11-82
TEMPGRAF BAS     16512   7-03-82
TESTPRNT BAS       256   3-14-82
------               4   8-20-85   8:04a
README1  NOW      2048   1-01-80  12:00a
FILES191 TXT      2381   2-11-87   4:17p
       43 file(s)     179763 bytes
                      119808 bytes free