1 ! RTSBLD 10 DIM #1,V%(32767) 20 DIM B%(512),F%(512) 30 N$="S1401" !RUN-TIME SYSTEM NAME 40 I$="DT0:S1401.LDA" !CHANGE TO "S1401O.LDA" FOR ODT VERSION 50 OPEN I$ FOR INPUT AS FILE 2% 60 B9%=0% : B8%=1% 100 GOSUB 20000 110 IF F%(0%)<>30% OR F%(1%)<>1% OR F%(2%)<>12% OR F%(27%)<>2% OR F%(28%)<>0% OR F%(29%)<>0% OR F%(30%)<>0% THEN STOP 120 L%=F%(3%)+SWAP%(F%(4%)) 130 S%=F%(5%)+SWAP%(F%(6%)) 140 IF L%+S%<>-2% THEN STOP 150 S0%=(S%+2047%) AND (-2047%-1%) 160 S2%=4% : IF S0%>=0% THEN S1%=S0%/512% ELSE S1%=(S0%+32767%+1%)/512%+64% 170 IF S1%>S2% THEN S2%=S2%+S2% : GOTO 170 180 IF S2%>256% OR S2%<0% THEN STOP 190 OPEN "SY0:[0,1]"+N$+".TMP" FOR OUTPUT AS FILE 1%, CLUSTER SIZE S2% 200 PUT #1%, RECORD S1% : Z$=CHR$(0%) : Z$=Z$+Z$ UNTIL LEN(Z$)>=512% : FIELD #1%, 512% AS O$ : LSET O$=Z$ 210 PUT #1%, RECORD I% FOR I%=1% TO S1% : CLOSE 1% : OPEN "[0,1]"+N$+".TMP" FOR INPUT AS FILE 1% 1000 GOSUB 20000 : IF F%(0%)=0% THEN 2000 1010 FOR I%=1% TO F%(0%) 1020 T%=A%+S0% : IF (S0%>=0% AND (T%<0% OR T%>=S0%)) OR (S0%<0% AND T%<0% AND T%>=S0%) THEN STOP 1030 IF T% AND 1% THEN V%(FNS%(T%))=(V%(FNS%(T%)) AND 255%)+SWAP%(F%(I%)) ELSE V%(FNS%(T%))=(V%(FNS%(T%)) AND -256%)+F%(I%) 1040 A%=A%+1% : NEXT I% 1050 GOTO 1000 2000 CLOSE 2% : V%(0%)=V%(FNS%(-4%+S0%)) : V%(1%)=V%(FNS%(-32%+S0%)) : V%(2%)=V%(FNS%(-34%+S0%)) 2010 CLOSE 1% : NAME "[0,1]"+N$+".TMP" AS "[0,1]"+N$+".RTS" 2030 CHAIN "DT0:POVBLD.BAS" !******CHAIN****** 3000 DEF FNS%(Q%) 3010 IF Q%>=0% THEN Q%=Q%/2% ELSE Q%=(Q%+32767%+1%)/2%+16384% 3020 FNS%=Q% : FNEND 10000 IF B8%>B9% THEN GET #2% : B9%=RECOUNT : FIELD #2%, B9% AS I$ : CHANGE I$ TO B% : B8%=1% : GOTO 10000 10010 C%=B%(B8%) : B8%=B8%+1% : C9%=C9%+C% : RETURN 20000 C9%=0% : GOSUB 10000 : IF C%=0% THEN 20000 20010 IF C%<>1% THEN STOP ELSE GOSUB 10000 : IF C%<>0% THEN STOP ELSE GOSUB 10000 20020 C8%=C% : GOSUB 10000 : C8%=C8%+SWAP%(C%) : GOSUB 10000 20030 A%=C% : GOSUB 10000 : A%=A%+SWAP%(C%) : GOSUB 10000 20040 C8%=C8%-6% : IF C8%<0% THEN STOP 20050 F%(0%)=C8% : FOR C7%=1% TO C8% : F%(C7%)=C% : GOSUB 10000 : NEXT C7% 20060 IF (C9% AND 255%) THEN STOP ELSE RETURN 32767 END