1 ' Logical equation solver
\r
2 ' made by Svjatoslav Agejenko
\r
4 ' homepage: svjatoslav.eu
\r
5 ' email: svjatoslav@svjatoslav.eu
\r
7 ' Solves logical equations.
\r
10 DECLARE SUB rmslg (x1!, x3!, l!)
\r
11 DECLARE SUB getp (a!, b!)
\r
12 DECLARE SUB movm (x1!, n!)
\r
13 DECLARE SUB lihts (x1, x2, l)
\r
15 DECLARE SUB lendm (x1!, m!)
\r
16 DECLARE SUB mov (x1!, n!)
\r
17 DECLARE SUB lendp (x1!, m!)
\r
18 DECLARE SUB teeslg (x1!, x2!, l!)
\r
19 DECLARE SUB prepare ()
\r
20 DECLARE SUB tee (x1!, x2!)
\r
21 DECLARE SUB lahend (x1, x2)
\r
22 DECLARE SUB prn (x!, y!, c!, c1!, a$)
\r
24 DECLARE SUB start ()
\r
25 DIM SHARED font(0 TO 7, 0 TO 7, 0 TO 122)
\r
26 DIM SHARED tehe(0 TO 79)
\r
27 DIM SHARED muut(1 TO 8, 1 TO 100)
\r
28 DIM SHARED muun(1 TO 8)
\r
29 DIM SHARED vast(1 TO 100)
\r
30 DIM SHARED xloc(0 TO 79)
\r
31 DIM SHARED xlah(0 TO 79, 0 TO 100)
\r
78 IF ((b >= 65) AND (b <= 90)) OR ((b >= 97) AND (b <= 122)) THEN
\r
97 IF e > f THEN d = -d: e = 1
\r
98 IF d = 1 THEN c = ASC("t") ELSE c = ASC("v")
\r
105 muut(nm + 1, a) = 116
\r
106 muut(nm + 2, a) = 118
\r
120 'FOR b = x1 TO x2 + a
\r
121 'prn b, 20, 14, 1, CHR$(tehe(b))
\r
131 prn x2 + 1, a, 14, 0, CHR$(vast(a))
\r
138 IF tehe(x1) <> 41 THEN m = 1: GOTO 19
\r
143 IF tehe(c) = 40 THEN d = d - 1
\r
144 IF tehe(c) = 41 THEN d = d + 1
\r
145 IF d > 0 THEN GOTO 20
\r
151 IF tehe(x1) <> 40 THEN m = 1: GOTO 17
\r
156 IF tehe(c) = 40 THEN d = d + 1
\r
157 IF tehe(c) = 41 THEN d = d - 1
\r
158 IF d > 0 THEN GOTO 18
\r
163 SUB lihts (x1, x2, l)
\r
168 FOR a = x1 TO x2 - l
\r
169 prn a, 0, 13, 1, CHR$(tehe(a))
\r
174 FOR a = 79 - n TO x1 STEP -1
\r
175 tehe(a + n) = tehe(a)
\r
176 xloc(a + n) = xloc(a)
\r
181 FOR a = x1 TO 79 - n
\r
182 tehe(a) = tehe(a + n)
\r
183 xloc(a) = xloc(a + n)
\r
193 IF tehe(a) = 32 OR tehe(a) = 0 THEN
\r
195 tehe(b) = tehe(b + 1)
\r
198 IF ln <= a - 1 THEN GOTO 6
\r
207 prn a, 0, 13, 1, CHR$(tehe(a))
\r
210 prn 0, 1, 7, 0, "Do you want to simplyfy it (unfinished so press N)"
\r
215 IF a$ = "n" OR a$ = "N" THEN GOTO 24
\r
216 IF a$ = "y" OR a$ = "Y" THEN ELSE GOTO 23
\r
219 prn 0, 1, 7, 0, SPACE$(79)
\r
222 IF a = 1 THEN lihts 0, ln, l
\r
229 SUB prn (x, y, c, c1, a$)
\r
231 y1 = (y + prnp) * 8
\r
233 FOR b = 1 TO LEN(a$)
\r
234 LINE (x1, y1)-(x1 + 7, y1 + 7), c1, BF
\r
235 d = ASC(RIGHT$(LEFT$(a$, b), 1))
\r
236 IF d > 122 THEN GOTO 22
\r
239 c2 = font(x2, y2, d)
\r
240 IF c2 > 0 THEN PSET (x1 + x2, y1 + y2), c
\r
249 SUB rmslg (x1, x3, l)
\r
256 IF tehe(a) = 40 THEN
\r
257 IF a = x1 THEN p1 = 100 ELSE getp tehe(a - 1), p1
\r
263 IF tehe(c) = 40 THEN d = d + 1
\r
264 IF tehe(c) = 41 THEN d = d - 1
\r
266 IF (tehe(c) > 0) AND (tehe(c) <= 5) THEN
\r
268 IF b > p2 THEN p2 = b
\r
271 IF d > 0 THEN GOTO 25
\r
272 IF c + 1 > x2 THEN p3 = 100 ELSE getp tehe(c + 1), p3
\r
274 IF (p1 > p2) AND (p3 >= p2) THEN
\r
284 IF a <= x2 THEN GOTO 26
\r
290 prn 0, 0, 3, 0, "enter equation (ESC to quit) keys: 1 - " + CHR$(1) + " 2 - " + CHR$(2) + " 3 - " + CHR$(3) + " 4 - " + CHR$(4) + " 5 - " + CHR$(5)
\r
291 prn 0, 1, 3, 0, "example: a" + CHR$(1) + "b" + CHR$(2) + "(g" + CHR$(3) + "b)"
\r
300 IF a = x THEN prn a, 2, 14, 1, CHR$(tehe(a)) ELSE prn a, 2, 3, 0, CHR$(tehe(a))
\r
304 IF a$ = "" THEN GOTO 2
\r
306 IF a$ = CHR$(27) THEN SYSTEM
\r
307 IF a$ = CHR$(0) + "M" THEN x = x + 1
\r
308 IF a$ = CHR$(0) + "K" THEN x = x - 1
\r
309 IF x < 0 THEN x = 0
\r
310 IF x > 79 THEN x = 79
\r
312 IF LEN(a$) = 1 THEN
\r
313 SELECT CASE ASC(a$)
\r
314 CASE 32, 40, 41, 65 TO 90, 97 TO 122
\r
316 FOR a = 78 TO x STEP -1
\r
317 tehe(a + 1) = tehe(a)
\r
323 FOR a = x - 1 TO 78
\r
324 tehe(a) = tehe(a + 1)
\r
329 a$ = CHR$(ASC(a$) - 48)
\r
352 LINE (0, 0)-(7, 7), 0, BF
\r
353 LINE (2, 1)-(0, 3), 15
\r
354 LINE (1, 4)-(2, 5), 15
\r
355 LINE (5, 1)-(7, 3), 15
\r
356 LINE (6, 4)-(5, 5), 15
\r
357 LINE (1, 2)-(5, 2), 15
\r
358 LINE (1, 4)-(5, 4), 15
\r
361 LINE (0, 0)-(7, 7), 0, BF
\r
362 LINE (5, 1)-(7, 3), 15
\r
363 LINE (6, 4)-(5, 5), 15
\r
364 LINE (1, 2)-(5, 2), 15
\r
365 LINE (1, 4)-(5, 4), 15
\r
368 LINE (0, 0)-(7, 7), 0, BF
\r
369 LINE (0, 0)-(3, 7), 15
\r
370 LINE (6, 0)-(3, 7), 15
\r
373 LINE (0, 0)-(7, 7), 0, BF
\r
374 LINE (0, 7)-(3, 0), 15
\r
375 LINE (6, 7)-(3, 0), 15
\r
378 LINE (0, 0)-(7, 7), 0, BF
\r
379 LINE (0, 0)-(4, 0), 15
\r
380 LINE (4, 1)-(4, 7), 15
\r
388 font(x, y, a) = POINT(x, y)
\r
399 DIM opr(1 TO 2, 1 TO tehl)
\r
415 IF tehe(c) = ASC("(") THEN d = d + 1
\r
416 IF tehe(c) = ASC(")") THEN d = d - 1
\r
417 IF d = 0 THEN GOTO 11
\r
423 opr(oprm, c) = vast(c)
\r
432 CASE 65 TO 90, 97 TO 122
\r
434 IF muun(c) = b THEN d = c: GOTO 8
\r
438 opr(oprm, c) = muut(d, c)
\r
439 prn xloc(a), c, 3, 0, CHR$(muut(d, c))
\r
442 IF ng = 1 THEN GOSUB mkneg
\r
449 IF d = e THEN f = ASC("t") ELSE f = ASC("v")
\r
451 prn xloc(oex), c, 12, 0, CHR$(f)
\r
458 IF (d = ASC("t")) AND (e = ASC("v")) THEN f = ASC("v")
\r
460 prn xloc(oex), c, 12, 0, CHR$(f)
\r
467 IF (d = ASC("v")) AND (e = ASC("v")) THEN f = ASC("v")
\r
469 prn xloc(oex), c, 12, 0, CHR$(f)
\r
476 IF (d = ASC("t")) AND (e = ASC("t")) THEN f = ASC("t")
\r
478 prn xloc(oex), c, 12, 0, CHR$(f)
\r
491 IF d = ASC("t") THEN d = ASC("v") ELSE d = ASC("t")
\r
492 prn xloc(ngx), c, 4, 0, CHR$(d)
\r
500 vast(c) = opr(1, c)
\r
504 SUB teeslg (x1, x4, l)
\r
518 IF tehe(c) = 40 THEN d = d + 1
\r
519 IF tehe(c) = 41 THEN d = d - 1
\r
520 IF d = 0 THEN GOTO 15
\r
523 IF e = 1 THEN teeslg a + 1, c - 1, l ELSE l = 0
\r
530 IF (b = 5) AND (e = 1) AND (g > 1) THEN
\r
535 tehe(a + 2 + f) = 41
\r
542 IF (b = 3 OR b = 4) AND (e = 2) AND (g > 2) THEN
\r
548 tehe(a + 2 + f) = 41
\r
555 IF (b = 2) AND (e = 3) AND (g > 3) THEN
\r
561 tehe(a + 2 + f) = 41
\r
581 IF a <= x2 THEN GOTO 21
\r