Compucolor.org – Virtual Media

Listing of file='9P2.BAS;01' on disk='vmedia/color_graphics_2_suits-sector.ccvf'

5 REM  PROGRAM 9.2
6 REM  DISPLAY CREATE/EDIT/DUP
7
10 REM  NOTE: INPUT ERROR CHECKING IS
11 REM        NOT FULLY IDIOT PROOF
12
13 REM  MAJOR VARIABLES
14
15 REM  KB......LOCATION OF KEYBOARD CHARACTER.
16
17 REM  KF......LOCATION OF KEYBOARD CHARACTER FLAG.
18
19 REM  SC......2 LESS THAN START OF SCREEN REFRESH.
20
21 REM  STP.....ASCII VALUE OF WHATEVER CHARACTER YOU WISH
22 REM          TO USE TO STOP THE DRAW (EDIT) ROUTINE AND
23 REM          BEGIN TO SAVE THE DISPLAY ROUTINE.  I'VE
24 REM          CHOSEN THE "!".
25
26 REM  OD$.....NAME OF OLD DISPLAY.
27
28 REM  OV$.....VERSION OF OLD DISPLAY.
29
30 REM  ND$.....NAME OF NEW DISPLAY.
31
32 REM  NV$.....VERSION OF NEW DISPLAY.
33
34 REM  CH( )...CHARACTERS PEEKED FROM SCREEN (SEE LINE 940).
35
36 REM  CO( )...CCI CODES PEEKED FROM SCREEN (SEE LINE 940).
37
38
39 REM  POKE IN THE NO-ECHO PATCH
40 GOTO 63000
49
50 DIM CH(49),CO(49)
60 KB= 33278:KF= 33247:SC= 28670
70 STP= ASC ("!")
79
80 PLOT 14:REM  LARGE CHARACTERS
90 PLOT 30,16,29,22,12:REM  SET COLORS;FLAG OFF; CLEAR SCREEN
100 PLOT 27,11:REM  SCROLL MODE
109
110 PRINT :PRINT TAB( 20)"DISPLAY CREATE/EDIT/DUP"
120 PRINT TAB( 20)"DAVID B. SUITS, 12 A.L.":PRINT
129
130 PLOT 15:REM  SMALL CHARACTERS
139
140 PRINT :PRINT TAB( 15)"CREATE A NEW DISPLAY . . . . . .1"
150 PRINT :PRINT TAB( 15)"EDIT AN OLD DISPLAY  . . . . . .2"
160 PRINT :PRINT TAB( 15)"DUP A DISPLAY TO ANOTHER DISK. .3"
170 PRINT
180 PRINT TAB( 35);:INPUT  "YOUR CHOICE? ";CH$
190 CH= VAL (CH$)
200 IF CH< 1OR CH< > INT (CH)OR CH> 3THEN PLOT 28,11:GOTO 180
210 ON CHGOTO 300,400,400
298
299 REM

GET FILE NAME FOR THE DISPLAY

300 T$= "NEW":GOSUB 700:ND$= D$:NV$= V$
308
309 REM  CREATE AND SAVE THE DISPLAY
310 GOTO 800
397
398 REM

EDIT/DUP A DISPLAY

399 REM  GET FILE NAME OF OLD DISPLAY
400 PRINT
410 INPUT "PLEASE MOUNT DISK WITH DISPLAY AND PRESS RETURN ";A$
419
420 PLOT 18:REM  GREEN
430 PLOT 27,4:REM  FCS
440 PRINT "DIR"
450 PLOT 27,27:REM  EXIT FCS
459
460 T$= "OLD":GOSUB 700:OD$= D$:OV$= V$
468
469 REM  GET FILE NAME FOR NEW DISPLAY
470 T$= "NEW":GOSUB 700:ND$= D$:NV$= V$
478
479 REM  DOES USER WISH TO EDIT THE DISPLAY
480 IF CH= 2THEN 800
488
489 REM  NO, SO JUST DUP THE DISPLAY
490 GOTO 870
698
699 REM

GET NAME OF DISPLAY

700 PRINT :PRINT "WHAT IS THE SIMPLE NAME OF THE "T$" DISPLAY?"
710 PRINT "(MAXIMUM 6 CHARACTERS.  DO NOT INCLUDE '.DSP' OR THE"
720 INPUT "VERSION NUMBER): ";D$
730 IF LEN (D$)> 6OR LEFT$ (D$,1)< "A"OR LEFT$ (D$,1)> "Z"THEN 700
740 PRINT
750 INPUT "VERSION NUMBER? ";V$
760 RETURN
798
799 REM

