File KSETUP.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

 100 REM. SET-UP FOR "KSORT": CREATES FILE FOR "KBASET.SV"
 110 DIM N$=18, X$=3, Y$=3
 120 !
 130 PRINT: PRINT "OUTPUT DEV:FILNAM.EX";
 140 INPUT N$
 150 OPEN N$ FOR OUTPUT AS FILE 1
 160 L=0: R$=CHR$(13)	! LENGTH OF RECS.; CARRIAGE RETURN
 170 PRINT
 180 PRINT "FIXED-LENGTH RECORDS (TYPE Y) OR VARIABLE (N) ";
 190 INPUT X$: IF X$<>"Y" THEN IF X$<>"N" THEN 170
 200 PRINT #1,X$;
 210 IF X$="N" THEN 340		! VARIABLE, TREATED SEPARATELY
 220 !		FIXED:
 230 PRINT "THE FIXED LENGTH OF YOUR RECORDS IS ALWAYS ";: INPUT X
 240 L=X		! SAVE LENGTH
 250 GOSUB 820
 260 PRINT #1,X$;R$;	! C.R. TO END NUMBER
 270 IF INT(384/X)=384/X THEN 430
 280 IF X>=384 THEN 430
 290 PRINT "ARE YOUR RECORDS PADDED AT BLOCK ENDS (Y),"
 300 PRINT "OR DO THEY RUN CONTINUOUSLY ACROSS BLOCK BOUNDARIES (N) ";
 310 INPUT X$: IF X$<>"Y" THEN IF X$<>"N" THEN 290
 320 GOTO 430		! ..AND GET KEYS
 330 !--------
 340 PRINT "VARIABLE RECORDS MUST ALWAYS END WITH A DEFINITE CHARACTER."
 350 PRINT "TYPE EITHER (A) THE CHARACTER OR (B) ITS 2-DIGIT DECIMAL"
 360 PRINT "VALUE:  ";: INPUT X$
 370 IF LEN(X$)>2 THEN 350
 380 IF LEN(X$)<2 THEN 430
 390 Y$=MID(X$,1,1): D=ASCII(Y$)-48
 400 Y$=MID(X$,2,1): D=10*D+ASCII(Y$)-48
 410 X$=CHR$(D)
 420 !--------
 430 PRINT #1,X$;
 440 PRINT: PRINT "DESCRIBE UP TO 8 PHYSICAL KEYS--YOU CAN STOP EARLIER"
 450 PRINT "BY TYPING A 'STARTS AT' VALUE OF  0 ."
 460 X0=0
 470 PRINT
 480 FOR K=1 TO 8
 490 PRINT "KEY #";K
 500 PRINT "STARTS WITH CHARACTER NO. ";: INPUT X: GOSUB 820
 510 IF X=0 THEN 550
 520 IF X<=X0 THEN PRINT,"PHYSICAL ORDER??": GOTO 500
 530 IF L>0 THEN IF X>L THEN PRINT,"BEYOND LIMITS!": GOTO 500
 540 X0=X		! SAVE X
 550 PRINT #1,X$;R$;
 560 IF X=0 THEN 660
 570 PRINT "ENDS WITH CHAR. NO. ";: INPUT X: GOSUB 820
 580 IF X<X0 THEN PRINT,"PHYSICAL ORDER??": GOTO 570
 590 IF L>0 THEN IF X>L THEN PRINT,"BEYOND LIMITS!": GOTO 570
 600 X0=X
 610 PRINT #1,X$;R$;
 620 PRINT "ORDER:  A, D, OR Q ";: INPUT X$
 630 IF X$<>"A" THEN IF X$<>"D" THEN IF X$<>"Q" THEN 620
 640 PRINT #1,X$;
 650 NEXT K
 660 PRINT
 670 PRINT "NOW LIST LOGICAL [ = SORTING ] ORDER OF KEYS BY TYPING"
 680 PRINT "IN THEIR PHYSICAL NUMBERS BELOW, E.G., 3,1,2.  A ZERO"
 690 PRINT "CAUSES IMMEDIATE END-OF-LIST."
 700 PRINT
 710 FOR J=1 TO K-1
 720 PRINT "PRIORITY";J;"IS KEY # ";
 730 INPUT X: IF X>K-1 THEN PRINT "-- DOESN'T EXIST --": GOTO 730
 740 IF X=0 THEN PRINT #1,"0";: GOTO 770
 750 GOSUB 820: PRINT #1,X$;R$;
 760 NEXT J
 770 PRINT #1,CHR$(26);		! END THE FILE
 780 PRINT:  CLOSE
 790 PRINT "^C AND .R KBASET  --  WE'RE DONE."
 800 STOP
 810 REM.  SUBR. TO CONVERT NUMBER TO STRING:
 820 D=100: A=0: X$="": X1=X	! SAVE "X"
 830 FOR I=1 TO 2
 840 Q=INT(X1/D): X1=X1-D*Q: IF Q>0 THEN A=48	! NUMERAL CODE
 850 D=D/10
 860 IF A>0 THEN X$=X$+CHR$(A+Q)
 870 NEXT I
 880 X$=X$+CHR$(48+X1)		! LAST DIGIT ALWAYS RECORDED
 890 RETURN
 900 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search