Compucolor.org – Virtual Media

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