Compucolor.org – Virtual Media

Listing of file='PMENU.BAS;01' on disk='vmedia/chip_91-sector.ccvf'

10 PLOT 6,3,12,27,24,14
20 PRINT "I N T E R A C T I V E  S C R E E N  D R A W I N G  P R O G R A M"
25 PRINT TAB( 17);"COPYRIGHT RESERVED"
30 PLOT 15,3,51,3:PRINT "REV. 14-08-81
40 PLOT 3,51,5:PRINT "BY  CHRIS TEO"
42 FOR I= 1TO 7:PLOT 6,I,2,I* 6,I* 6,242,I* 6,100- I* 6,100- I* 6,100- I* 6,100- I* 6,I* 6,I* 6,I* 6,255:NEXT
50 CLEAR 1000
60 DIM X(2),Y(2),F(2),B(2)
70 DEF FN A(D)= 28672+ 128* X+ 2* Y
80 DEF FN B(E)= 28672+ INT (YP/ 2)* 2+ 128* (INT ((127- XP)/ 4))
90 DEF FN Y(X)= SIN (X)
100 A0$= "PROCESSING OCCURRING  .... PLEASE WAIT"
140 A4$= "USE NUMERIC-PAD TO PLOT, 5 TO HALT, 0 TO RESUME"
150 A5$= "ENTER X AND Y CO-ORDINATES >"
160 A6$= "ENTER FILENAME AS <FILENAME.EXT;VER> :"
170 A7$= "USE ARROW-KEY-PAD TO LOCATE CURSOR. HIT (ESC) TO CONFIRM"
180 A8$= "SELECT 1:ENTER OR 2:LOCATE"
200 CO= 2:DV= 0:PT= 0:XF= 0:YF= 0:CZ= 1
500 GOSUB 50100
510 GOSUB 60000
520 GOSUB 33000
1000 X= PEEK (33228):Y= PEEK (33227):PLOT 15,6,3,3,0,31,11:PRINT "COMMAND > "
1005 PLOT 6,CO,3,Y,X:C= CALL (2):IF C= 10THEN PLOT 10:GOTO 1000
1010 IF C< 32THEN GOSUB 10000:GOTO 1000
1015 IF C> 48AND C< 58THEN GOSUB 12000:GOTO 1000
1020 IF C> 63AND C< 74THEN C= C- 63:GOSUB 15010:GOTO 1000
1030 IF C> 73AND C< 84THEN C= C- 73:GOSUB 15030:GOTO 1000
1040 IF C> 83AND C< 93THEN C= C- 83:GOSUB 15050:GOTO 1000
1090 GOTO 1000
10000 IF C> 1AND C< 8THEN RETURN
10005 IF C= 27THEN GOSUB 11000:RETURN
10020 REM
10030 PLOT C:CO= PEEK (33231)
10900 RETURN
11000 REM
11010 IF PT> 2THEN CL= 1:A$= "MAX. NUMBER OF POINTS IS SET":GOSUB 55000:T= CALL (2):GOTO 11090
11020 X(PT)= X:Y(PT)= Y:Z= FN A(1):F(PT)= PEEK (Z):B(PT)= PEEK (Z+ 1)
11030 PT= PT+ 1
11040 PLOT 3,Y,X,6,PT+ 64,35
11090 PLOT 27,24
11900 RETURN
12000 C= C- 48
12010 ON CGOSUB 12110,12120,12130,12140,12150,12160,12170,12180,12190
12020 RETURN
12110 PLOT 3,15,23:RETURN
12120 PLOT 3,31,23:RETURN
12130 PLOT 3,47,23:RETURN
12140 PLOT 3,15,15:RETURN
12150 PLOT 3,31,15:RETURN
12160 PLOT 3,47,15:RETURN
12170 PLOT 3,15,7:RETURN
12180 PLOT 3,31,7:RETURN
12190 PLOT 3,47,7:RETURN
15000 REM
15010 ON CGOSUB 20000,21000,22000,23000,35500,25000,26000,27000,28000,29000
15020 RETURN
15030 ON CGOSUB 30000,31000,32000,33000,34000,35000,36000,37000,38000,39000
15040 RETURN
15050 ON CGOSUB 40000,41000,42000,43000,44000,45000,46000,47000,48000
15900 RETURN
20000 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
20020 IF C= 49THEN GOSUB 20100
20030 IF C= 50THEN GOSUB 20500
20040 RETURN
20100 GOSUB 50200
20110 CL= 2:A$= "ENTER THIRD X AND Y COORDINATE :":GOSUB 55000
20120 INPUT "";Y3,X3:IF X3< 0OR X3> 31OR Y3< 0OR Y3> 63THEN 20110
20130 GOSUB 50300:U= CALL (4)
20132 X= X1:Y= Y1:Q1= FN A(1):X= X3:Y= Y3:Q3= FN A(1)
20140 FOR I= 0TO X2- X1
20150 FOR J= 0TO Y2- Y1
20160 Q4= Q3+ 128* I+ 2* J:Q5= Q1+ 128* I+ 2* J
20162 IF RU= 47THEN Q6= PEEK (Q4):Q7= PEEK (Q4+ 1)
20170 POKE Q4,PEEK (Q5):POKE Q4+ 1,PEEK (Q5+ 1)
20172 IF RU= 44THEN POKE Q5,32:POKE Q5+ 1,0
20174 IF RU= 47THEN POKE Q5,Q6:POKE Q5+ 1,Q7
20180 NEXT J,I
20185 RU= 0
20190 RETURN
20500 IF PT< 3THEN GOSUB 54800:RETURN
20510 X1= X(0):X2= X(1):X3= X(2):Y1= Y(0):Y2= Y(1):Y3= Y(2)
20520 GOSUB 25000:GOTO 20130
21000 CL= 2:A$= A6$:GOSUB 55000
21010 INPUT "";F$:IF F$= "0"THEN RETURN
21020 PLOT 3,0,31,11,27,4:PRINT "LOA ";F$;" C000":PLOT 27,27
21030 TM= PEEK (32940)+ 256* PEEK (32941)
21040 POKE TM+ 263,192:POKE TM+ 269,208
21050 U= CALL (4):U= CALL (5)
21060 POKE TM+ 263,224:POKE TM+ 269,240
21070 RETURN
22000 U= CALL (4)
22010 PLOT 2,0,4,242,0,127,127,127,127,4,0,4,255
22020 RETURN
23000 CL= 5:A$= "USE COLOUR-PAD TO INDICATE BLOCK POSITION":GOSUB 55000
23510 C= CALL (2)
23520 IF C< 16OR C> 23THEN RETURN
23530 IF C< 20THEN XF= 19- C:YF= 0
23540 IF C> 19THEN XF= 23- C:YF= 1
23550 RETURN
25000 FOR I= 0TO PT- 1:X= X(I):Y= Y(I):Z= FN A(1):POKE Z,F(I):POKE Z+ 1,B(I):NEXT :PT= 0:RETURN
26000 REM
26010 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
26030 IF C= 49THEN GOSUB 26100
26040 IF C= 50THEN GOSUB 26200
26050 RETURN
26100 GOSUB 50200
26110 GOSUB 50300
26120 U= CALL (4):PLOT 6,CO,2,Y1,X1,242,Y2,X1,Y2,X2,Y1,X2,Y1,X1,255
26130 RETURN
26200 IF PT< 2THEN GOSUB 54800:RETURN
26205 X1= 124- X(0)* 4+ XF:Y1= Y(0)* 2+ YF:X2= 124- X(1)* 4+ XF:Y2= Y(1)* 2+ YF
26210 PT= 0
26220 GOTO 26110
27000 REM
27020 U= CALL (4):U= CALL (5)
27060 GOSUB 54900
27900 RETURN
28000 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
28020 IF C= 49THEN GOSUB 28100
28030 IF C= 50THEN GOSUB 28200
28040 RETURN
28100 GOSUB 50200
28110 GOSUB 50300
28120 U= CALL (4):PLOT 6,CO,2,246,X1
28130 FOR I= Y1TO Y2
28140 PLOT I,X2
28150 NEXT
28160 PLOT 255:RETURN
28200 IF PT< 2THEN GOSUB 54800:RETURN
28210 X1= 124- X(0)* 4+ XF:Y1= Y(0)* 2+ YF:X2= 124- X(1)* 4+ XF:Y2= Y(1)* 2+ YF
28215 PT= 0
28220 GOTO 28110
29000 REM
29010 CL= 2:A$= A6$:GOSUB 55000
29020 INPUT "";F$:IF F$= "0"THEN 29900
29030 U= CALL (4):PLOT 3,0,31,11,27,4:PRINT "LOA ";F$
29040 PLOT 27,27
29900 RETURN
30000 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
30020 IF C= 49THEN GOSUB 30100
30030 IF C= 50THEN GOSUB 30200
30040 RETURN
30100 GOSUB 50200
30110 U= CALL (4):PLOT 6,CO,2,Y1,X1,242,Y2,X2,255
30120 RETURN
30200 IF PT< 2THEN GOSUB 54800:RETURN
30210 X1= 124- X(0)* 4+ XF:Y1= Y(0)* 2+ YF:X2= 124- X(1)* 4+ XF:Y2= Y(1)* 2+ YF
30220 GOSUB 25000
30230 GOTO 30110
31000 CL= 2:A$= A6$:GOSUB 55000
31010 INPUT "";F$:IF F$= "0"THEN RETURN
31020 U= CALL (4):PLOT 27,4:PRINT "DEL ";F$:PLOT 27,27
31025 GOSUB 54900
31900 RETURN
32000 U= CALL (4)
32010 PLOT 6,3,12,15,27,4:PRINT "DIR":PLOT 27,27
32020 GOSUB 54900:RETURN
33000 U= CALL (4):PLOT 6,7,15,12,27,24
33010 PRINT TAB( 16)"M E N U - I N F O R M A T I O N
33020 PRINT TAB( 23)"F U N C T I O N S
33030 PRINT TAB( 31)"n"
33040 PRINT TAB( 14)"neeeeeeeeeeeeeeeTeTeeeeeeeeeeeeeeeeo
33050 PRINT " neeeeeeeeeeeeeeeeeeeeeeeeeo  n n  neeeeeeeeeeeeeeeeeeeeeeeeeeo
33060 PRINT " a     VECTOR PLOTTING     b  n n  a   SCREEN MANIPULATION    b
33070 PRINT " aDOT PLOTS VIA NUMERIC-PADb  n n  aADD OTHER SCREEN FROM DISKb
33080 PRINT " aFRAME A  SQUARE/RECTANGLEb  n n  aBORDER SCREEN SAFETY AREASb
33090 PRINT " aHIGH DENSITY BLOCK DRAWERb  n n  aINPUTS DISPLAYS FROM DISKSb
33100 PRINT " aJOIN 2 POINTS WITH A LINEb  n n  aUP  OR  SCROLL SCREEN AREAb
33110 PRINT " aNEW PREDEFINED FUNC. PLOTb  n n  aXFER SPECIFIED SCREEN AREAb
33120 PRINT " aOUTPUT A SINGLE  PLOT DOTb  n n  aYANKS/BLACKOUT SCREEN AREAb
33130 PRINT " aQUOTE LOCUS WITH VARIANCEb  n n  a@DUP SPECIFIED SCREEN AREAb
33140 PRINT " a\-LINE PLOT ELASTIC STYLEb  n n  a[SWAPSPECIFIED SCREEN AREAb
33160 PRINT " lm  n n  lm
33170 PRINT TAB( 30)"n n"
33180 PRINT TAB( 30)"n n"
33190 PRINT TAB( 14)"neeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeo
33200 PRINT " neeeeeeeeeeeeeeeeeeeeeeeeeo       neeeeeeeeeeeeeeeeeeeeeeeeeeo
33210 PRINT " a     DISKS  [FCS]        b       a   OTHER  UTILITIES       b
33220 PRINT " aKILLS  OR  DELETES  FILESb       aCHANGE DEFAULT PLOT BLOCKSb
33230 PRINT " aLISTS CURRENT DIRECTORY. b       aERASE EXISTING SET POINTS.b
33240 PRINT " aSAVES CURRENT SCREEN .DSPb       aGRID REFERENCE SUPERIMPOSEb
33250 PRINT " aV-SETS DEFAULT DISK DRIVEb       aPUT NEW FUNCTION INTO PROGb
33260 PRINT " aW-DUP DISK, NEED 2 DRIVESb       aRESTORE SCREEN TO PREVIOUSb
33270 PRINT " aZETA OR INITIALIZES DISKSb       aTEXT INSERTION [VERSATILE]b
33300 PRINT " lm       lm
33900 GOSUB 54900:RETURN
34000 U= CALL (4)
34003 PRINT "":PLOT 15,12:PRINT "VERTICAL LOWER LIMIT":PRINT "VERTICAL UPPER LIMIT":PRINT
34006 PRINT "HORIZONTAL LOWER LIMIT":PRINT "HORIZONTAL UPPER LIMIT":PRINT
34009 PRINT "CARTESIAN X MINIMUM VALUE":PRINT "CARTESIAN X MAXIMUM VALUE":PRINT
34012 PRINT "TYPE OF GRAPH :-":PRINT "	1  X-AXIS LINE VECTOR":PRINT "	2  X-AXIS POINT VECTOR"
34015 PRINT "	3  HORIZONTAL BAR":PRINT "	4  HORIZONTAL AXIS BAR":PRINT "	5  HORIZONTAL IMAGE BAR"
34018 PRINT "	6  VERTICAL BAR":PRINT "	7  VERTICAL AXIS BAR":PRINT "	8  VERTICAL IMAGE BAR"
34020 PRINT "	9  Y-AXIS LINE VECTOR":PRINT "	10 Y-AXIS POINT VECTOR":PRINT
34021 PRINT "STEP SIZE OF GRAPH (0.1 - 10)"
34022 PLOT 3,0,28:PRINT "NOTE: IF 3,4,5,9,10 ARE CHOSEN, THEN VERTICAL INPUT VALUES"
34023 PRINT "	ARE ACTUALLY THE HORIZONTAL'S AND VICE VERSA."
34024 PLOT 3,31,0:INPUT Y0:IF Y0< 0OR Y0> 127THEN U= CALL (3):RETURN
34027 PLOT 3,31,1:INPUT I2:IF I2< 0OR I2> 127OR Y0> I2THEN 34003
34030 PLOT 3,31,3:INPUT X0:IF X0< 0OR X0> 127THEN 34003
34033 PLOT 3,31,4:INPUT I1:IF I1< 0OR I1> 127OR X0> I1THEN 34003
34036 PLOT 3,31,6:INPUT X1
34039 PLOT 3,31,7:INPUT X2:IF X1> X2OR ABS (X1- X2)> 50THEN 34003
34042 PLOT 3,31,9:INPUT CY:IF CY< 1OR CY> 10THEN 34003
34045 PLOT 3,31,21:INPUT SZ:IF SZ< 0.1OR SZ> 10THEN 34003
34046 GOSUB 34500:U= CALL (3)
34048 Y1= 9999:Y2= - 9999:X3= (I1- X0)/ (X2- X1):T= 0.5:IF X1> - 2AND X2< 2THEN T= 0.1
34050 FOR X= X1TO X2STEP T
34060 IF X= 0THEN X= 0.005
34070 A= FN Y(X):IF A> Y2THEN Y2= A
34080 IF A< Y1THEN Y1= A
34090 NEXT
34110 Y3= (I2- Y0)/ (Y2- Y1):X5= (I2+ Y0)/ 2
34120 PLOT 6,CO:FOR I= X0TO I1STEP SZ:X= I/ X3+ X1:IF X= 0THEN X= 0.001
34130 A= INT ((FN Y(X)- Y1)* Y3+ Y0):IF A> I2THEN A= I2
34133 IF A< Y0THEN A= Y0
34137 IF I= X0AND (CY= 250OR CY= 246)THEN PLOT 2,CY,I:GOTO 34160
34138 IF CY< 239THEN GOSUB 34700:GOTO 34160
34139 IF CV= 1AND I= X0THEN PLOT 2,A,I,CY,A,I:GOTO 34160
34140 IF I= X0THEN PLOT 2,I,A,CY,I,A:GOTO 34160
34145 IF CV= 1THEN PLOT A,I:GOTO 34160
34150 PLOT I,A
34160 NEXT
34165 IF CY< 239THEN RETURN
34170 PLOT 255
34180 RETURN
34500 CV= 0:IF CY= 9OR CY= 10THEN CV= 1
34505 IF CY= 1OR CY= 9THEN CY= 242:RETURN
34510 IF CY= 2OR CY= 10THEN CY= 253:RETURN
34520 IF CY= 3THEN CY= 250:RETURN
34530 IF CY= 6THEN CY= 246:RETURN
34535 RETURN
34700 REM
34710 IF CY= 4THEN PLOT 2,A,I,242,X5,I,255:RETURN
34720 IF CY= 7THEN PLOT 2,I,A,242,I,X5,255:RETURN
34730 IF CY= 5THEN PLOT 2,A,I,242,X5+ X5- A,I,255:RETURN
34750 IF CY= 8THEN PLOT 2,I,A,242,I,X5+ X5- A,255:RETURN
34790 RETURN
35000 REM
35010 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
35030 IF C= 49THEN GOSUB 35100
35040 IF C= 50THEN GOSUB 35200
35050 RETURN
35100 A$= A5$:GOSUB 55000
35110 INPUT "";Y,X:IF X< 0OR X> 127OR Y< 4OR Y> 127THEN 35100
35120 U= CALL (4):PLOT 6,CO,2,Y,X,255
35130 RETURN
35200 IF PT= 0THEN GOSUB 54800:RETURN
35210 X= 124- X(0)* 4+ XF:Y= Y(0)* 2+ YF
35220 PT= PT- 1
35230 FOR I= 0TO PT- 1
35240 X(I)= X(I+ 1):Y(I)= Y(I+ 1):F(I)= F(I+ 1):B(I)= B(I+ 1)
35250 NEXT :GOTO 35120
35500 U= CALL (4):CL= 5:A$= A4$:GOSUB 55000
35510 PC= CO:P9= 0:XP= 124- X* 4+ XF:YP= Y* 2+ YF
35520 IF P9= 5THEN P0= FN B(1):FI= PEEK (P0):BI= PEEK (P0+ 1)
35528 PLOT 6,65,2,YP,XP,255,15
35530 C= CALL (2)
35540 IF (C> 14AND C< 24)OR (C> 28AND C< 32)THEN PLOT C:PC= PEEK (33231):GOTO 35530
35550 IF C= 13THEN PLOT 6,PC,2,YP,XP,255:RETURN
35552 IF C< 48OR C> 57THEN 35530
35553 PLOT 6,0,2,YP,XP,255
35554 IF P9= 0THEN PLOT 6,PC,2,YP,XP,255
35556 IF P9= 5THEN POKE P0,FI:POKE P0+ 1,BI
35560 IF (C= 49OR C= 52OR C= 55)AND YP> 0THEN YP= YP- 1:GOTO 35580
35570 IF (C= 51OR C= 54OR C= 57)AND YP< 127THEN YP= YP+ 1
35580 IF (C= 49OR C= 50OR C= 51)AND XP> 0THEN XP= XP- 1:GOTO 35520
35590 IF (C= 55OR C= 56OR C= 57)AND XP< 127THEN XP= XP+ 1:GOTO 35520
35600 IF C= 48THEN P9= 0
35610 IF C= 53THEN P9= 5
35620 GOTO 35520
36000 U= CALL (4):PRINT "":PLOT 15,12
36010 PRINT "PLEASE ENTER YOUR FUNCTION AT LINE 90":PRINT
36020 PRINT "FOR EXAMPLE :
36030 PRINT "90 DEF FNY(X) = SIN(X) - COS(X) + TAN(X) + 1 - (X*X)
36040 PRINT :PRINT
36050 PRINT "NOTE THAT YOU MUST CALL YOUR FUNCTION AS FNY(X)"
36055 PRINT "TYPE RUN WHEN YOU ARE READY"
36060 PRINT :END
37000 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
37020 IF C= 49THEN GOSUB 37100
37030 IF C= 50THEN GOSUB 37500
37040 RETURN
37100 GOSUB 50200:T= X1:X1= Y1:Y1= T:T= X2:X2= Y2:Y2= T
37110 CL= 2:A$= "ENTER LINE OR DOTS :":GOSUB 55000:C= CALL (2)
37130 IF C= 76THEN CY= 242:C3= 0.02:GOTO 37160
37140 IF C= 68THEN CY= 253:C3= 0.04:GOTO 37160
37150 RETURN
37160 U= CALL (4):X= X2- X1:Y= Y2- Y1:R= SQR (X^ 2+ Y^ 2):AG= ATN (Y/ (X+ 0.05)):PI= 3.1416* 2
37170 IF X2< X1THEN AG= AG+ 3.1416
37172 CL= 2:A$= "ENTER ELONGATION COEFFICIENT [0.75] > ":GOSUB 55000:INPUT "";E0
37174 IF E0= 0THEN E0= 0.75
37180 POKE 33278,0:PLOT 6,CO,2
37190 FOR R0= AGTO AG+ PISTEP C3
37210 X4= X1+ E0* R* COS (R0):Y4= Y1+ R* SIN (R0)
37220 IF X4> 126OR X4< 1OR Y4> 126OR Y4< 1THEN 37240
37230 PLOT X4,Y4,CY
37240 IF PEEK (33278)= 13THEN 37250
37245 NEXT
37250 PLOT 255:RETURN
37500 IF PT< 2THEN GOSUB 54800:RETURN
37510 X1= 124- X(0)* 4+ XF:Y1= Y(0)* 2+ YF:X2= 124- X(1)* 4+ XF:Y2= Y(1)* 2+ YF
37515 TP= Y1:Y1= X1:X1= TP:TP= Y2:Y2= X2:X2= TP
37517 X2= X2+ (X2- X1)* 0.33
37520 GOSUB 25000
37530 GOTO 37110
38000 U= CALL (3)
38010 RETURN
39000 REM
39010 CL= 2:A$= A6$:GOSUB 55000
39020 INPUT  "";F$:IF F$= "0"THEN RETURN
39030 PLOT 3,0,31,11,27,4:PRINT "SAV ";F$;" 7000-7FFF 1000"
39900 PLOT 27,27:RETURN
40000 U= CALL (4):CL= 7:A$= "TEXT [USE ESC E TO EXIT, ESC L TO WRITE BACKWARD]"
40100 L9= 0:L8= 0:GOSUB 55000:PLOT 6,CO,3,Y,X
40200 C= CALL (2):IF C= 27THEN L9= 0:L8= 0:GOTO 40600
40202 IF L8= 1AND C> 31THEN GOSUB 40700:POKE Z+ 1,PEEK (33231)+ 128:PLOT 25:GOTO 40200
40205 IF C= 10THEN PLOT 10:GOTO 40200
40207 IF C< 8THEN 40200
40220 IF C< 128THEN PLOT C
40230 IF L9= 1THEN PLOT 26,26
40240 GOTO 40200
40600 C= CALL (2):IF C= 69THEN PLOT 27,24:RETURN
40610 IF C= 76THEN L9= 1
40615 IF C= 66THEN L8= 1
40620 IF C= 74OR C= 75OR C= 88OR C= 89THEN PLOT 27,C- 64
40630 GOTO 40200
40700 X= PEEK (33227):Y= PEEK (33228):Z= FN A(1):POKE Z,C:RETURN
41000 CL= 2:A$= "SCROLL OR DUP LINES ?":GOSUB 55000:M= CALL (2)
41014 CL= 2:A$= "HOW MANY LINES TO SCROLL/DUP ? ":GOSUB 55000:INPUT "";L
41016 CL= 2:A$= A8$:GOSUB 55000:C= CALL (2)
41020 IF C= 49THEN GOSUB 41100
41030 IF C= 50THEN GOSUB 41200
41040 RETURN
41100 GOSUB 51000
41105 GOSUB 64000:IF CY= 2THEN PLOT 6,0,3,Y,X+ H- 1:PRINT SPC( W)""
41107 IF CY= 4THEN PLOT 6,CO* 9,3,Y,X+ H- 1:PRINT SPC( W)""
41108 IF CY= 2OR CY= 4THEN L= H
41109 IF L< 1OR L> HTHEN L= H
41110 FOR I= 1TO L:XC= CALL (1)
41112 IF M= 83THEN PLOT 6,CO,3,Y,X+ H- 1:PRINT SPC( W)"":PLOT 3,Y,X+ H- 1
41113 NEXT
41114 M= 0:CY= 0
41120 RETURN
41200 IF PT< 2THEN GOSUB 54800:RETURN
41210 X1= X(0):Y1= Y(0):X2= X(1):Y2= Y(1)
41220 GOSUB 50300:GOSUB 25000
41230 X= X1:Y= Y1:H= X2- X1:W= Y2- Y1
41240 GOTO 41105
42000 CL= 2
42005 A$= "ENTER DEFAULT DRIVE NUMBER >":GOSUB 55000
42010 C= CALL (2):IF C= 48OR C= 49THEN POKE 33010,C
42015 RETURN
43000 CL= 2
43010 A$= "DUP FROM CD0: ONTO CD1: ? ":GOSUB 55000
43020 C= CALL (2):IF C< > 78AND C< > 89THEN RETURN
43025 U= CALL (4):PLOT 27,4
43030 IF C= 78THEN PRINT "DUP 1: TO 0:":GOTO 43050
43040 PRINT "DUP 0: TO 1:"
43050 PLOT 27,27
43060 GOSUB 54900
43900 RETURN
44000 RU= 44:GOSUB 20000:RETURN
45000 CL= 7:A$= "BLANKOUT OR DEFAULT TO CURRENT SETTING ?"
45010 GOSUB 55000:CY= CALL (2)
45020 IF CY= 66OR CY= 68THEN CY= CY- 64:GOSUB 41016
45030 RETURN
46000 CL= 2:A$= "ENTER DISKNAME AND VOLUME >"
46010 GOSUB 55000
46020 INPUT "";F$:IF F$= "0"THEN RETURN
46030 U= CALL (4):PLOT 6,2,12,27,4:PRINT "INI ";DV;":";F$
46040 PLOT 27,27
46050 GOSUB 54900
46900 RETURN
47000 RU= 47:GOSUB 20000:RETURN
48000 C= CALL (4):CL= 5:A$= A4$:GOSUB 55000
48010 TM= PEEK (32940)+ 256* PEEK (32941)
48020 POKE TM+ 230,192:POKE TM+ 191,192:POKE TM+ 197,207
48025 C= CALL (4):P9= 0:X1= 124- X* 4+ XF:Y1= Y* 2+ YF:XI= 1:YI= 1:X2= X1:Y2= Y1:P8= 5
48026 IF P9= 5AND P8= 5THEN U= CALL (4)
48028 IF P9= 5THEN X1= X2:Y1= Y2
48029 C= CALL (3):PLOT 2,Y1,X1,242,Y2,X2,255
48030 P8= 0:C= CALL (2):IF (C> 14AND C< 24)OR (C> 28AND C< 32)THEN PLOT C:GOTO 48030
48032 IF C= 80THEN U= CALL (4):X1= X2:Y1= Y2:GOTO 48030
48034 IF C= 82THEN XI= 1:YI= 1:GOTO 48030
48036 IF C= 13THEN 48900
48038 IF C= 43THEN YI= YI+ 1:GOTO 48030
48039 IF C= 45THEN YI= YI- 1:GOTO 48030
48040 IF C= 42THEN XI= XI+ 1:GOTO 48030
48041 IF C= 47THEN XI= XI- 1:GOTO 48030
48048 IF C< 48OR C> 57THEN 48030
48060 IF (C= 49OR C= 52OR C= 55)THEN Y2= Y2- ABS (YI)
48065 IF (C= 51OR C= 54OR C= 57)THEN Y2= Y2+ ABS (YI)
48070 IF (C= 49OR C= 50OR C= 51)THEN X2= X2- ABS (XI)
48075 IF (C= 55OR C= 56OR C= 57)THEN X2= X2+ ABS (XI)
48080 IF C= 48THEN P9= 0
48085 IF C= 53THEN P9= 5:P8= 5
48090 IF Y2< 0THEN Y2= 0
48095 IF Y2> 127THEN Y2= 127
48100 IF X2< 0THEN X2= 0
48105 IF X2> 127THEN X2= 127
48220 GOTO 48026
48900 POKE TM+ 230,208:POKE TM+ 191,208:POKE TM+ 197,223
48910 RETURN
50000 REM
50100 CL= 68:A$= A0$:GOSUB 55000:RETURN
50200 CL= 2:A$= "ENTER FIRST X AND Y COORDINATES :"
50210 GOSUB 55000
50220 INPUT "";Y1,X1
50230 CL= 2:A$= "ENTER SECOND X AND Y COORDINATES :"
50240 GOSUB 55000
50250 INPUT "";Y2,X2
50260 RETURN
50300 IF X2< X1THEN TP= X1:X1= X2:X2= TP
50310 IF Y2< Y1THEN TP= Y1:Y1= Y2:Y2= TP
50320 RETURN
51000 U= CALL (4):CL= 2:A$= A5$:GOSUB 55000
51010 INPUT "";Y,X:IF X< 0OR X> 31OR Y< 0OR Y> 63THEN 51000
51020 CL= 2:A$= "ENTER HEIGHT OF SCROLL PATCH :"
51030 GOSUB 55000
51040 INPUT "";H:IF H< 1OR H> 30THEN 51020
51050 CL= 2:A$= "ENTER WIDTH OF SCROLL LINES :"
51060 GOSUB 55000:INPUT "";W:IF W< 1OR W> 63THEN 51050
51130 RETURN
54800 CL= 6:A$= A7$:GOSUB 55000:T= CALL (2):RETURN
54900 CL= 5:A$= "PRESS ANY KEY TO CONTINUE ...":GOSUB 55000:C= CALL (2):U= CALL (3):RETURN
55000 PLOT 6,CL,15,3,0,31,11:PRINT A$:PLOT 3,LEN (A$),31:RETURN
60000 REM
60010 TM= PEEK (32940)+ PEEK (32941)* 256
60020 IF TM> 65500THEN 60060
60030 POKE TM+ 1,50:POKE TM+ 3,15
60040 A= 0:FOR N= TM+ 176TO TM+ 182:A= A+ PEEK (N):NEXT
60050 IF A= 1498THEN U= CALL (3):GOTO 60150
60060 AD= 32940:TM= TM- 400:DA= TM:GOSUB 60160
60070 TM= PEEK (32940)+ PEEK (32941)* 256
60080 RESTORE 60190
60090 FOR N= 1TO 400:READ A:IF A> 255THEN N= 820:GOTO 60140
60100 IF A< 0THEN DA= TM- A:AD= TM+ N:GOSUB 60160:GOTO 60140
60110 POKE TM+ N,A
60140 NEXT
60145 PLOT 27,4:PRINT "LOA GRID.DSP E000":PLOT 27,27
60150 AD= 33283:DA= TM+ 8:GOSUB 60160:RETURN
60160 Z1= INT (DA/ 256):Z2= DA- Z1* 256
60170 POKE AD,Z2:N= N+ 1:POKE AD+ 1,Z1:RETURN
60190 DATA 50,0,15,0,0,0,0,123,254,0,194,-121,30,8,243
60200 DATA 58,-6,87,58,-7,254,0,194,-33,122,50,-7,42,-1
60210 DATA 34,-49,42,-3,34,-46,33,-22,1,50,0,11,120,177
60220 DATA 194,-51,123,238,2,211,4,95,43,124,181,194
60230 DATA -48,58,-5,254,0,202,-100,61,50,-5,58,-49,130
60240 DATA 50,-49,58,-7,103,122,50,-7,84,195,-45,50,-7
60250 DATA 50,-4,50,-2,62,15,50,-3,62,50,50,-1,251,201
60260 DATA 254,1,194,-158,33,0,0,6,4,14,17,17,128,0,25
60270 DATA 126,17,128,255,25,119,35,0,13,194,-133,17,8
60280 DATA 0,25,5,194,-131,201
60290 DATA 254,2,194,-182,245,229,197,205,36,0,194,-166
60300 DATA 95,175,87,50,255,129,193,225,241,201
60310 DATA 254,3,194,-218,245,229,33,0,208,17,0,112,1,255,223
60315 DATA 126,18,124,184,194,-210,125,185,202,-215,35,19,195,-198
60320 DATA 225,241,201
60330 DATA 254,4,194,-254,245,229,33,0,112,17,0,208,1,255,127
60335 DATA 126,18,124,184,194,-246,125,185,202,-251,35,19,195,-234
60340 DATA 225,241,201
60345 DATA 254,5,194,-301,245,229,33,0,224,17,0,112,1,0,240
60350 DATA 126,254,32,202,-289,35,19,126,254,0,202,-291
60355 DATA 18,43,27,126,18,35,19,35,19,124,184,194,-270
60360 DATA 225,241,201
61000 DATA 201,300
64000 REM
64005 TM= PEEK (32940)+ 256* PEEK (32941)+ 1
64010 DA= FN A(1):AD= TM+ 126:GOSUB 60160
64020 DA= 128- W- W:AD= TM+ 149:GOSUB 60160
64030 POKE TM+ 129,H- 1:POKE TM+ 131,W* (CZ+ 1)
64040 POKE TM+ 143,35* (1- CZ):RETURN