CREATE/EDIT THE DISPLAY

800 PRINT :PRINT :PRINT
810 PRINT TAB( 15)"*****  PSEUDO-CRT MODE  *****"
820 PRINT :PRINT
830 PRINT "USE THE KEYBOARD JUST AS YOU WOULD IN CRT MODE."
840 PRINT "TYPE ";:PLOT STP:PRINT " WHEN YOU'RE FINISHED."
849 REM  SET COLORS; HOME CURSOR
850 PRINT
860 INPUT "PRESS RETURN TO BEGIN ";A$
868
869 REM  ERASE SCREEN AND SET TO PAGE MODE
870 PLOT 12,27,24:IF CH= 1THEN 900
879
880 PLOT 27,4:PRINT "LOA "OD$".DSP;"OV$:PLOT 27,27
890 IF CH= 3THEN 900
898
899 REM

MIMIC THE CRT MODE

900 POKE KF,31:REM  NO-ECHO
910 POKE KB,0
919
920 A= PEEK (KB):IF A= 0THEN 920
929
930 IF A< > STPTHEN PLOT A:GOTO 910
935
936 REM

END OF PSEUDO-CRT MODE

937 REM  GET 1ST 49 CHARACTERS & CCI CODES OF SCREEN FOR
938 REM  REDRAWING THE DISPLAY AFTER THE MESSAGE BELOW
939 REM  IS PRINTED
940 FOR J= 1TO 49:CH(J)= PEEK (SC+ J+ J):CO(J)= PEEK (SC+ J+ J+ 1):NEXT
947
948 REM  SMALL CHARACTERS (& TURN OFF POSSIBLE BLINK)
959
960 PRINT "TYPE E TO EDIT, OR MOUNT DISK & TYPE S TO SAVE ";
970 PLOT 26:INPUT "";A$
978
979 REM  DOES USER WISH TO SAVE THE DISPLAY?
980 IF A$= "S"THEN 1100
988
989 REM  NO, SO JUST GIVE REMINDER INSTRUCTION
990 PLOT 8:PRINT "TYPE ";:PLOT STP
1000 PRINT " WHEN YOU'RE DONE EDITING"SPC( 16)""
1008
1009 REM  NO-ECHO WHILE DELAYING FOR MESSAGE
1010 POKE KF,31:FOR J= 1TO 2000:NEXT
1018
1019 REM  REPLACE MESSAGE WITH DISPLAY & GOTO PSUEDO-CRT MODE
1020 GOSUB 1200:GOTO 910
1098
1099 REM  REPLACE MESSAGE WITH DISPLAY
1100 GOSUB 1200
1108
1109 REM  SAVE THE DISPLAY
1110 PLOT 27,4:PRINT "SAVE "ND$".DSP;"NV$" 7000 1000":PLOT 27,27
1119
1120 PLOT 27,11:REM  SCROLL MODE
1128
1129 REM  PUT TOP OF MEMORY BACK TO WHERE IT WAS
1130 TM= 256* PEEK (32941)+ PEEK (32940)+ 7
1140 HI= INT (TM/ 256):POKE 32941,HI
1150 POKE 32940,TM- 256* HI
1159
1160 END :REM  (OR ELSE LOAD "MENU" & RUN
1197
1198
1199 REM  REPLACE THE 49 CHARACTERS PEEKED FROM SCREEN
1200 FOR J= 1TO 49
1210   POKE SC+ J+ J,CH(J):POKE SC+ J+ J+ 1,CO(J)
1220 NEXT
1229
1230 RETURN
62998
62999 REM

BEN BARLOW'S NO-ECHO PATCH

63000 DATA 245,175,50,255,129,241,201
63010 TM= 256* PEEK (32941)+ PEEK (32940)- 7
63020 RESTORE 63000
63030 FOR X= 1TO 7
63040 READ D:POKE TM+ X,D
63050 NEXT
63060 BR= INT (TM/ 256)
63070 POKE 33221,195:POKE 33222,TM- BR* 256+ 1
63080 POKE 33223,BR:POKE 32941,BR:POKE 32940,TM- BR* 256
63090 CLEAR 50:GOTO 50
63091
63092 REM  FOR NO-ECHO, POKE 33247,31
63093 REM  TO RETURN TO ECHO, POKE 33247,12.
63094 REM  (AN INPUT STATEMENT OR THE END
63095 REM  OF THE PROGRAM WILL ALSO DO IT).