1000 REM +++++++++++++++++++++++++++++++ 1010 REM ! Program .... KRETSMAT 1020 REM ! Utg}va 1.1 83-11-29 1030 REM ! av (c) Bertil Lindau Nr. 812 1040 REM ! Minne 32 Kbytes f|r flexskiva 1050 REM ! Ins{nt av Bertil Lindau 1060 REM +++++++++++++++++++++++++++++++ 1070 REM 1080 REM Inmatningsprogram f|r 1090 REM kretsmatrisen till program- 1100 REM paketet LOGSIM 1110 REM 1120 DIM T$(9%,4%)=3%,K%(9%,100%),C$=43% 1130 C$=CUR(21%,0%)+TAB(39%) 1140 FOR J%=0% TO 4% : FOR I%=0% TO 9% 1150 READ T$(I%,J%) 1160 NEXT I% : NEXT J% 1170 DATA TYP,UT,I1,I2,I3,I4,I5,I6,I7,I8 1180 DATA TYP,UT,UC,TF,CL,DA,SET,RST," "," " 1190 DATA TYP,UT,UC,TF,CL,RST," "," "," "," " 1200 DATA TYP,UT,UC,TF,CL,DA," "," "," "," " 1210 DATA TYP,UT,I1,I2," "," "," "," "," "," " 1220 REM %%%% Data f|r menyn %%%% 1230 DATA 5 1240 DATA Inmatning 1250 DATA Borttagning 1260 DATA "Spara matris" 1270 DATA "H{mta matris" 1280 DATA "Till meny" 1290 RESTORE 1230 1300 Q$="K R E T S M A T R I S" 1310 GOSUB 1470 1320 PRINT CUR(15%,0%); 1330 IF G0%1% 1420 1350 E9%=104% 1360 GOSUB 2060 : REM FELMEDELANDE 1370 GET A$ 1380 IF ASC(A$)=13% 1290 1390 IF A$="J" OR A$="j" 3840 1400 IF A$="N" OR A$="n" 1450 1410 GOTO 1370 1420 E9%=105% 1430 GOSUB 2090 : REM Medelande 1440 PRINT CUR(18%,0%); 1450 IF G0%=G1% CHAIN "DR1:LOGSIM" 1460 ON G0% GOTO 2460,4680,3840,4440 1470 REM 1480 REM ***************** 1490 REM ==== MENYVAL ==== 1500 REM ***************** 1510 REM 1520 REM G9% Lopvariabel 1530 REM G1% Antal menyhopp 1540 REM F$(G1%) Delnamn 1550 REM G0% Hoppvariabel 1560 REM A$ Inmatningsvariabel 1570 REM 1580 GOSUB 1900 : REM Systemrad 1590 READ G1% 1600 FOR G9%=1% TO G1% 1610 READ F$(G9%) 1620 PRINT CUR(3%+2%*G9%,10%)G9%". "F$(G9%) 1630 NEXT G9% 1640 GOSUB 1790 : REM Medelanderad 1650 PRINT TAB(8%); 1660 PRINT " V{lj rutin (1-"; 1670 PRINT RIGHT$(NUM$(G1%),2%)") "; 1680 GET A$ 1690 LET G0%=ASC(A$)-48% 1700 IF G0%<1% OR G0%>G1% 1680 1710 PRINT CUR(3%+2%*G0%,7%)"==>" 1720 GOSUB 1790 : REM Medelanderad 1730 RETURN 1740 REM 1750 REM ********************** 1760 REM ==== MEDELANDERAD ==== 1770 REM ********************** 1780 REM 1790 PRINT CUR(23%,0%)TAB(39%); 1800 PRINT CUR(23%,2%); 1810 RETURN 1820 REM 1830 REM ******************* 1840 REM ==== SYSTEMRAD ==== 1850 REM ******************* 1860 REM 1870 REM X% Tabvariabel 1880 REM Q$ Systemnamn 1890 REM 1900 LET X%=18%-LEN(Q$)/2% 1910 PRINT CHR$(12%); 1920 PRINT TAB(X%)Q$ 1930 PRINT CHR$(151%)STRING$(38%,35%) 1940 PRINT CUR(22%,0%)STRING$(39%,61%); 1950 RETURN 1960 REM 1970 REM ***************** 1980 REM ==== FELRUTIN === 1990 REM ***************** 2000 REM 2010 REM E9% Felkode 2020 REM F9% Lopvariabel 2030 REM A$ Slaskvariabel 2040 REM X% Tabvariabel 2050 REM 2060 IF E9%=0% RETURN 2070 POKE 32720%,ASC(">")+128% 2080 PRINT CHR$(7%); 2090 GOSUB 1790 : REM Medelanderad 2100 IF E9%<100% 2170 2110 RESTORE 2240 2120 FOR F9%=100% TO E9% 2130 READ A$ : NEXT F9% 2140 X%=19%-LEN(A$)/2% 2150 PRINT TAB(X%)A$; 2160 RETURN 2170 PRINT TAB(6%); 2180 PRINT " Fel nr"E9%" (Se fellistan)"; 2190 RETURN 2200 REM ======================= 2210 REM ==== FELMEDELANDEN ==== 2220 REM ======================= 2230 REM 2240 DATA "Antal mellan 1 och 100" 2250 DATA "Svara mellan 1 och 9" 2260 DATA "Fel namn p} anslutning" 2270 DATA "Skall jag skriva |ver filen?" 2280 DATA "Har du gl|mt skriva filen?" 2290 DATA "Var god v{nta!" 2300 DATA "Hittar ej filen" 2310 REM 2320 REM ************************** 2330 REM ======= Inmatning ======== 2340 REM ************************** 2350 REM 2360 REM K%(,) Kretsmatris 2370 REM t$(,) Nodnamn 2380 REM R% P}g}ende kretsnummer 2390 REM I% Lopvariabel 2400 REM K% Aktuell post 2410 REM F0% Hoppvariabel 2420 REM I1% Matristyp 2430 REM F8% Skrivflagga 2440 REM A$ Slaskvariabel 2450 REM 2460 Q$="INMATNING AV KRETSMATRIS" 2470 GOSUB 1900 : REM Systemrad 2480 PRINT CUR(2%,0%); 2490 GOSUB 3460 : REM Skriv kretstyper 2500 PRINT C$ 2510 PRINT CUR(21%,0%)"Ange kretsnummer "; 2520 ONERRORGOTO 3330 2530 INPUTLINE A$ 2540 A$=LEFT$(A$,LEN(A$)-2%) 2550 IF LEN(A$)=0% 1290 2560 F8%=1% 2570 R%=VAL(A$) 2580 IF R%<1% OR R%>100% 3360 2590 GOSUB 1790 : REM Medelanderad 2600 PRINT CUR(12%,0%)"Krets nr:"R%" " 2610 PRINT C$ 2620 ONERRORGOTO 3400 2630 IF K%(0%,R%)<>0% 2700 2640 PRINT CUR(15%,0%)TAB(80%) 2650 PRINT CUR(21%,0%); 2660 PRINT "Ange kretstyp"; 2670 INPUT K% 2680 IF K%<1% OR K%>9% 3370 2690 K%(0%,R%)=K% 2700 K%=K%(0%,R%) 2710 GOSUB 3720 : REM Typ matrisrad 2720 GOSUB 3270 : REM Skriv matrisrad 2730 GOSUB 3160 : REM Skriv matris 2740 GOSUB 2810 : REM H{mta data 2750 ON F0% GOTO 2500 2760 REM 2770 REM ====================== 2780 REM ===== H{mta data ===== 2790 REM ====================== 2800 REM 2810 D%=1% 2820 F0%=1% 2830 PRINT C$ 2840 PRINT CUR(21%,0%)"Ange anslutning och nod ("T$(D%,I1%)")"; 2850 INPUTLINE A$ 2860 GOSUB 1790 : REM Medelanderad 2870 A$=LEFT$(A$,LEN(A$)-2%) 2880 IF LEN(A$)=0% RETURN 2890 IF ASC(A$)<58% AND ASC(A$)>47% I%=D% : GOTO 3010 2900 FOR I%=0% TO 9% 2910 IF LEN(A$)9% D%=1% 3050 IF T$(D%,I1%)=" " D%=1% 3060 IF I%<>0% 3090 3070 GOSUB 3720 : REM Typ matrisrad 3080 GOSUB 3270 : REM Skriv matrisrad 3090 GOSUB 3160 : REM Skriv matris 3100 GOTO 2820 3110 REM 3120 REM ======================== 3130 REM ===== Skriv matris ===== 3140 REM ======================== 3150 REM 3160 FOR I%=0% TO 9% 3170 PRINT CUR(16%,I%*4%-1%); 3180 IF K%(I%,R%)=0% AND T$(I%,I1%)<>" " PRINT ' - '; ELSE PRINT ' '; 3190 IF K%(I%,R%)<>0% PRINT CUR(16%,I%*4%-1%)K%(I%,R%) 3200 NEXT I% 3210 RETURN 3220 REM 3230 REM =========================== 3240 REM ===== Skriv matrisrad ===== 3250 REM =========================== 3260 REM 3270 PRINT C$ 3280 FOR I%=0% TO 9% 3290 PRINT CUR(15%,I%*4%)T$(I%,I1%); 3300 IF LEN(T$(I%,I1%)) PRINT " " 3310 NEXT I% 3320 RETURN 3330 E9%=ERRCODE 3340 GOSUB 2060 : REM Felmedelande 3350 GOTO 2500 3360 E9%=100% : GOTO 3340 3370 E9%=101% 3380 GOSUB 2060 : REM Felmedelande 3390 GOTO 2610 3400 E9%=ERRCODE : GOTO 3380 3410 REM 3420 REM ======================== 3430 REM === Skriv kretstyper === 3440 REM ======================== 3450 REM 3460 RESTORE 3590 3470 PRINT " Kretstyper:" 3480 PRINT " -----------" 3490 READ I0% 3500 FOR I%=1% TO I0% 3510 READ A$ 3520 IF I%/2%=I%/2 X%=19% ELSE X%=0% 3530 PRINT TAB(X%)I%". ";A$; 3540 IF X%>0% PRINT 3550 NEXT I% 3560 IF X%=0% PRINT 3570 PRINT STRING$(39%,61%); 3580 RETURN 3590 DATA 9 3600 DATA "A N D","N A N D" 3610 DATA "O R","N O R" 3620 DATA "X O R","X N O R" 3630 DATA "D-Vippa med RST" 3640 DATA "D-Vippa utan RST" 3650 DATA "J-K Vippa" 3660 DATA " " 3670 REM 3680 REM =========================== 3690 REM === H{mta typ matrisrad === 3700 REM =========================== 3710 REM 3720 IF K%<5% I1%=0% 3730 IF K%=5% I1%=4% 3740 IF K%=6% I1%=4% 3750 IF K%=7% I1%=1% 3760 IF K%=8% I1%=3% 3770 IF K%=9% I1%=2% 3780 RETURN 3790 REM 3800 REM ************************ 3810 REM ===== Spara matris ===== 3820 REM ************************ 3830 REM 3840 Q$="S P A R A M A T R I S" 3850 R1%=0% : R%=0% 3860 GOSUB 1900 : REM Systemrad 3870 GOSUB 1790 : REM Medelanderad 3880 GOSUB 3960 : REM H{mta filnamn 3890 IF F1%=1% GOTO 1290 3900 GOTO 4120 3910 REM 3920 REM ========================= 3930 REM ===== H{mta filnamn ===== 3940 REM ========================= 3950 REM 3960 PRINT CUR(10%,0%)"Defaultv{rden: Drive........DR1:" 3970 PRINT TAB(17%)"Extension....N[T" 3980 PRINT C$ 3990 PRINT CUR(21%,0%)"Ange filnamn "; 4000 INPUTLINE N$ 4010 N$=LEFT$(N$,LEN(N$)-2%) 4020 F1%=0% 4030 IF LEN(N$)=0% F1%=1% : RETURN 4040 IF INSTR(1%,N$,":") 4060 4050 N$="DR1:"+N$ 4060 IF INSTR(1%,N$,".") RETURN 4070 N$=N$+".N[T" 4080 RETURN 4090 REM 4100 REM =========================== 4110 REM 4120 ONERRORGOTO 4210 4130 OPEN N$ ASFILE 1% 4140 CLOSE 1% 4150 E9%=103% 4160 GOSUB 2060 : REM Felmedelande 4170 GET A$ 4180 IF A$="j" OR A$="J" 4210 4190 IF A$="n" OR A$="N" 3870 4200 GOTO 4170 4210 PRINT CUR(3%,0%)"Jag skriver p} filen "N$ 4220 FOR I%=1% TO 100% 4230 IF K%(0%,I%)<>0% R%=I% : R1%=R1%+1% 4240 FOR J%=1% TO 9% 4250 IF N%0% AND A%<101% 4820 4790 E9%=100% 4800 GOSUB 2060 : REM Felmedelande 4810 GOTO 4700 4820 FOR I%=A% TO 99% 4830 FOR J%=0% TO 9% 4840 K%(J%,I%)=K%(J%,I%+1%) 4850 NEXT J% : NEXT I% 4860 GOTO 1290 4870 E9%=ERRCODE 4880 GOSUB 2060 : REM Felmedelande 4890 GOTO 4700