Random software
Random software
Random game
  • Entry name:
     Matrix Procesor 
  • Category:
    Other
  • Publisher/Developer:
    Flop 1
  • Media format:
    Diskette
  • Programming language:
    Turbo Basic XL
  • Entry name:
    Matrix Procesor
  • Category:
    Other
  • Publisher/Developer:
    Flop 1
Matrix Procesor Matrix Procesor Matrix Procesor Matrix Procesor Matrix Procesor
Listing 1
5 POKE 16,​64:​POKE 53774,​64:​POKE 580,​1
10 REM 
20 REM 
30 DIM P(3000),​M(27),​LENGTH(27)
40 DIM A$(20),​B$(19),​C1$(9),​C2$(28),​C3$(31),​C4$(5),​C6$(10)
50 DIM N1$(17),​N2$(12),​N3$(10),​N4$(11),​N5$(16),​N6$(21),​N7$(16)
60 DIM T$(104),​N$(%1),​X$(%1),​Y$(%1),​Z$(%1)
70 REM 
80 C1$="TRNINVTRI":​C2$="ERASEINPUTPRINTIDN DET HOD":​C3$="DUMP SAVE LOAD CLEAREND UNLOCK":​C4$="+-./*"
85 C6$="0123456789"
90 N1$="MATRIX NO DECLARE":​N2$="SYNTAX ERROR":​N3$="TYPE ERROR":​N4$="MEMORY FULL":​N5$="UNKNOWN COMMAND"
100 N6$="MATRIX PROCESOR READY":​N7$="MATRIX NO DEFINE"
110 X5=5:​X4=4:​MAX=3000
120 ------------------------------
125 EXEC HEAD:​POKE 732,​17
130 REM 
135 # R1:​IF PEEK(732)=17 THEN EXEC MENU:​POKE 732,​0
140 EXEC BEEP:​TRAP #ERR:​INPUT " ",​B$
142 IF LEN(B$)<%3 THEN ? N5$:​?:​GO# R1
145 I=%1:​WHILE B$(I,​I)=" " AND I<19:​I=I+%1:​WEND:​L=LEN(B$):​B$=B$(I,​L):​B$(L+%1,​L+%1)=" "
160 IF B$(%2,​%2)<>"=" THEN GO# R2
170 N$=B$(%1,​%1):​EXEC VER
180 IF UINSTR(C6$,​B$(%3,​%3))<>0:​K=VAL(B$(%3,​LEN(B$))):​EXEC PAR:​EXEC NAPLN:​GO# R1:​ENDIF
190 IF LEN(B$)=4 AND UINSTR(C6$,​B$(X4,​X4))=%0:​X$=N$:​N$=B$(%3,​%3):​EXEC VER:​Y$=N$:​EXEC COPY:​GO# R1:​ENDIF
200 J=UINSTR(C4$,​B$(X4,​X4))
210 IF J<5 AND J>0:​X$=N$:​N$=B$(%3,​%3):​EXEC VER:​Y$=N$:​N$=B$(X5,​X5):​EXEC VER:​Z$=N$:​EXEC SOUCET:​FL=1:​ENDIF
220 IF J=5:​X$=N$
230 IF UINSTR(C6$,​B$(X5,​X5))<>0:​N$=B$(%3,​%3):​EXEC VER:​Y$=N$:​K=VAL(B$(X5,​LEN(B$))):​EXEC SKAL:​FL=1:​ELSE
240 N$=B$(%3,​%3):​EXEC VER:​Y$=N$:​N$=B$(X5,​X5):​EXEC VER:​Z$=N$:​EXEC SOUCIN:​FL=1:​ENDIF:​ENDIF
250 J=UINSTR(C1$,​B$(%3,​X5)):​IF J<>0:​X$=N$:​N$=B$(7,​7):​Q=0:​EXEC VER:​Y$=N$:​ON (J DIV %3+1)EXEC TRN,​INV,​TRI:​FL=%1:​ENDIF
260 IF FL=1:​FL=0:​ELSE:​?:​? N5$:​?:​ENDIF:​GO# R1
270 # R2:​I=%1:​WHILE B$(I,​I)<>" " AND I<19:​I=I+1:​WEND:​I=I-%1:​J=UINSTR(C2$,​B$(%1,​I))
280 IF J<>0:​N$=B$(I+%2,​I+%2):​EXEC VER:​EXEC PAR:​J=J DIV X5+1
290 ON JEXEC ERASE,​INPUT,​PRINT,​IDN,​DET,​HOD:​GO# R1:​ENDIF
300 J=UINSTR(C3$,​B$(%1,​I))
310 IF J<>0:​J=J DIV X5+1:​ON JEXEC DUMP,​SAVE,​LOAD,​CLEAR,​END,​UNLOCK:​GO# R1:​ENDIF
312 IF B$(1,​I)="DECLARE":​N$=B$(9,​9):​R=VAL(B$(11)):​S=VAL(B$(13+INT(CLOG(R)))):​EXEC DECLARE:​GO# R1:​ENDIF
320 ? N5$:​?:​GO# R1
470 REM 
480 ------------------------------
490 PROC PAR
495 P=UINSTR(T$,​N$)
500 N=(P+3) DIV X4:​IF N<>%0:​R=ASC(T$(P+%2,​P+%2)):​S=ASC(T$(P+%3,​P+%3)):​A=M(N):​ENDIF
510 ENDPROC
520 ------------------------------
530 PROC DECLARE
540 K=UINSTR(T$,​N$):​L=LEN(T$)+%1:​N=(L+%3)/X4
550 IF K<>%0:​? "NAME ERROR":​?:​ELSE:​IF R*S+M(N)>MAX:​? N4$:​?
560 ELSE:​T$(L,​L)=N$:​T$(L+%2,​L+%2)=CHR$(R):​T$(L+%3,​L+%3)=CHR$(S):​LENGTH(N)=R*S:​M(N+%1)=M(N)+R*S
565 T$(L+%1,​L+%1)="":​? N6$:​?
570 ENDIF:​ENDIF:​ENDPROC
580 ------------------------------
590 PROC INPUT:​MX=0
595 TRAP 637
600 FOR K=%0 TO R-%1
610 FOR J=%0 TO S-%1
620 ? "[";K+%1;",​";J+%1;"]=";:​INPUT " ",​L:​P(M(N)+K*S+J)=L:​L=LEN(STR$(L)):​IF L>MX THEN MX=L
630 NEXT J:​NEXT K:​T$(P+%1,​P+%1)=CHR$(MX):​?:​? N6$:​?:​ENDPROC
634 ------------------------------
637 ? "DATA ERROR":​?:​TRAP 637:​GOTO ERL
640 ------------------------------
650 PROC DUMP
660 *F +
670 FOR I=%1 TO LEN(T$) STEP 16
680 FOR J=%0 TO %3
690 L=I+J*4:​IF L<LEN(T$):​? T$(L,​L);"(";ASC(T$(L+%2,​L+%2));",​";ASC(T$(L+%3,​L+%3));")",​:​ENDIF
700 NEXT J:​?:​NEXT I:​? N6$:​?:​*F -
710 ENDPROC
720 ------------------------------
730 PROC END
740 INPUT "ARE YOU SURE";N$
750 IF N$="Y" OR N$="A":​GRAPHICS 0:​SETCOLOR 1,​0,​0:​SETCOLOR 2,​11,​8:​SETCOLOR 4,​2,​4:​? "Turbo BASIC READY":​? "34021 Bytes free"
760 NEW
770 ENDIF:​ENDPROC
799 ------------------------------
800 PROC PRINT
805 MX=ASC(T$(P+%1,​P+%1)):​IF MX<>0
810 ? "Tisk adku":​? "Tisk loupce":​? "Tisk ele matice"
820 INPUT N$
830 IF N$="R":​INPUT "Cislo radku";L
840 FOR I=%0 TO S-%1:​? I+%1,​P(A+S*(L-%1)+I):​NEXT I:​ENDIF:​IF N$="R" THEN GO# P2
850 IF N$="S":​INPUT "Cislo sloupce";L
860 FOR I=%0 TO R-%1:​? I+%1,​P(A+S*I+L-%1):​NEXT I:​ENDIF:​IF N$="S" THEN GO# P2
870 IF N$="C"
880 IF R<11 AND S<11:​INPUT "Chcete kumulovany tisk";N$:​ELSE:​GO# P1:​ENDIF:​IF N$="N" THEN GO# P1
890 D=40 DIV S-1:​IF MX+%2<D THEN D=MX+%2
895 POKE 201,​D
900 FOR I=%0 TO R-%1
910 FOR J=%0 TO S-%1
915 B=INT(P(A+S*I+J)*1000000+0.5)/1000000
920 A$=STR$(B):​IF LEN(A$)<D-%2:​Q=LEN(A$):​ELSE:​Q=D-%2:​ENDIF:​? A$(%1,​Q),​:​NEXT J:​?:​NEXT I:​POKE 201,​10
930 IF MX<=D-%2:​? "Tisk s plnou presnosti":​ELSE:​? "Tisk 1. n pozic":​ENDIF
940 ELSE
950 # P1:​FOR I=%0 TO S-%1:​? "Sloupec c.";I+%1:​FOR J=%0 TO R-%1:​? J+%1;" ....",​P(A+S*J+I):​NEXT J:​?:​NEXT I
960 ENDIF:​? N6$:​?:​ELSE:​?:​? "MATRIX NO DEFINE":​?
970 # P2:​ENDIF:​ENDPROC
999 ------------------------------
1000 PROC SOUCET
1003 X=UINSTR(T$,​X$):​Y=UINSTR(T$,​Y$):​Z=UINSTR(T$,​Z$)
1005 MX=ASC(T$(Y+%1,​Y+%1))*ASC(T$(Z+%1,​Z+%1)):​IF MX<>%0
1010 IF X*Y*Z=0:​? N1$:​ELSE
1020 IF (T$(X+%2,​X+%3)<>T$(Y+%2,​Y+%3)) OR (T$(X+%2,​X+%3)<>T$(Z+%2,​Z+%3)):​? N3$:​ELSE
1030 X=X DIV X4+%1:​Y=Y DIV X4+%1:​Z=Z DIV X4+%1:​L=LENGTH(X)-%1
1040 ON J GOTO 1050,​1100,​1150,​1200
1050 FOR I=%0 TO L:​P(M(X)+I)=P(M(Y)+I)+P(M(Z)+I):​NEXT I:​GOTO 1230
1100 FOR I=%0 TO L:​P(M(X)+I)=P(M(Y)+I)-P(M(Z)+I):​NEXT I:​GOTO 1230
1150 FOR I=%0 TO L:​P(M(X)+I)=P(M(Y)+I)*P(M(Z)+I):​NEXT I:​GOTO 1230
1200 FOR I=%0 TO L:​P(M(X)+I)=P(M(Y)+I)/P(M(Z)+I):​NEXT I:​GOTO 1230
1230 N$=X$:​EXEC MX:​? N6$:​?:​ENDIF:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
1240 ENDPROC
1499 ------------------------------
1500 PROC MX:​MX=%0:​EXEC PAR
1510 FOR J=%0 TO R*S-%1
1517 L=LEN(STR$(P(A+J))):​IF L>MX THEN MX=L
1520 NEXT J:​T$(P+%1,​P+%1)=CHR$(MX)
1530 ENDPROC
1540 ------------------------------
1550 PROC VER
1560 IF UINSTR(T$,​N$)=0 THEN ? N1$:​?:​POP:​GO# R1
1570 ENDPROC
1580 ------------------------------
1600 PROC SOUCIN
1610 X=UINSTR(T$,​X$):​I=ASC(T$(X+%2,​X+%2)):​Y=UINSTR(T$,​Y$):​J=ASC(T$(X+%3,​X+%3)):​Z=UINSTR(T$,​Z$):​K=ASC(T$(Z+%2,​Z+%2))
1615 MX=ASC(T$(Y+%1,​Y+%1))*ASC(T$(Z+%1,​Z+%1)):​IF MX<>%0
1620 IF X*Y*Z=0:​? N1$:​ELSE
1630 IF X=Y OR X=Z:​? N2$:​ELSE
1640 IF T$(X+%2,​X+%2)<>T$(Y+%2,​Y+%2) OR T$(X+%3,​X+%3)<>T$(Z+%3,​Z+%3) OR T$(Y+%3,​Y+%3)<>T$(Z+%2,​Z+%2):​? N3$:​?:​ELSE
1650 X=X DIV X4+%1:​Y=Y DIV X4+%1:​Z=Z DIV X4+%1
1660 FOR F=%0 TO LENGTH(X)-%1:​P(M(X)+F)=%0:​NEXT F
1670 FOR F=%0 TO I-%1
1680 FOR G=%0 TO J-%1
1690 FOR H=%0 TO K-%1
1700 L=(M(X)+F*J+G):​P(L)=P(L)+P(M(Y)+F*K+H)*P(M(Z)+H*J+G)
1710 NEXT H:​NEXT G:​NEXT F:​? N6$:​?:​ENDIF:​ENDIF:​ENDIF
1720 N$=X$:​EXEC PAR:​EXEC MX:​ELSE:​? N7$:​?:​ENDIF
1730 ENDPROC
1740 ------------------------------
1750 PROC SKAL
1760 X=UINSTR(T$,​X$):​Y=UINSTR(T$,​Y$)
1768 MX=ASC(T$(Y+%1,​Y+%1)):​IF MX<>%0
1770 IF T$(X+%2,​X+%3)<>T$(Y+%2,​Y+%3):​? N3$:​?:​ELSE:​X=X DIV X4+1:​Y=Y DIV X4+1:​N$=X$:​EXEC PAR
1780 FOR J=%0 TO R*S-%1:​P(M(X)+J)=P(M(Y)+J)*K:​NEXT J:​EXEC MX:​? N6$:​?:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
1790 ENDPROC
1799 ------------------------------
1800 PROC COPY
1810 X=UINSTR(T$,​X$):​Y=UINSTR(T$,​Y$)
1815 MX=ASC(T$(Y+%1,​Y+%1)):​IF MX<>%0
1820 IF T$(X+%2,​X+%3)<>T$(Y+%2,​Y+%3):​? N3$:​?:​ELSE:​X=X DIV X4+%1:​Y=Y DIV X4+%1
1830 I=DPEEK(140)+M(X)*6:​J=DPEEK(140)+M(Y)*6:​K=(M(Y+%1)-M(Y))*6
1840 MOVE J,​I,​K:​N$=X$:​EXEC MX:​? N6$:​?:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
1850 ENDPROC
1860 ------------------------------
1870 PROC UNLOCK:​I=%0
1880 INPUT "ENTER CODE";B$:​I=I+%1
1890 IF B$<>"28.4.1971" AND I<3 THEN 1880
1900 IF I>2 AND B$<>"28.4.1971":​? "UNAUTHORIZED ATTEMPT FOR UNLOCKING!":​PAUSE 100:​?:​? "PROGRAMM DESTROYED!"
1910 PAUSE 100:​BYE:​ENDIF
1920 ?:​? "CODE O.K.!":​? "PROGRAMM UNLOCKING!":​?:​POKE 16,​192:​POKE 53774,​247:​POKE 580,​0:​ENDIF
1930 ENDPROC
1940 ------------------------------
1950 PROC XS
1960 N$=Y$:​EXEC PAR
1970 X=UINSTR(T$,​X$):​Y=UINSTR(T$,​Y$):​FL=0
1980 IF T$(X+%2,​X+%3)<>T$(Y+%2,​Y+%3) OR T$(Y+%2,​Y+%2)<>T$(Y+%3,​Y+%3) THEN FL=1
1990 X=X DIV X4+%1:​Y=Y DIV X4+%1:​N=M(LEN(T$)/X4+%1):​S1=DPEEK(140)+M(X)*6:​S2=DPEEK(140)+M(Y)*6
2000 S3=DPEEK(140)+N*6:​S4=(M(Y+%1)-M(Y))*6
2010 ENDPROC
2020 ------------------------------
2030 PROC TRN
2035 Y=UINSTR(T$,​Y$):​IF ASC(T$(Y+%1,​Y+%1))<>%0
2040 EXEC XS
2050 IF FL=%1:​? N3$:​?:​ELSE:​IF MAX-N<R*S:​? N4$:​?:​ELSE:​MOVE S2,​S3,​S4
2060 FOR J=%0 TO R-%2:​FOR K=J+%1 TO R-%1:​F=P(N+R*J+K):​P(N+R*J+K)=P(N+R*K+J):​P(N+R*K+J)=F:​NEXT K:​NEXT J
2070 MOVE S3,​S1,​S4:​N$=X$:​EXEC MX:​? N6$:​?:​ENDIF:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
2080 ENDPROC
2090 ------------------------------
2100 PROC INV
2105 Y=UINSTR(T$,​Y$):​IF ASC(T$(Y+%1,​Y+%1))<>%0
2110 EXEC XS:​J=R:​IF FL=1:​? N3$:​?:​ELSE:​IF MAX-N<2*R*S:​? N4$:​?:​ELSE:​E=R
2115 FOR B=N+R*S TO N+2*R*S:​P(B)=%0:​NEXT B
2120 MOVE S2,​S3,​S4:​FOR B=%1 TO J:​GOSUB 2200:​P(H)=P(H)+%1:​NEXT B
2130 # G1:​GOSUB 2200:​D=P(H)-%1:​GOSUB 2230:​B=B-%1
2140 IF B>0 THEN GO# G1
2150 FOR B=%1 TO J:​GOSUB 2200:​P(H)=P(H)-%1:​NEXT B:​GO# G4
2200 C=B:​GO# G2
2210 C=F
2220 # G2:​C=C-R+N-%1:​H=R*B+C:​I=R*E+C:​RETURN
2230 FOR F=%1 TO J:​GOSUB 2210:​IF ABS(D)>1e-8:​P(H)=P(H)/D:​ELSE:​? "MATRIX SINGULAR":​?:​POP:​TRAP #R1:​GOTO 2280:​ENDIF
2235 NEXT F
2240 FOR E=%1 TO J:​IF B=E THEN GO# G3
2250 GOSUB 2200:​D=P(I):​FOR F=%1 TO J:​GOSUB 2210:​P(I)=P(I)-D*P(H):​NEXT F
2260 # G3:​NEXT E:​RETURN
2270 # G4:​MOVE S3,​S1,​S4:​N$=X$:​EXEC MX:​? N6$:​?
2280 ENDIF:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
2285 ENDPROC
2290 ------------------------------
2300 PROC DET
2305 I=UINSTR(T$,​N$):​IF ASC(T$(I+%1,​I+%1))<>%0
2310 IF R<>S:​? N3$:​?:​ELSE:​X$=N$:​Y$=N$:​EXEC XS:​IF MAX-N<R*S:​? N4$:​?:​ELSE:​MOVE S1,​S3,​S4:​D=1:​A=N-1:​N=R:​L=R
2320 FOR U=%1 TO N:​H=ABS(P(A+L*(U-%1)+U)):​R=U:​S=U
2330 FOR V=U TO N:​FOR W=U TO N:​IF ABS(P(A+L*(V-%1)+W))<=H THEN GO# D1
2340 H=ABS(P(A+L*(V-%1)+W)):​R=V:​S=W
2350 # D1:​NEXT W:​NEXT V:​IF R=U THEN GO# D2
2360 FOR W=U TO N:​Q=P(A+L*(U-%1)+W):​P(A+(U-%1)*L+W)=-P(A+L*(R-%1)+W):​P(A+L*(R-%1)+W)=Q:​NEXT W
2370 # D2:​IF S=U THEN GO# D3
2380 FOR V=U TO N:​Q=P(A+L*(V-%1)+U):​P(A+(V-%1)*L+U)=-P(A+(V-%1)*L+S):​P(A+L*(V-%1)+S)=Q:​NEXT V
2390 # D3:​IF ABS(P(A+L*(U-%1)+U))<=1e-20 THEN D=%0:​GO# D4
2400 D=D*P(A+L*(U-%1)+U):​FOR V=U+%1 TO N:​FOR W=U+%1 TO N
2405 C=A+L*(V-%1)+W:​P(C)=P(C)-P(A+L*(U-%1)+W)*P(A+L*(V-%1)+U)/P(A+L*(U-%1)+U)
2410 NEXT W:​NEXT V:​NEXT U
2420 # D4:​D=INT(D*100000+0.5)/100000:​? "DET ";N$;"=";D:​? N6$:​?:​ENDIF:​ENDIF:​ELSE:​? N7$:​?:​ENDIF
2430 ENDPROC
2440 ------------------------------
4990 PROC HEAD
5000 I=48039:​RESTORE 5010
5010 READ J:​IF J<>-1 THEN POKE I,​J:​I=I+1:​GOTO 5010
5020 DPOKE 560,​48039
5030 DPOKE 88,​48152
5040 DATA 70,​200,​187,​6,​2,​112,​15,​15,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​2,​130,​65,​167,​187,​-1
5045 SETCOLOR 0,​5,​8:​SETCOLOR 1,​0,​0:​SETCOLOR 2,​11,​8:​SETCOLOR 4,​2,​4:​CLS:​POKE 82,​1:​POKE 83,​38:​POSITION 1,​2
5050 RESTORE 5070:​I=48074
5060 READ J:​IF J<>-1 THEN POKE I,​J:​I=I+%1:​GOTO 5060
5070 DATA 45,​33,​52,​50,​41,​56,​0,​48,​50,​47,​35,​37,​51,​47,​50,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​-1
5080 I=48112:​RESTORE 5100
5090 READ J:​IF J<>-1 THEN POKE I,​J+128:​I=I+1:​GOTO 5090
5100 DATA 0,​0,​46,​37,​55,​52,​47,​46,​0,​36,​33,​52,​33,​0,​44,​52,​36,​14,​0,​0,​8,​35,​9,​17,​25,​24,​24,​0,​42,​33,​46,​0,​51,​52,​37,​35,​40,​50
5110 DATA 0,​0,​-1
5120 I=48010:​RESTORE 5150
5130 READ J:​IF J<>-%1 THEN POKE I,​J:​I=I+%1:​GOTO 5130
5140 DPOKE 512,​48010:​POKE 54286,​192
5150 DATA 72,​138,​72,​152,​72,​162,​0,​160,​80,​169,​0,​157,​24,​188,​232,​136,​208,​249,​104,​168,​104,​170,​104,​64,​-1
5160 ENDPROC
5190 ------------------------------
5200 PROC CLEAR
5205 T$(%1)="":​T$(104)="":​T$(%2)=T$
5210 T$=""
5215 ? N6$:​?
5220 ENDPROC
5230 ------------------------------
5240 PROC NAPLN
5250 FOR I=%1 TO R*S:​P(A+I-%1)=K:​NEXT I
5260 EXEC MX:​? N6$:​?
5270 ENDPROC
5280 ------------------------------
5300 PROC IDN
5305 IF R<>S:​? N3$:​?:​ELSE
5310 K=%0:​EXEC NAPLN
5320 FOR I=%0 TO R-%1:​P(A+I*R+I)=%1:​NEXT I:​ENDIF
5330 ENDPROC
5340 ------------------------------
5350 PROC ERASE
5360 K=DPEEK(140)+A*6:​L=K+R*S*6:​B=LEN(T$):​T=B/X4:​D=DPEEK(140)+M(T+%1)*6-L:​MOVE L,​K,​ABS(D)
5370 FOR J=N TO T-%1:​LENGTH(J)=LENGTH(J+%1):​NEXT J
5380 FOR J=N TO T-%1:​M(J+%1)=M(J)+LENGTH(J):​NEXT J:​M(J+%1)=%0
5390 IF N*X4<B:​T$(N*X4-%3,​B-X4)=T$(N*X4+%1,​B):​T$=T$(%1,​B-X4):​ELSE:​IF B=X4 THEN T$="":​? N6$:​?:​GOTO 5400
5395 T$=T$(%1,​B-X4):​ENDIF:​? N6$:​?
5400 ENDPROC
5410 ------------------------------
5420 PROC TRI
5425 X=UINSTR(T$,​X$):​Y=UINSTR(T$,​Y$)
5427 IF ASC(T$(Y+%1,​Y+%1))<>%0
5430 IF T$(X+%2,​X+%3)<>T$(Y+%2,​Y+%3):​? N3$:​?:​ELSE:​N$=Y$:​EXEC PAR:​TRAP #T1
5435 EXEC XS:​A=N
5440 IF MAX-A<R*S:​? N4$:​?:​ELSE:​MOVE S2,​S3,​S4
5450 FOR C=%0 TO R-%2:​IF P(A+C*S+C)=%0:​FOR B=C+%1 TO R-%1:​FOR G=C TO S-%1
5460 H=P(A+S*C+G):​P(A+C*S+G)=P(A+B*S+G):​P(A+B*S+G)=H:​NEXT G
5470 IF ABS(P(A+C*S+C))<>%0 THEN B=R+%1:​NEXT B:​ENDIF:​TRAP #T1
5480 IF B=R+%1 THEN GO# T2
5490 FOR D=C+%1 TO R-%1:​F=-P(A+D*S+C)/P(A+C*S+C):​FOR G=%0 TO S-%1:​P(A+D*S+G)=P(A+D*S+G)+F*P(A+C*S+G)
5500 NEXT G:​NEXT D
5505 # T2:​NEXT C
5510 # T1:​B=%0:​IF Q<>-%1 THEN ? N6$:​?:​MOVE S3,​S1,​S4:​N$=X$:​EXEC MX
5515 ENDIF:​ENDIF:​ELSE:​? N7$:​?:​B=%1:​ENDIF
5520 ENDPROC
5530 ------------------------------
5540 PROC SAVE
5550 INPUT "Name:​",​A$:​N=M(LEN(T$)/X4+%1)
5560 OPEN #1,​8,​0,​"T:​"
5570 PRINT #1,​A$:​? #1,​T$:​? #1,​N
5580 FOR I=%1 TO 27:​PRINT #1,​LENGTH(I):​? #1,​M(I):​NEXT I
5590 FOR I=%0 TO N:​PRINT #1,​P(I):​NEXT I:​CLOSE #1:​? N6$:​?:​POKE 54286,​192
5600 ENDPROC
5610 ------------------------------
5620 PROC LOAD
5630 T$(104)="":​A$(19)="":​TRAP 5677
5640 OPEN #1,​4,​128,​"T:​"
5650 INPUT #1,​A$:​INPUT #1,​T$:​INPUT #1,​N
5660 FOR I=%1 TO 27:​INPUT #1,​R:​INPUT #1,​S:​LENGTH(I)=R:​M(I)=S:​NEXT I
5670 FOR I=%0 TO N:​INPUT #1,​R:​P(I)=R:​NEXT I:​CLOSE #1
5672 T$=T$(11,​LEN(T$)):​A$=A$(11,​LEN(A$))
5675 ? "Loaded ";A$:​? N6$:​?:​GOTO 5680
5677 ? "BOOT ERROR!":​?:​SOUND 1,​23,​22,​14:​PAUSE 30:​SOUND:​CLOSE
5680 POKE 54286,​192:​ENDPROC
5690 ------------------------------
5700 PROC BEEP
5710 SOUND 1,​23,​10,​14:​PAUSE 5:​SOUND
5720 ENDPROC
5730 ------------------------------
5740 PROC HOD:​TRAP 40000
5750 X$=N$:​Y$=N$:​Q=-%1:​EXEC TRI:​K=R-%1:​L=R:​IF B=%1 THEN 5780
5760 WHILE P(A+S*(L-%1)+S-%1)=%0 AND L>=%1:​L=L-%1:​WEND
5770 ? "HOD =";L:​? N6$:​?
5780 ENDPROC
5790 ------------------------------
5800 # ERR:​IF RND>0.9500000000000001:​? "SORRY VOLE":​? "ERROR":​?:​ELSE:​? N2$:​?:​ENDIF:​EXEC BEEP:​GO# R1
6000 PROC MENU:​POKE 752,​1
6010 CLS:​POSITION 4,​3:​POKE 82,​4
6020 ? "****** SEZNAM PRIKAZU *******"
6030 ? "A=B+C":​? "A=B-C skalarni operace":​? "A=B.C mezi jednot.prvky":​? "A=B/C"
6040 ? "A=B*C maticove nasobeni":​? "A=B*skal nasobeni skalarem":​? "A=B prirazeni matic"
6050 ? "A=TRN B transpozice":​? "A=INV B inverze":​? "A=TRI B redukce na troj.tvar"
6060 ? "A=skal priraz.vsem prvkum":​? "IDN A vytvoreni jednot.mat.":​? "DET A vypocet determinantu"
6070 ? "HOD A vypocet hodnosti"
6080 IF INKEY$="" THEN 6080
6090 CLS:​POSITION 4,​3
6100 ? "****** RIDICI PRIKAZY *******"
6110 ? "DECLARE A,​R,​S deklaruje matici A typu R,​S"
6120 ? "ERASE A zrusi matici A"
6130 ? "INPUT A vlozeni hodnot"
6140 ? "PRINT A tisk matice"
6150 ? "DUMP tisk seznamu dek- larovanych matic"
6160 ? "CLEAR zruseni vsech matic"
6170 ? "SAVE nahrava matice"
6180 ? "LOAD opak SAVE"
6190 ? "END konci praci prog- ramu a maze jej"
6200 ?:​? "Upozorneni!":​? " zpusobi restart systemu!"
6210 IF INKEY$="" THEN 6210
6220 CLS:​POKE 82,​1:​POSITION 1,​2:​POKE 752,​0
6230 ENDPROC	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!