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