9 A=TTYSET(255,255) 10 COMMON L%(186),C%(2559) 11 PRINT '************* SYS(6) DEMO PROGRAM *************' 12 OPEN 'SBDEMO.TXT' FOR INPUT AS FILE #2 13 IF END #2 THEN 14 \ LINPUT #2,T$ \ PRINT T$ \ GO TO 13 14 CLOSE #2 \ PRINT 'enter to continue'; \ LINPUT T$ 20 rem =========================== load de subloa routine 20 OPEN 'SUBLOA.LRL' FOR INPUT AS FILE #1 \ DIM #1,S%(255) 22 FOR I%=1% TO 186% \ L%(I%)=S%(I%) \ NEXT I% \ CLOSE #1 \ GO TO 50 25 rem other load alternative 25 OPEN 'SUBLOA.DAT' FOR INPUT AS FILE 2# 26 IF END #2 THEN 28 \ I%=I%+1% \ INPUT #2,L%(I%) \ GO TO 26 28 CLOSE #2 \ IF I%<>186 THEN PRINT 'subloa.dat error' \ STOP 50 L%(0)=10 \ REM C%()/256 = common length in blocs (min. SUBRLn.BRL length) 60 L%(1)=1 \ REM preserve data in the first 512 bytes of C%() 70 rem L%(2)->L%(5)=radixDK:SUBRL0.BRL 70 L4%=L%(4) \ REM L4%=29310% = 'RL0' part of the 'DK:SUBRL0.BRL' radixname 80 PRINT 'Subloa.lrl is loaded in L%() common ..' 81 PRINT 'SYS(6) call Subloa -> call usersubroutine SUBRL#.BRL (with #= number 0->9)' 82 PRINT ' in this program L% = #' 83 PRINT 'Subloa stops for 3 errors (return internal message + basic )' 84 PRINT ' 1) ?open file err = SUBRL#.BRL not found' 85 PRINT ' 2) ?no rel format = subroutine not linked with /FOREGROUND' 86 PRINT ' 3) ?common to small = common size to small ' 87 PRINT ' SUBRL# size > L%(0) COMMON size (in Blocs)' 88 PRINT ' ----- ---------------------------------------- ----' 100 C%(0)=132 110 PRINT CHR$(10);'execute in direct mode !' 120 PRINT CHR$(10);'C%(0)=';C%(0);' = NUMBER OF DATA IN C%()' 200 PRINT 210 PRINT ' GOSUB 4000 = CREATE RANDOM DATA IN C%() BASIC MODE' 220 PRINT ' GOSUB 14000 = ... WITH FORTRAN ROUTINE' 230 PRINT 240 PRINT ' GOSUB 5000 = PLOT GRAPH C%() IN BASIC MODE ' 250 PRINT ' GOSUB 15000 = ... WITH FORTRAN ROUTINE' 280 stop 4000 REM ======= load C%() dim 4010 IF C%(0)<1% THEN C%(0)=255 4020 X%=20000*RND \ X=3.14*3.14/C%(0) \ PRINT 'GENERATE RND VALUES IN C%()' 4030 FOR I=1 TO C%(0) \ C%(I)=X%*SIN(I*X)*COS(I*(X-6)) \ NEXT I 4090 RETURN 4100 PRINT 'LIST OF C%() VALUES' 4110 FOR I=0 TO C%(0) \ PRINT I;C%(I),' '; \ NEXT I 4190 RETURN 5000 REM vt100 graphic display C%() on H0% lines high V0%charct wide 5000 REM variables H0% ,dimC%() 5000 REM E$,V1$,V2$ vt control 5000 REM I% I1% fornext step 5000 REM G1,G2,G0 min,max,scal 5000 REM G,G%,G0%,G1%,G2% grfplot 5000 REM 5010 E$=CHR$(27) \ V1$=CHR$(10) \ V2$=E$+'M' 5020 H0%=10% \ REM number of lines used gor graph 5030 V0%=80% \ REM terminal with 5040 G0%=1% \ REM start line 1 5100 REM ---find G1min G2max G0scal I1%step 5110 G1=32767 \ G2=-32767 \ FOR I%=1% TO C%(0) 5120 IF C%(I%)G2 THEN G2=C%(I%) 5140 NEXT I% 5150 G0=1 \ IF G2<>G1 THEN G0=(G2-G1)/(H0%*5%) 5160 I1%=1 \ IF V0% MAX:';G2;CHR$(13); 5240 IF G1<0% THEN G=0% \ FOR I%=1% TO C%(0) STEP I1% \ GOSUB 5600 \ NEXT I% 5250 PRINT CHR$(13); 5300 REM --- PLOT points 5310 FOR I%=1% TO C%(0) STEP I1% \ G=C%(I%) \ GOSUB 5600 \ NEXT I% 5320 PRINT CHR$(13); \ G=G1 \ GOSUB 5600 \ PRINT V1$;' > MIN:';G1 5400 PRINT E$;'(B' \ RETURN 5600 REM ------------- sub grf G 5610 G1%=(G-G1)/G0 \ G2%=H0%-G1%/5% 5620 FOR G%=G0% TO G2%-1% \ PRINT V1$; \ G0%=G0%+1% \ NEXT G% 5630 FOR G%=G2% TO G0%-1% \ PRINT V2$; \ G0%=G0%-1% \ NEXT G% 5640 PRINT CHR$(ASC('s')-G1%+5%*INT(G1%/5%)); 5650 RETURN 14000 REM ======== load SUBRL1.BRL = rnd->C%() 14010 L%=1% \ GOSUB 30000 \ RETURN 15000 REM ======== load SUBRL2.BRL = plot->C%() 15010 L%=2% \ GOSUB 30000 \ RETURN 30000 REM **** execut SUBRLn.BRL routine ( n = L% ) 30001 REM load it if needed 30010 IF L%(4)<>L4%+L% THEN L%(4)=L4%+L% \ L%(184)=160 \ rem set SYS6 NOP 30020 L6%=SYS(6) \ RETURN 32000 END