6010 PRINT"Correct by entering the two indices and then the new value, as requested. Exit":PRINT" by hitting <Return> or entering zero for either index.":PRINT
6020 PRINT:INPUT"Enter index #1: ",I
6030 IF I = 0 THEN 6300
6040 IF I < 0 OR I > NS THEN PRINT"Illegal entry--try again":GOTO 6020
6050 INPUT"Enter index #2: ",J
6060 IF J = 0 THEN 6300
6070 IF J < 0 OR J > NS OR J = I THEN PRINT "Illegal entry--try again": GOTO 6050
6080 PRINT"Current value: "; PM(I,J)
6090 INPUT"Enter correction (Hit <Return> to keep old value): ", SH$
7200 CLS:PRINT:PRINT"Manual generation of basis functions.": PRINT
7210 GOSUB 55000
7220 PRINT:PRINT"Ready.": PRINT: PRINT"It is recommended that you have these at hand on a pre-prepared list so that":PRINT"you won't make any monumental errors!":PRINT
7230 PRINT "Functions will be called for one at a time. You will be given an opportunity":PRINT" to correct errors after each function. If, for some reason, you find errors":PRINT"later, correct with the 'CB' command.":PRINT
7250 PRINT:PRINT"Also note that you will be generating these starting with highest Fz and":PRINT"going to the lowest in descending order.":PRINT: GOSUB 63999
7270 NM = 0
7280 PRINT:PRINT"Note that the following two functions are never entered, since they are the":PRINT"same for all possible spin systems.":PRINT:PRINT
8010 PRINT "AE--Auto-entry of parameters. Keeps track of things for you."
8015 PRINT "AR--Auto-reading of data and calculation files (otherwise done manually)."
8020 PRINT "BA--Set up and store spin basis functions."
8030 PRINT "CB--Correct or alter a spin basis function."
8040 PRINT "CJ--Correct or alter a coupling constant."
8050 PRINT "CS--Correct a chemical shift entry."
8052 PRINT "EN--Exit to energy level plotting routine."
8055 PRINT "FL--Alter pause flag (useful for printing under Ctrl/PrtSc option."
8056 PRINT "FF--Send form-feed to printer."
8060 PRINT "FR--Enter main spectrometer frequency (in MHz)."
8070 PRINT "HA--Generate and store Hamiltonian."
8080 PRINT "HD--Display Hamiltonian."
8085 PRINT "IP--Initialize printer (program configured for Epson FX80)."
8090 PRINT "JJ--Enter and store coupling constants (Hz)."
8095 GOSUB 8300: CLS: PRINT
8100 PRINT "ME--Display this menu."
8110 PRINT "NS--Enter number of spins (nuclei)."
8120 PRINT "OL--Use old calculations directly from disk."
8130 PRINT "PL--Exit to plotting routines."
8140 PRINT "QT--Exit and quit program."
8150 PRINT "SH--Enter and store shifts (ppm)."
8160 PRINT "XB--Display basis functions."
8170 PRINT "XC--Exit to calculation routines."
8180 PRINT "XD--Display current parameters."
8190 PRINT "XR--Read old set of parameters from disk."
8200 PRINT "XS--Save current parameters on disk"
8300 PRINT:INPUT"Hit <Return> to continue.",A$: RETURN
9000 CLS:PRINT:PRINT"Auto-entry of parameters; called in a relatively easy to handle order.":PRINT: GOSUB 63999
9005 GOSUB 20000
9010 GOSUB 1000
9020 GOSUB 2000
9030 GOSUB 3000
9040 GOSUB 4000
9050 GOSUB 7000
9060 GOSUB 14000
9070 GOSUB 10000
9080 GOTO 11000
9085 PRINT" To calculate the spectrum: 'XC'"
10000 CLS:PRINT:PRINT"Now ready to calculate and store the NMR spin Hamiltonian.":PRINT:PRINT"This will be stored in several sectors to insure compatibility with the":PRINT" following routines and to save space."
10010 PRINT:PRINT"Have the parameters and basis functions been stored or recalled? ";:GOSUB 600
10020 IF P$ <> "Y" THEN GOSUB 14000
10025 NM = 0
10026 CLS: PRINT:PRINT"Now generating Hamiltonian and writing elements of each subblock on to disk.":PRINT
12055 IF IPRINT=1 THEN LPRINT:LPRINT:LPRINT"The chemical shifts:":LPRINT:LPRINT" #";TAB(6);" ppm "; TAB(20);" Hz ":LPRINT"--"; TAB(6);"-------";TAB(20);"------"
18144 IF IPRINT=1 THEN LPRINT:LPRINT:LPRINT"Sub-block number";M;
18146 IF IPRINT=1 AND KK>1 THEN LPRINT"(continued)" ELSE IF IPRINT=1 THEN LPRINT
18148 IF IPRINT=1 THEN LPRINT:LPRINT"Func";TAB(10);
18150 IX = KK + 6: IF IX > N THEN IX=N
18152 FOR I = KK TO IX: NN = LL + I - 1
18154 PRINT USING " ### ";NN;
18156 IF IPRINT=1 THEN LPRINT USING " ### ";NN;
18158 NEXT
18160 PRINT:PRINT"----";TAB(10);
18162 IF IPRINT=1 THEN LPRINT:LPRINT"----";TAB(10);
18164 FOR I = KK TO IX: PRINT "-------- ";
18166 IF IPRINT=1 THEN LPRINT "-------- ";
18168 NEXT
18170 PRINT: IF IPRINT=1 THEN LPRINT
18172 FOR I = 1 TO N: II = LL + I - 1
18174 PRINT USING " ###";II;: IF IPRINT=1 THEN LPRINT USING " ###";II;
18176 PRINT TAB(8);: IF IPRINT=1 THEN LPRINT TAB(8);
18180 FOR J = KK TO IX
18182 A = HA(I,J)
18184 PRINT USING "######.###";A;:IF IPRINT=1 THEN LPRINT USING "######.###";A;
18186 NEXT
18188 PRINT: IF IPRINT=1 THEN LPRINT
18190 NEXT
18192 GOSUB 63999
18194 NEXT
18196 GOTO 18050
19000 CLS: PRINT:PRINT"Routine to alter 'PAUSE FLAG.' When flag ON, pause is suppressed. When flag":PRINT" is OFF, the pause is active. This latter state is the default.": PRINT
19010 PRINT"Flag is currently ";: IF IPFLAG = 0 THEN PRINT "OFF." ELSE PRINT "ON."
19020 PRINT"Do you wish to change the state of the flag? ";: GOSUB 600
19030 IF P$ = "N" THEN 63999 ELSE IF P$ <> "Y" THEN 19020
19040 IF IPFLAG = 0 THEN IPFLAG = 1 ELSE IPFLAG = 0
19050 GOTO 63999
20000 CLS: PRINT: PRINT"Do you wish to have data and calculation files loaded automatically? ";: GOSUB 600: PRINT
20010 IF P$ = "Y" THEN IREAD = 1: PRINT"Automatic file reading performed.": GOTO 63999
20020 IF P$ = "N" THEN IREAD = 0: PRINT"Manual file reading will be needed.": GOTO 63999