Skip to content

Instantly share code, notes, and snippets.

@Alikberov
Created October 24, 2023 08:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Alikberov/c297bdd8a37635ca7293d567a1a3f351 to your computer and use it in GitHub Desktop.
Save Alikberov/c297bdd8a37635ca7293d567a1a3f351 to your computer and use it in GitHub Desktop.
ASCII circuits
<html>
<head>
<title>ASCII-circuits</title>
</head>
<body>
<canvas id=Circuit width=800 height=600></canvas>
<pre id=logo></pre>
<textarea id=circuit row=3 cols=80 style=display:none>
= +--------------------*---*-----
!/ ! = = ! ! !
# \!/ \ !/ !/ ! \ #
! ! \ # # # \ -!-
> ! ! ! ! !
<-#--> +-\\-*-+ < > ! +-\\-*-#-*-+
> ! ! ! <-#-> ! ! ! ! > +-
>-#-*---/> +-#-< >-#-*-*---/> # >#!
> ! < > ! ! ! >#<
! ! < > # ! ! >#<
! ! ! ! ! ! ! > <
+--------*-----*---*-----*----*---*-*-*-
C1:2,2 C2:4…15 C3:82 C4:82 C5:4…15 C6:5,1 C7:4…15 C9:10 C8:3,9 C10:15 C11:22 C13:82 C12:0,068
T1:GT329A T2:GT329B
L1 L2 L3 L4 L5
R1:15K R2:2,2K R3:75K R4:2,2K
</textarea>
<!--
@--###################################
@--# ! ###
@--#-----+----vvv--*-^^^-+ !
! ! ! ! <
*--//-+ #< >#<-
! #<--#-->#<
# #< >#<
-!- ! ! !
+-vvv-*-*-
###
c@C1:1nf
l@L1:99,L2:88,L3:56,L4:91
r@R1:5k
w#Clk,res,input,rdy,Vcc,irq
</textarea>
<!--
########################################
# ! ! ! ! ! ! #
#----*---*-----*---*-------*---*----+ #
# ! ! ! ! ! ! ! #
\ / \ / / ! -+--#
\ / \ / / # ! #
! ! ! ! +v ! !
--\\-*-#-*-- --*-#-*--///--* --+
! X ! X
<\----- -----/> - -
! !
@----*-------------*----------------+
r@R4:10 @R5:33K @R1:390@ @RU1:CN-2 @R9*:47K@ @R13:20K @R2:470 @R7*:100K@ @R8:18K @R10:47K @R17:300 @R11:300 @R12:1K
c@C1:1mf C2:5mf
t@T1:K315,@T2:K31,
w#/UCC,/CLC,/1mHz,/UCC,/IN,/UCC,/BELL,/UCC,/ULINE,/IN-/D0,/D1,/D2,/D3,/D4,/D5,/D6,/D7,/CLC,/UCC,/BUSR,/INT,/UCC,/RES,/M1,/UCC,/A0,/A1,/A2,/A3,/A4,/A5,/A6,/A7,/A8,/A9,/A10,/WR,/RD,/RAMCS,/IN
</textarea>
<!--
-+ -+ -+ +--+
\ \ \ ! !
->--*-\\--<--\\-#-+ +<--#-+ +-//-+
! ! ! !
/ \ # /
/ -/- -\- \ ! +v !
! ! +-\\-#--/// \
!-->
<var id=Parts style=display:none>
.........................1.........................
.........................1.........................
.........................1.........................
.........................1.........................
.........................1.........................
.........................1.........................
.........................1.........................
.........................1.........................
3333222222222222222222222X.........................
....5....................X.........................
....5....................X.........................
....5...............XXXXXXXXXXX....................
....5................XXXXXXXXX.....................
....5.................XXXXXXX......................
....5..................XXXXX.......................
....5...................XXX........................
....5....................X.........................
....5....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
....5....X...............................X.........
....5....X...............................X.........
....5....X...............................X.........
....5....X........=......................X.........
....5....X...............................X.........
...656...X...............................X.........
..66566..X...............................X.........
4444XXXXXX...............................XXXXXXXXXX
...666...X...............................X.........
.........X...............................X.........
.........X.....................r.........X.........
.........X...............................X.........
.........X...............................X.........
.........X...............................X.........
.........Z...............................X.........
.........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
014 ..!..
..v..
.///.
.....
0,0 .....
0234 .....
.-v..
.///.
.....
0,0 .....
02456 .....
... .+v..
-1- -///.
... .....
0,0 .....
025 .....
.+v..
.///.
.....
0,0 .....
........6........
........6........
55......6......44
..555...6...444..
.....55.6.44.....
.......564.......
........X........
........X........
00000000122222222
........1........
........1........
........1........
........1........
........1........
........1........
........1........
........1........
01456 .....
... .....
.0. .\!/.
... .....
1,1 .....
004 .....
... .....
.0. .-^^.
... .....
1,1 .....
025 .....
... .....
.0. .^^-.
... .....
1,1 .....
0541 .....
... .....
.0. .^^^.
... ..!..
1,1 .....
054 .....
... .....
.0. .^^^.
... .....
1,1 .....
125 .....
... ..!..
.0. ..<..
... ..<..
1,1 .....
104 ..... .....
... ..<.. ..<..
.0. ..<.. ..<..
... ..!.. ..*..
1,1 ..... .....
1645 .....
... ..<..
.0. .-<..
... ..<..
1,1 .....
1145 .....
... ..<..
.0. ..<-.
... ..<..
1,1 .....
145 .....
... ..<..
.0. ..<..
... ..<..
1,1 .....
304 ..... .....
... ..!.. ..+..
.0. ..>.. ..>..
... ..>.. ..>..
1,1 ..... .....
325 ..... .....
... ..>.. ..>..
.0. ..>.. ..>..
... ..!.. ..*..
1,1 ..... .....
3145 .....
... ..>..
.0. .->..
... ..>..
1,1 .....
3456 .....
... ..>..
.0. ..>-.
... ..>..
1,1 .....
345 .....
... ..>..
.0. ..>..
... ..>..
1,1 .....
204 .....
... .....
.0. .vv-.
... .....
1,1 .....
225 .....
... .....
.0. .-vv.
... .....
1,1 .....
2541 .....
... ..!..
.0. .vvv.
... .....
1,1 .....
254 .....
... .....
.0. .vvv.
... .....
1,1 .....
111111111111111111111111X111111111
1......................2.2.......1
1.....................2...2......1
1....................2.....2.....1
1..........=........2.......2....1
1..................2.........2...1
1.................2...........2..1
1................2.............2.1
X...............2...............2X
12.............2.................1
1.2...........2..................1
1..2.........2...................1
1...2.......2.........r..........1
1....2.....2.....................1
1.....2...2......................1
1......2.2.......................1
11111111X1111111111111111111111111
01 .....
... .....
.9. -\\-.
... .....
0,1 .....
02 .....
... .....
.9. -//-.
... .....
0,1 .....
11 ..!..
... ..\..
.9. ..\..
... ..!..
1,0 .....
12 ..!..
... ../..
.9. ../..
... ..!..
1,0 .....
.......151.......
.......151.......
.......151.......
.......151.......
.......151.......
.......151.......
.......151.......
2222222X0X4444444
6666666X0X8888888
2222222X0X4444444
.......373.......
.......373.......
.......373.......
.......373.......
.......373.......
.......373.......
.......373.......
013 ..... ..... ..... .....
... ...<. ..... ..... .>...
.0. ..#<. ..#<. .>#.. .>#..
... ..... ...<. .>... .....
1,1 ..... ..... ..... .....
113 ..... ..... ..... .....
... .vv.. ..vv. ..... .....
.0. ..#.. ..#.. ..#.. ..#..
... ..... ..... ..^^. .^^..
1,1 ..... ..... ..... .....
0024687 .....
... .....
.0. .###.
... ..!..
1,1 .....
002468 .....
... .....
.0. .###.
... .....
1,1 .....
00135678 .....
... ..#..
.0. .-#-.
... ..#..
1,1 .....
0015678 .....
... ..#..
.0. .-#-.
... ..!..
1,1 .....
001568 .....
... ..#..
.0. .-#-.
... .....
1,1 .....
0013567 .....
... ..#..
.0. .-#..
... ..#..
1,1 .....
0013578 .....
... ..#..
.0. ..#-.
... ..#..
1,1 .....
001357 .....
... ..#..
.0. ..#..
... ..#..
1,1 .....
0034678 .....
... .....
.0. .-##.
... ..#..
1,1 .....
003478 .....
... .....
.0. ..##.
... ..#..
1,1 .....
002367 .....
... .....
.0. .##..
... ..#..
1,1 .....
00156 .....
... ..#..
.0. .-#..
... .....
1,1 .....
.................2...............4.................
..................2....X.X00....4..................
...................2...X.X.0...4...................
..........=.........2..X.X.0..4....................
.....................2.X.X.0.4.....................
......................2X.X.04......................
.......................X.X.5.......................
.......................X2X40.......................
.................XXXXXXX.X1XXXXXXX.................
.......................X4X20.......................
.......................X.X.3.......................
......................4X.X.02......................
.....................4.X.X.0.2.......c.............
....................4..X.X.0..2....................
...................4...X.X.0...2...................
..................4....X.X00....2..................
.................4...............2.................
0145 .....
... .../.
.0. .-#-.
... .....
0,1 .....
1123 .....
... ..!/.
.0. ..#..
... ..!..
1,0 .....
01 .....
.....
.-#-.
.....
0,1 .....
11 ..... .....
..!.. ..*..
..#.. ..#..
..!.. ..!..
1,0 ..... .....
00 .....
...+.
.-#-.
.....
0,1 .....
10 .....
.+!..
..#..
..!..
1,0 .....
........2................t................6........
........2..............OOOOO..............6........
........2..........OOOO:::::OOOO..........6........
........2........OO:::::::::::::OO........6........
........2......OO:::::::::::::::::OO......6........
........2.....O:::::::::::::::::::::O.....6........
.......02....O:::::::::::::::::::::::O....64.......
......0020..O:::::::::::::::::::::::::O..4644......
11111111X0..O:::::::::::::::::::::::::O..4X77777777
.......00X.O:::::::::::::::::::::::::::O.X44.......
..........XO:::::::::::::::::::::::::::OX..........
..........OX:::::::::::::::::::::::::::XO..........
..........O:X888888:::::::::::::::::::X:O..........
..........O:8X8888:::::::::::::::::::X::O..........
..........O:88X88:::::::::::::::::::X:::O..........
.........O::888X:::::9:::::::::::::X:::::O.........
.........O::888:X:::99::::::::::::X::::::O.........
.........O::88:::X:999:::::::::::X:::::::O.........
.........O::8:::::X999::::::::::X::::::::O.........
.........O:::::::99X99:::::::::X:::::::::O.........
..........O:::::9999X9::::::::X:::::::::O..........
..........O::::999999X:::::::X::::::::::O..........
..........O:::::::::::X:::::X:::::::::::O..........
..........O::XXXXXXXXXXXXXXXXXXXXXXXXX::O..........
...........O:::::::::::::X:::::::::::::O...........
...........O:::::::::::::X:::::::::::::O...........
............O::::::::::::X::::::::::::O............
............O::::::::::::X::::::::::::O............
.............O:::::::::::X:::::::::::O.............
..............O::::::::::X::::::::::O..............
...............OO::::::::X::::::::OO...............
.................OO::::::X::::::OO.................
...................OOOO::X::OOOO...................
.......................OOXOO.......................
4178 .-+.. .-+-. ..+-.
... ..\.. ..\.. ..\..
.0. .-<-. .-<-. .-<-.
... ..... ..... .....
0,0 ..... ..... .....
4179 .-+.. .-+-. ..+-.
..\.. ..\.. ..\..
.->-. .->-. .->-.
..... ..... .....
0,0 ..... ..... .....
4278 .-+.. .-+-. ..+-.
..\.. ..\.. ..\..
.+<-. .+<-. .+<-.
.!... .!... .!...
0,0 ..... ..... .....
4279 .-+.. .-+-. ..+-.
..\.. ..\.. ..\..
.+>-. .+>-. .+>-.
.!... .!... .!...
0,0 ..... ..... .....
5178 .....
... ..!..
.0. ./>..
... ..!..
0,0 .....
1178 .....
... ..!..
.0. ..<\.
... ..!..
1,0 .....
........1.................................3........
........1.................................3........
........1.................................3........
........1.................................3........
........1.................................3........
........1.................................3........
........1.................................3........
........1.................................3........
22222222X.................................X44444444
.........X...............................X.........
..........X.............................X..........
...........X...........................X...........
............X.........................X............
.............X.......................X.............
..............X.....................X..............
...............X...................X...............
................X.................X................
.................X...............X.................
..................X.............X..................
...................X...........X...................
....................X.........X....................
.....................X.......X.....................
......................X.....X......................
.......................X...X.......................
........................X.X........................
.........................X.........................
........................X.X........................
.......................X...X.......................
......................X.....X......................
.....................X.......X.....................
....................X.........X....................
...................X...........X...................
..................X.............X..................
.................X...............X.................
................X.................X................
...............X...................X...............
..............X.....................X..............
.............X.......................X.............
............X.........................X............
...........X...........................X...........
..........X.............................X..........
.........X...............................X.........
66666666X.................................X88888888
........5.................................7........
........5.................................7........
........5.................................7........
........5.................................7........
........5.................................7........
........5.................................7........
........5.................................7........
........5.................................7........
012345678 .....
-.- .*.-.
.0. ..X..
-.- .-.-.
0,0 .....
02468 .....
-.- .-.-.
.0. ..X..
-.- .-.-.
0,0 .....
.................
.................
.................
.................
.................
.................
.................
.................
X................
.X...............
..X..............
...X.............
....X............
...X.X...........
..X...X..........
.X.....X.........
X.......X........
0 .....
... .....
.0. ../..
... .#...
1,1 .....
.................
.............XX..
...........XX....
.........XX......
.......XX........
.....XX..........
...XX............
.XX..............
X..............XX
.................
.................
.................
.................
.................
.................
.................
.................
0 .....
.....
../-.
.....
1,1 .....
3 .....
..!..
..\..
..!..
1,1 .....
.................
.................
.................
.................
.................
.................
.................
.................
.................
XX............XXX
.X............X..
.X...........XXX.
.X........XXX.X..
.X.....XXX....X..
.X..XXX..........
.XXX.............
.................
0 .....
.....
.-\-.
.....
1,1 .....
........X........
........X........
........X........
........X........
........X........
.......1X1.......
......11X11......
.....111X111.....
XXXXXXXXXXXXXXXXX
.....111X111.....
......11X11......
.......1X1.......
........X........
........X........
........X........
........X........
........X........
0 .....
..!..
.-+-.
..!..
1,1 .....
01 .....
..!..
.-*-.
..!..
1,1 .....
........X........
........X........
........X........
........X........
........X........
.......XXX.......
.......XXX.......
.....XXXXXXX.....
XXXXXXXXXXXXXXXXX
.....XXXXXXX.....
.......XXX.......
........X........
.................
.................
.................
.................
.................
0 ..... ..... .....
... ..!.. ..>.. ..<..
.9. .-*-. .-*-. .-*-.
... ..... ..... .....
1,1 ..... ..... .....
3 .....
... ..!..
.0. ..*-.
... ..!..
1,1 .....
2 ..... .....
... ..... .....
.8. .-*-. .-*-.
... ..!.. ..#..
1,1 ..... .....
1 .....
... ..!..
.0. .-*..
... ..!..
1,1 .....
........X........
........X........
........X........
........X........
.......SN........
.......SN........
......S.N........
....SS..N........
XXXXNNNNN........
.................
.................
.................
.................
.................
.................
.................
.................
0 ..... ..... .....
... ..!.. ..!.. ..\..
.8. .-+.. .\+.. .-+..
... ..... ..... .....
1,1 ..... ..... .....
3 .....
... ..!..
.8. ..+-.
... .....
1,1 .....
2 .....
... .....
.8. ..+-.
... ..!..
1,1 .....
1 ..... ..... .....
... ..... ..... .....
.8. .-+.. .-+.. .-+..
... ..!.. ..\.. ..>..
1,1 ..... ..... .....
........X........
........X........
........X........
........X........
........X........
........X........
........X........
........X........
00000000X00000000
........2........
..1111114111111..
........2........
....333343333....
........2........
55555544444555555
...5...5...5...5.
..5...53335...5..
0134 .....
... ..!..
.0. .=!=.
... .....
1,1 .....
0234 .....
... ..#..
.0. .=!=.
... .....
1,1 .....
00 .....
... ..!..
.0. .-!-.
... .....
1,1 .....
0245 .....
... ..#..
.0. .-!-.
... .....
1,1 .....
.................
.................
.................
........w........
.................
.................
.................
.................
XXXXXXXXXXXXXXXXX
.................
.................
.................
.................
........=........
.................
.................
.................
0 ..... ..... .....
... ...#. ...#. .....
.8. ..-#. ..-#. ..-##
... ...#. ..... .....
1,1 ..... ..... .....
6 ..... .....
... .#... .#...
.8. .#-.. .#-..
... .#... .....
1,1 ..... .....
1 ..... ..#..
... .###. ..#..
.8. ..!.. ..!..
... ..... .....
1,1 ..... .....
0 ..... .....
... ..... .....
.0. ..-^^ ..-vv
... ..... .....
l1,1 ..... .....
0_ ..... .....
... ..... .....
.0. ^^-.. vv-..
... ..... .....
1,1 ..... .....
1 ..<.. ..>..
... ..<.. ..>..
.0. ..!.. ..!..
... ..... .....
l1,1 ..... .....
1_ ..... .....
... ..... .....
.0. ..!.. ..!..
... ..<.. ..>..
1,1 ..<.. ..>..
0_ ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....
... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .#... ...#.
.8. .--.. .+-.. .#-.. ./-.. .\-.. ..->. ..-+. ..-#. ..-/. ..-\. ./#-. .@-.. ..-@. .*-.. ..-*. ..--. .#-.. ..-#.
... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .#... ...#.
1,1 ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....
1_ ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....
... ..!.. ..+.. ..!.. ..+.. ..... ..... ..@.. ..... ..+.. ../.. ..\.. ..... ../.. ..*.. .###. ..... ..#..
.8. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!.. ..!..
... ..... ..+.. ..+.. ..... ..+.. ../.. ..... ..@.. ..+.. ..*.. ..*.. ..\.. .-... ..!.. ..... ..#.. .....
1,1 ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .....
1 ..<.. ..>..
... ..<.. ..>..
.0. ..!.. ..!..
... ..... .....
l1,1 ..... .....
1_ ..... .....
... ..... .....
.0. ..!.. ..!..
... ..<.. ..>..
1,1 ..<.. ..>..
........1........
......XXXXX....X.
....XX.....XX.X..
...X.........X...
..X.........X.X..
..X........X..X..
.X........X....X.
.X.......X.....X.
2X......X......X3
.X.....X.......X.
.X....X........X.
..X..X........X..
..X.X.........X..
...X.........X...
..X.XX.....XX....
.X....XXXXX......
........4........
01234 .....
..!..
.-@-.
..!..
1,1 .....
0123 .....
..!..
.-@-.
.....
1,1 .....
0124 .....
..!..
.-@..
..!..
1,1 .....
0134 .....
..!..
..@-.
..!..
1,1 .....
0234 .....
.....
.-@-.
..!..
1,1 .....
012 .....
..!..
.-@..
.....
1,1 .....
013 .....
..!..
..@-.
.....
1,1 .....
014 .....
..!..
..@..
..!..
1,1 .....
023 .....
.....
.-@-.
.....
1,1 .....
024 .....
.....
.-@-.
.....
1,1 .....
01 .....
..!..
..@..
.....
1,1 .....
02 .....
.....
.-@..
.....
1,1 .....
03 .....
.....
..@-.
.....
1,1 .....
04 .....
.....
..@..
..!..
1,1 .....
</var>
<script>
var Ascirc =
function(pattern) {
var cnv = null
, c2d = null
, patterns = ""
, Page = [], max = 0
, pat, part, mask, regexa = ""
, part_x = 0
, part_y = 0
, part_dx = 0
, part_dy = 0
, images = []
, tmp, i, id;
var log = document.getElementsByTagName("span")[0];
var palette = {
"." :0x00FFFFFF
, ":" :0xFFEEEEEE
, "O" :0xFFAAAAAA
, "X" :0xFF000000
};
var flags = {
circle :true // Encircled ("O" or ".")
, flush :true // Flushed (":" or ".")
, rounded :false // Rounded/Sharp("NS" or "X")
};
function draw_part(bmp, x, y, page, mask) {
var ascii, color, lines
, str, ptr, dot = "."
, cx, cy, tmp
, tx = -1, ty = -1, tag = "?"
, vx = -1, vy = -1
, dx, dy, dz
, ex, ey;
lines = page;
dy = lines.length;
dz = (mask >> 10) & 7;
for(cy = 0; cy < dy; ++ cy) {
str = lines[cy];
dx = str.length;
for(cx = 0; cx < dx; ++ cx) {
ascii = str.charAt(cx);
ex = dz & 4 ? (dz & 1 ? dy - cy - 1 : dx - cx - 1) : (dz & 1 ? cy : cx);
ey = dz & 2 ? (dz & 1 ? dx - cx - 1 : dy - cy - 1) : (dz & 1 ? cx : cy);
ptr = ((y + ey + 0) * cnv.width + (x + ex + 0)) * 4;
if(ascii.match(/[NS]/))
ascii = flags.rounded == (ascii == "S") ? "X" : dot;
else
if(ascii.match(/[cdlrstuvw]/)) {
tx = dz & 4 ? (dz & 1 ? dy - cy - 1 : dx - cx - 1) : (dz & 1 ? cy : cx)
, ty = dz & 2 ? (dz & 1 ? dx - cx - 1 : dy - cy - 1) : (dz & 1 ? cx : cy)
, tag = ascii
, ascii = dot;
if(vx < 0 || vy < 0)
vx = dz & 4 ? (dz & 1 ? dy - cy + 7 : dx - cx - 1) : (dz & 1 ? cy + 7 : cx)
, vy = dz & 2 ? (dz & 1 ? dx - cx - 1 : dy - cy + 7) : (dz & 1 ? cx : cy + 7);
} else
if(ascii == '=')
vx = dz & 4 ? (dz & 1 ? dy - cy - 1 : dx - cx - 1) : (dz & 1 ? cy : cx)
, vy = dz & 2 ? (dz & 1 ? dx - cx - 1 : dy - cy - 1) : (dz & 1 ? cx : cy)
, ascii = dot;
else
if(ascii.match(/[0-9]/))
ascii = (mask >> ascii) & 1 ? "X" : dot;
else
if(ascii.match(/[:.]/))
dot = ascii;
color = palette[ascii];
bmp[ptr + 0] = (color >> 8 * 0) & 255,
bmp[ptr + 1] = (color >> 8 * 1) & 255,
bmp[ptr + 2] = (color >> 8 * 2) & 255,
bmp[ptr + 3] = (color >> 8 * 3) & 255;
}
}
return {
tx :tx
, ty :ty
, tz :dz & 4 ? 6 - dz : dz & 3
, tag :tag
, vx :vx
, vy :vy
}
}
cnv = document.createElement("canvas");
cnv.width = 1024, cnv.height = 1024;
c2d = cnv.getContext("2d");
c2d.fillStyle = "#013";
//c2d.fillRect(0, 0, cnv.width, cnv.height);
pix = c2d.getImageData(0, 0, cnv.width, cnv.height);
pat = pattern.split(/\r?\n/);
part = [];
var part_z, part_m;
pat.forEach(
function(str) {
str = str.split(/\t+/);
tmp = str.shift();
if(str.length) {
if(tmp.length) {
if(tmp.match(/^[a-z]?\d+,\d+/)) {
if(tmp.match(/^[a-z]/))
id = tmp.charAt(0),
tmp = tmp.substr(1);
else
id = "";
tmp = tmp.split(",");
part_dx = tmp[0], part_dy = tmp[1];
tmp = draw_part(pix.data, part_x + part_dx * 17, part_y + part_dy * 17, part, mask);
images.push({
x :part_x
, y :part_y
, z :part_z
, m :part_m
, tx :mask & 16384 ? -1 : tmp.tx + part_dx * 17
, ty :mask & 16384 ? -1 : tmp.ty + part_dy * 17
, tz :tmp.tz
, tag :(id + tmp.tag).charAt(0)
, vx :mask & 8192 ? -1 : tmp.vx + part_dx * 17
, vy :mask & 8192 ? -1 : tmp.vy + part_dy * 17
});
part_y += 64;
if(part_y >= cnv.height)
part_x += 64,
part_y = 0;
} else
if(tmp.match(/[-.][0-9-.][-.]/)) {
tmp.replace(/[0-9-.]/g,
function(str) {
if(isFinite(str))
part_z = str;
part_m = part_m * 2 + (str != '-' ? 0 : 1);
});
} else {
tmp = tmp.split("");
mask = ((0x14725630 >> (tmp.shift() << 2)) & 7) << 10;
tmp.forEach(function(pin) {
if(pin.match(/[=_]/))
mask |= 8192 << "=_".indexOf(pin);
else
mask |= 1 << pin;
});
if(regexa.length)
patterns += (patterns.length ? "|" : "") + "(" + regexa.join("|") + ")";
regexa = " ".repeat(str.length - 1).split(" ");
part_m = 0;
part_z = 9;
}
}
for(i in regexa)
regexa[i] += str[i].replace(/([[\\^$|?*+()])/g, "\\$1");
} else
if(tmp.length > 0)
// Build the part image
part.push(tmp);
else
part = [];
});
if(regexa.length)
patterns += (patterns.length ? "|" : "") + "(" + regexa.join("|") + ")";
patterns = new RegExp(patterns, "");
c2d.putImageData(pix, 0, 0);
var tags = [], tops = 0;
Page = document.getElementById("circuit").value;
Page = Page.replace(/^[A-Z][0-9_A-Z-+:;*@/].*$|^\*[A-Z]*[1-9][0-9]+[A-Z_0-9]*-.+$|^.\#[A-Z0-9a-z-\/,]+$/gim, function(s) {
if(s.charAt(0) == "*" || s.charAt(0) == "#") {
letters.chips[s.substr(1).split("-")[0]] = s.substr(s.indexOf("-") + 1);
return "";
} else
if(!tags[s.charAt(0).toUpperCase()])
tags[s.charAt(0).toUpperCase()] = [];
//tags[s.charAt(0).toUpperCase()] = tags[s.charAt(0).toUpperCase()].concat(s.split(","));
tags[s.charAt(0).toUpperCase()] = tags[s.charAt(0).toUpperCase()].concat((s.charAt(0).toUpperCase() != s.charAt(0) ? s.substr(1) : s).split(/\s+/));
-- tops;
return "";
}).split(/\r?\n/);
for(var k in tags)
console.log(k + '\t' + tags[k][8]);
//
function draw_sheet(c2d, Page, values) {
var a, b, c, d, e, i, j, k, m, s, o, v, x, y, z, n, line;
var Pages=[];
Page.unshift("");
Page.unshift("");
Page.push("");
Page.push("");
i = Page.length;
while(i --)
max = (x = Page[i].length) > max ? x : max;
i = Page.length;
while(i --)
Page[i] = " " + (Page[i] + " ".repeat(max + 2)).substr(0, max + 2);
for(n = 0; n < 10; ++ n) {
var counts = {
c :0
, d :0
, l :0
, r :0
, s :0
, t :0
, u :0
, v :0
, w :0
};
var values1 = {
c :"C1:1mf C2:2mf"
, r :"R1:1k R2:2k R3:3k R4:4k R5:5k R6:6k"
, t :"T1:KT315 T2:KT315"
, w :"X1: Y2: Z3: W4:"
};
// Pages.push(Page.join("<br>"));
for(i = 0; i < max; ++ i) {
k = i + 0;
j = Page.length - 3;
x = i * 17;
y = (j - 4) * 17;
while(-- j > 1) {
//try{
e = Page[j - 2];
d = Page[j - 1];
c = Page[j - 0];
b = Page[j + 1];
a = Page[j + 2];
z = (e.substr(k, 5) + d.substr(k, 5) + c.substr(k, 5) + b.substr(k, 5) + a.substr(k, 5));
z = z.match(patterns);
if(z) {
z = z.slice(1).join("\0").replace(/[^\0]+.+$/,"").length-0;
tmp = images[z];
if(tmp.z == n) {
v = (z & 15) * 64, h = ((z >> 4) & 15) * 64;
c2d.drawImage(cnv, h, v, 64, 64, x, y, 64,64);
if((tmp.tag in counts) && tmp.tx >= 0 && tmp.ty >= 0) {
s = ((values[tmp.tag.toUpperCase()] || "")/*.split(/\s+/)*/[counts[tmp.tag.toLowerCase()] ++] || "").split(/:/);
c2d.font = "6pt Courier";
c2d.fillStyle = "#00F";
c2d.save();
c2d.translate(x + tmp.tx, y + tmp.ty);
c2d.rotate(tmp.tz * Math.PI / 2);
c2d.translate(0, 4);
s[0] = s[0].replace("@", "");
over = ""; v = s[0].charAt(0) == s[0].charAt(0).toLowerCase();
s[0] = s[0].replace(/^#/, "");
for(o = 0; o < s[0].length; ++ o) {
if(s[0].charAt(o) == "/") {
v = !v;
if(o)
over += " ";
continue;
}
over += v ? "_" : " ";
}
s[0] = s[0].replace(/^\//, "");
c2d.fillText(over, -c2d.measureText(s[0]).width / 2, -9.5);
c2d.fillText(s[0], -c2d.measureText(s[0]).width / 2, 0);
c2d.restore();
if(tmp.vx >= 0 && tmp.vy >= 0 && s[1]) {
s[1] = s[1].replace("@", "Ω");
c2d.save();
c2d.translate(x + tmp.vx, y + tmp.vy);
c2d.rotate(tmp.tz * Math.PI / 2);
c2d.translate(0, 4);
c2d.fillText(s[1], -c2d.measureText(s[1]).width / 2, -0.5);
c2d.restore();
}
}
m = tmp.m;
for(v = 2; v >= 0; -- v) for(h = 2; h >= 0; -- h, m >>= 1) {
var hh=1;
z = j - 1 + v;
if(m & 1)
Page[z] = Page[z].substr(0, k + h + hh) + "?" + Page[z].substr(k + h + 1 + hh);
}
}
}
//}catch(e){}
y -= 17;
}
}
// document.getElementById("logo").innerHTML = Pages.join("<hr>");
}
}
var sht = document.getElementById("Circuit");
var s2d = sht.getContext("2d");
draw_sheet(s2d, Page, tags);
//
document.body.appendChild(cnv);
}
Ascirc(document.getElementById("Parts").textContent);
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment