Listing of file='DISPLY.BAS;01' on disk='vmedia/chip_25-sector.ccvf'
100 REM PROGRAM NAME: DISPLY V12.80 110 REM PART OF 3-D PLOTTING PACKAGE BY JAMES C. MINOR 111 REM 39 BRYN MAWR ROAD 112 REM ROCHESTER, NEW YORK 14624 113 REM TEL: (716-) 247-7069 115 REM COPYRIGHT 1980 BY JAMES C. MINOR 120 REM PURPOSE: TO FACILITATE THE RECALL OF AN EXISTING SET 130 REM OF .DSP FILES. 140 REM NOTE AS I PLAY WITH THE VARIABLE POINTER IN THIS 150 REM PROGRAM, TO MAKE CHANGES: 1.LOAD;2.MAKE CHANGES;3.SAVE 160 REM DO NOT RUN LINE 200 OR SUB 10000 BETWEEN THOSE STEPS. 170 190 GOSUB 10000:REM PREP AND MENU DECODE 194 DEF FN RD(X)= 10^ (INT (LOG (ABS (X+ 1E- 35))/ LOG (10))- DP+ 1):REM DP-PLACE TERM 196 DEF FN RO(X)= INT (.5+ (X+ 1E- 35)/ FN RD(X))* FN RD(X)- 1E- 35:REM ROUNDOFF 198 IF PT> 0 THEN GOTO 230 199 IF MENU GOTO 220 200 GOSUB 1000:REM TITLE 210 GOSUB 2000:REM INPUT FILE PARAMETERS 220 GOSUB 3000:REM INSTRUCTION TABLE 230 GOSUB 4000:REM INSTRUCTION READ AND OPERATION 240 END 250 260 1000 REM SUBROUTINE: TITLE 1010 PRINT :PLOT 30,16,29,19,15,12,14,3,13,3 1020 PRINT "3-D PLOTTING PACKAGE DISPLAY ROUTINES" 1030 PLOT 3,14,11,21 1040 PRINT "INSERT DISK WITH DESIRED .DSP FILES" 1050 PLOT 3,14,13 1060 PRINT "AND PRESS RETURN WHEN READY. "; 1070 INPUT DUMMY:PRINT "" 1080 RETURN 1090 2000 REM SUBROUTINE: INPUT FILE PARAMETERS 2010 PLOT 18,15,12,27,11 2020 PLOT 27,4:PRINT "DIR":PLOT 27,27 2040 PRINT "THE FOLLOWING STATEMENTS ASSUME THE DESIRED .DSP FILES:" 2050 PRINT " 1. ALL HAVE THE SAME NAME." 2060 PRINT " 2. ARE NUMBERED CONSECUTIVELY." 2070 PRINT " AND 3. HAVE THEIR FIRST AND LAST FILE VERSION NUMBERS LYING" 2080 PRINT " IN THE RANGE- 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F." 2090 PRINT 2100 PRINT "IF THIS IS NOT THE CASE, THEN USE THE COMPUCOLOR'S RENAME" 2110 PRINT "COMMAND TO BRING THE FILES INTO COMPLIANCE WITH THE ABOVE." 2120 PRINT 2130 INPUT "ENTER THE FILES' NAME, E.G. NAME.DSP ";NA$ 2140 NA$= LEFT$ (NA$,6) 2150 PLOT 28,11 2160 PRINT "ENTER ";NA$;".DSP'S STARTING VERSION NUMBER "; 2170 GOSUB 2400:PRINT 2180 IF ASC (M$)< 48 OR (57< ASC (M$) AND ASC (M$)< 65) OR 70< ASC (M$) GOTO 2150 2190 S$= M$:S= ASC (S$)- 48+ 7* (ASC (S$)> 57) 2200 PLOT 28,11 2210 PRINT "ENTER ";NA$;".DSP'S ENDING VERSION NUMBER "; 2220 GOSUB 2400:PRINT 2230 IF ASC (M$)< 48 OR (57< ASC (M$) AND ASC (M$)< 65) OR 70< ASC (M$) GOTO 2200 2240 E$= M$:E= ASC (E$)- 48+ 7* (ASC (E$)> 57):C$= E$:C= E 2250 IF E< S THEN PRINT "ENDING VERSION LESS THAN STARTING VERSION!":PLOT 28,28,11:GOTO 2130 2260 RETURN 2270 2400 REM AUTO INPUT ROUTINE (W/O CARRIAGE RETURN) 2410 PLOT 32:POKE 33278,0:REM CLEAR KEYBOARD CHARACTER BYTE 2420 IF PEEK (33278)= 0 GOTO 2420:REM KEEP LOOKING FOR INPUT 2430 M$= CHR$ (PEEK (33278)):REM READ IT 2440 RETURN 2450 3000 REM SUBROUTINE: INSTRUCTION TABLE 3010 PLOT 30,16,29,22,15,12,14,3,23,1 3020 PRINT "INSTRUCTION TABLE" 3030 PRINT 3040 PRINT " COMMAND MEANING" 3050 PRINT " _______ ___________________________________________________" 3060 PRINT " RETURN DISPLAY THE STARTING DISPLAY." 3065 PRINT 3070 PRINT " <- OR -> SHOW THE SEQUENTIALLY PREVIOUS OR NEXT DISPLAY." 3075 PRINT 3080 PRINT " C CONTINUOUSLY CYCLE THROUGH THE DISPLAY FILES." 3090 PRINT TAB( 11);"ANY COMMAND BETWEEN FILE LOADS WILL BREAK THE CYCLE." 3095 PRINT 3100 PRINT " D SHOW THE DISK DIRECTORY." 3105 PRINT 3110 PRINT " F SHOW THIS FILE NUMBER." 3115 PRINT 3120 PRINT " L # LOCATE AND DISPLAY THE INDICATED FILE #." 3125 PRINT 3130 PRINT "NOTE:I PRINT THIS INSTRUCTION TABLE." 3135 PRINT 3140 PRINT " M CREATE A MENU FILE ON THE DISPLAY DISK." 3145 PRINT 3150 PRINT " Q QUIT." 3155 PRINT 3160 PRINT " T DISPLAY: T1- THE TIME IN MINUTES IT TOOK TO SCALE" 3180 PRINT TAB( 20);"T2- THE TIME IN MINUTES IT TOOK TO PLOT" 3200 PRINT " Z DISPLAY: ZMIN- THE SMALLEST Z-VALUE IN THE DISPLAY." 3210 PRINT TAB( 20);"ZMAX- THE LARGEST Z-VALUE IN THE DISPLAY." 3230 PRINT "COMMAND:":PLOT 3,10,28 3240 RETURN 3250 4000 REM SUBROUTINE: INSTRUCTION READ AND OPERATION 4005 IF PT> 0 THEN M= 67:GOTO 4080 4010 GOSUB 2400:REM AUTO INPUT ROUTINE 4020 M= ASC (M$) 4030 IF M= 13OR M= 26OR M= 25OR M= 67OR M= 68OR M= 70OR M= 73OR M= 76OR M= 77OR M= 81OR M= 84OR M= 90 GOTO 4050 4040 PRINT CHR$ (26)+ CHR$ (32)+ CHR$ (26):GOTO 4000 4050 IF M= 26 THEN GOSUB 4400:GOTO 4000:REM <- 4060 IF M= 25 THEN GOSUB 4600:GOTO 4000:REM -> 4070 IF M= 13 THEN GOSUB 4700:GOTO 4000:REM RETURN 4080 IF M= 67 THEN GOSUB 4800:GOTO 4020:REM CYCLE 4090 IF M= 68 THEN GOSUB 5100:GOTO 4000:REM DIRECTORY 4095 IF M= 70 THEN GOSUB 5200:GOTO 4000:REM FILE NUMBER 4100 IF M= 73 THEN GOSUB 3000:GOTO 4000:REM INSTRUCTION TABLE 4110 IF M= 76 THEN GOSUB 5400:GOTO 4000:REM LOCATE FILE # 4120 IF M= 77 THEN GOSUB 6000:GOTO 4100:REM MENU 4130 IF M= 81 THEN PLOT 12 :END :REM QUIT 4140 IF M= 84 THEN GOSUB 8000:GOTO 4000:REM DISPLAY TIME 4150 IF M= 90 THEN GOSUB 8400:GOTO 4000:REM DISPLAY ZMIN/MAX 4160 RETURN 4170 4400 REM SUBROUTINE: <- (PREVIOUS FILE) 4410 PLOT 13:PRINT "<-":C= C- 1:IF C< S THEN C= E 4420 GOSUB 4500:REM DETERMINE CURRENT FILE VERSION, C$ 4425 POKE 33229,0:REM SET DISPLAY POINTER TO TOP OF SCREEN 4430 PLOT 27,4:PRINT "LOAD ";NA$;".DSP;";C$:PLOT 27,27 4440 PLOT 8 4450 RETURN 4460 4500 REM SUBROUTINE: EVALUATE C$ 4510 IF C< 10 THEN C$= CHR$ (48+ C) 4520 IF C= 10 THEN C$= "A" 4530 IF C= 11 THEN C$= "B" 4540 IF C= 12 THEN C$= "C" 4550 IF C= 13 THEN C$= "D" 4560 IF C= 14 THEN C$= "E" 4570 IF C= 15 THEN C$= "F" 4580 RETURN 4590 4600 REM SUBROUTINE: -> (NEXT FILE) 4610 PLOT 13:PRINT "->":C= C+ 1:IF C> E THEN C= S 4620 GOSUB 4500:REM DETERMINE CURRENT FILE VERSION, C$ 4625 POKE 33229,0:REM SET DISPLAY POINTER TO TOP OF SCREEN 4630 PLOT 27,4:PRINT "LOAD ";NA$;".DSP;";C$:PLOT 27,27 4640 PLOT 8 4650 RETURN 4660 4700 REM SUBROUTINE: RETURN (LOAD FIRST FILE) 4705 PLOT 13:PRINT "STARTING DISPLAY" 4710 PLOT 27,4:PRINT "LOAD ";NA$;".DSP;";S$:PLOT 27,27 4720 PLOT 8:C= S:C$= S$ 4730 RETURN 4740 4800 REM SUBROUTINE: CYCLE 4802 IF PT> 0 THEN GOTO 4810 4805 PLOT 11:INPUT "INPUT PAUSE TIME IN SECONDS BETWEEN .DSP FILE FETCHES: ";PT:PT= PT+ .04 4810 POKE 33278,0:REM CLEAR KEYBOARD CHARACTER BYTE 4820 C= C+ 1:IF C> E THEN C= S 4830 GOSUB 4500:REM DETERMINE CURRENT FILE VERSION, C$ 4835 POKE 33229,0:REM SET DISPLAY POINTER TO TOP OF SCREEN 4840 PLOT 27,4:PRINT "LOAD ";NA$;".DSP;";C$:PLOT 27,27,8 4850 FOR I= 1 TO 22* PT 4860 K= SIN (I) 4870 IF NOT (PEEK (33278)= 0) THEN I= 22* PT 4880 NEXT I 4890 IF PEEK (33278)= 0 GOTO 4820 4900 M$= CHR$ (PEEK (33278)):REM READ IT 4910 PT= 0 4920 RETURN 4930 5100 REM SUBROUTINE: DIRECTORY 5110 PLOT 18,15,12,27,11 5120 PLOT 27,4:PRINT "DIR":PLOT 27,27 5130 RETURN 5140 5200 REM SUBROUTINE: FILE NUMBER 5210 PLOT 13:PRINT " FILE NUMBER: ";C$;" " 5220 PRINT " ":PLOT 13,28,28 5230 RETURN 5240 5400 REM SUBROUTINE: LOCATE FILE # 5420 PLOT 13:PRINT "LOCATE FILE # (0-F): "; 5430 GOSUB 2400:REM AUTO INPUT 5440 PRINT "" 5450 IF ASC (M$)< 48 OR (57< ASC (M$) AND ASC (M$)< 65) OR 70< ASC (M$) THEN PLOT 28,11:GOTO 5420 5460 C$= M$:C= ASC (C$)- 48+ 7* (ASC (C$)> 57) 5470 PLOT 8:PLOT 27,4:PRINT "LOAD ";NA$;".DSP;";C$:PLOT 27,27 5480 PLOT 8 5490 RETURN 5500 6000 REM SUBROUTINE: MENU 6002 IF MENU THEN PRINT " ":GOTO 6080 6004 PLOT 12,3,0,11:PRINT "IF YOU WANT THE MENU TO AUTOMATICALLY ENTER THE CYCLE MODE ON" 6006 PRINT "AUTO, THEN ENTER THE NUMBER OF SECONDS BETWEEN FETCHES." 6007 PRINT :PRINT "OTHERWISE PRESS RETURN AND IT WILL DEFAULT TO THE INSTRUCTION" 6008 PRINT "MODE WHEN AUTO IS PRESSED WITH YOUR DISK." 6009 PLOT 3,32,23:INPUT PT:PRINT "" 6010 ZL= LEN (NA$):ZU= PT:REM PRESERVE KNOWN POSITION FOR ZL,ZU 6015 ON LEN (NA$) GOTO 6045,6040,6035,6030,6025,6020 6020 A6= ASC (MID$ (NA$,6,1)) 6025 A5= ASC (MID$ (NA$,5,1)) 6030 A4= ASC (MID$ (NA$,4,1)) 6035 A3= ASC (MID$ (NA$,3,1)) 6040 A2= ASC (MID$ (NA$,2,1)) 6045 A1= ASC (MID$ (NA$,1,1)) 6050 SS= ASC (S$):ES= ASC (E$) 6060 GOSUB 10100:REM RAISE THE END OF CODE POINTEER 6070 SAVE "MENU" 6080 M= 73 6090 RETURN 6100 8000 REM SUBROUTINE: DISPLAY TIME 8005 PLOT 26,32,26 8010 T1= (EXP (PEEK (28798)/ 22.4)- 1)/ 60:REM SCALING TIME IN MINUTES 8020 T2= (EXP (PEEK (28926)/ 22.4)- 1)/ 60:REM PLOTTING TIME IN MINUTES 8030 PLOT 8:DP= 2:REM 2 DECIMAL PLACES 8040 PRINT " SCALING TIME=";FN RO(T1);" MINUTES" 8050 PRINT " PLOTTING TIME=";FN RO(T2);" MINUTES":PLOT 8 8060 RETURN 8070 8400 REM SUBROUTINE: DISPLAY ZMIN/ZMAX 8410 PLOT 26,32,26:SZ= 256* PEEK (32983)+ PEEK (32982) 8420 FOR J= 2 TO 5:POKE SZ+ J,PEEK (28798+ J* 128):NEXT :REM ZL 8430 FOR J= 8 TO 11:POKE SZ+ J,PEEK (28798+ (J- 2)* 128):NEXT :REM ZU 8435 PLOT 8:DP= 3:REM 3 DECIMAL PLACES 8440 PRINT " ZMAX=";FN RO(ZU);" " 8450 PRINT " ZMIN=";FN RO(ZL);" ":PLOT 8 8460 RETURN 8470 10000 REM SUBROUTINE: PREP AND MENU DECODE 10010 GOSUB 10200:REM LOWER THE END OF CODE POINTER 10020 IF ZL= 0 THEN MENU= 0:GOTO 10070:REM I'M NOT A MENU 10022 ON ZL GOTO 10034,10032,10030,10028,10026,10024 10024 NA$= CHR$ (A6) 10026 NA$= CHR$ (A5)+ NA$ 10028 NA$= CHR$ (A4)+ NA$ 10030 NA$= CHR$ (A3)+ NA$ 10032 NA$= CHR$ (A2)+ NA$ 10034 NA$= CHR$ (A1)+ NA$ 10040 S$= CHR$ (SS):E$= CHR$ (ES):MENU= - 1 10050 S= ASC (S$)- 48+ 7* (ASC (S$)> 57) 10060 E= ASC (E$)- 48+ 7* (ASC (E$)> 57):C$= E$:C= E 10070 PT= ZU 10080 RETURN 10090 10100 REM SUBROUTINE: RAISE END OF CODE POINTER 10110 IF PEEK (32982)< 196THEN POKE 32982,PEEK (32982)+ 60:GOTO 10130 10120 POKE 32982,PEEK (32982)- 196:POKE 32983,PEEK (32983)+ 1:REM END SOURCE 10130 POKE 32984,PEEK (32982):POKE 32985,PEEK (32983):REM END VAR 10140 POKE 32986,PEEK (32982):POKE 32987,PEEK (32983):REM END ARR 10150 RETURN 10160 10200 REM SUBROUTINE: LOWER END OF CODE POINTER 10210 IF PEEK (32982)> 60THEN POKE 32982,PEEK (32982)- 60:GOTO 10230 10220 POKE 32982,PEEK (32982)+ 196:POKE 32983,PEEK (32983)- 1:REM END SOURCE 10230 RETURN 10240