image of READY prompt

Wang2200.org

Listing of file='SORT302B' on disk='vmedia/701-2047D.wvd.zip'

# Sector 309, program filename = 'SORT302B'
0010 REM SORT302B,00-00(02/18/76),12003A - COPYRIGHT WANG LABS. INC., 1976
0300 COM A,B,R4,C,E,P5,Y
   : COM X,L,I,H
   : DIM P7$(36)2,P8$(36)3
   : DIM S7$(36)2,S8$(36)3,S4$(255)2
   : DIM N1$2,N0$2,P1$3,Y2$3
   : DIM S3$2,P$3,X1$2
0500 IF D$<>"D"THEN 532
0502 PRINT HEX(03)
   : X1$=" "
   : PRINT "REMOVE INPUT VOLUME AND MOUNT OUTPUT VOLUME"
   : PRINT "ENTER 'GO' TO RESUME"
   : INPUT X1$
   : IF X1$<>"GO"THEN 502
0515 IF C$="N"THEN 528
   : IF C$="X"THEN 525
   : LIMITS T#3,O$,X,Y,Z
   : IF P7<=Y-X+1THEN 532
   : STOP "OUTPUT SPACE TOO SMALL"
0525 STOP "NO OUTPUT FILE"
0528 DATA SAVE DC OPEN T$#3,P7,O$
   : DATA SAVE DC CLOSE#3
0532 PRINT HEX(030A0A0A0A)
   : PRINT "PASS 2 - MERGE"
   : LOAD DA T#2,(S2$,S2$)500,599
0570 DIM S6$(02)2,S5$(03)1
   : DIM S0$(005)20,S$(02,005)20,S1$(005)20
   : DIM S3$(02)2,P3$(02)3,S9$(04)2
0600 GOTO 5000
0700 IF G>255THEN 1250
   : IF S4$(G)=HEX(0000)THEN 1250
   : P=VAL(S4$(G))
   : Q=VAL(STR(S4$(G),2))
0820 IF S$<S0$THEN 2680
   : S0$=S$
   : GOSUB 900
   : O1=O1+1
   : ADDC(S8$,Y2$)
   : IF S8$=HEX(000000)THEN 2700
   : G=G+1
   : GOTO 700
0900 O=O+1
   : IF O<=R0THEN 970
0960 O=1
0970 RETURN
1000 MAT MERGES$()TO S5$(),S6$(),S4$()
   : IF S4$(1)=HEX(0000)THEN 5400
   : H=0
   : IF S5$(P6+1)=HEX(00)THEN 1050
   : GOSUB '40(VAL(S5$(P6+1)))
1050 G=1
   : IF L=1THEN 700
1068 R=P2
1110 O=O+R
   : IF O<=P2THEN 1200
   : M2$=S9$(1)
   : S3$=S9$(2)
   : MAT COPY S9$()<3,P3>TO S9$()
   : I=I-1
1180 O=1
1200 G=G+R
   : IF G>255THEN 1250
   : IF S4$(G)=HEX(0000)THEN 1250
   : GOTO 1068
1250 GOSUB 1300
   : GOTO 1000
1300 IF H=0THEN 1330
1330 RETURN
2000 DEFFN'40(X)
   : P$=P3$(X)
   : S3$=S3$(X)
   : IF P$=HEX(000000)THEN 2140
   : IF L=1THEN 2060
   : S9$(I)=S3$
   : I=I+1
2060 X=0
2070 H=1
   : S5$(X)=HEX(01)
   : S3$(X)=S3$
   : ADDC(P$,P3$)
   : IF P$<P3$(X)THEN 2130
   : INIT(00)P$
2130 P3$(X)=P$
2140 RETURN
2680 STOP "SEQUENCE ERROR"
2700 IF O=1THEN 2770
2740 GOSUB 900
   : GOTO 2700
2770 DATA SAVE DC $#3,END
   : DATA SAVE DC CLOSE#3
   : PRINT "INPUT RECORDS ",R2
   : PRINT "OUTPUT RECORDS",O1
   : COM CLEAR M$
   : IF M$=" "THEN 2820
   : LOAD DC T#6,M$
2820 STOP "END OF SORT"
5000 L=0
   : O1=0
   : R4=9E9
   : INIT(00)S0$
   : IF S9>P6THEN 5020
   : GOSUB 6400
   : C=S9
   : GOTO 5080
5020 C=P6
   : X=INT((S9-1)/(P6-1))
   : X=S9-1-(P6-1)*X
   : IF X=0THEN 5080
   : C=X+1
5080 I=1
   : INIT(FF)S5$()
   : INIT(00)P1$
   : FOR Y=1TO C
5130 R4=R4+1
   : IF R4>S9THEN 6000
5150 B=B+1
   : IF B>ATHEN 5700
   : S3$(Y)=S7$(B)
   : P3$(Y)=S8$(B)
   : ADDC(P1$,S8$(B))
   : IF S8$(B)=HEX(000000)THEN 5230
   : H=0
   : GOSUB '40(Y)
   : GOSUB 1300
5230 NEXT Y
   : S8$=P1$
   : S7$=S9$(1)
   : O=1
   : GOTO 1000
5400 E=E+1
   : S4=S4+1
   : IF S4<=36THEN 5460
   : GOSUB 5900
   : S4=1
5460 IF L=1THEN 2700
   : IF S9+E-R4>P6THEN 5470
   : GOSUB 6400
5470 P8$(S4)=S8$
   : P7$(S4)=S7$
   : C=P6
   : GOTO 5080
5700 GOSUB 5800
   : P5=P5-36
   : A=36
   : IF P5>=0THEN 5150
   : A=P5+36
   : GOTO 5150
5800 DATA LOAD DA T#2,(N0$,N0$)S7$(),S8$()
   : B=0
   : RETURN
5900 DATA SAVE DA T$#2,(N1$,N1$)P7$(),P8$()
   : S4=0
   : RETURN
6000 IF R4>9E9THEN 6300
   : IF E>36THEN 6070
   : MAT COPY P7$()TO S7$()
   : MAT COPY P8$()TO S8$()
   : GOTO 6110
6070 GOSUB 5900
   : N0$,N1$=M0$
   : GOSUB 5800
6110 S9=E
6120 E=0
   : P5=S9-36
   : S4=0
   : B=0
   : R4=0
   : A=36
   : IF P5>=0THEN 5130
   : A=P5+36
   : GOTO 5130
6300 N0$,N1$=M0$
   : GOSUB 5800
   : S8$(1)=S8$
   : S7$(1)=S7$
   : GOTO 6120
6400 L=1
   : INIT(FF)Y2$
   : SCRATCH T#3,O$
   : DATA SAVE DC OPEN T$#3,O$,O$
   : RETURN