DIRECTORY DoradoBoard ; Fluke: CEDAR PROGRAM EXPORTS DoradoBoard = BEGIN OPEN DoradoBoard; scanCard: TYPE = [0..57]; pin: TYPE = [0..128]; rowType: TYPE = [0..11]; bMiny: INTEGER = 1310; --minimum y in main pattern bMaxy: INTEGER = 14410; bMinx: INTEGER = 4050; --minimum x in main pattern bMaxx: INTEGER = 16150; MaxRows: INTEGER= (bMaxy - bMiny)/50; maxX: INTEGER = (bMaxx - bMinx)/50; rowDesc: TYPE = RECORD[ sc: scanCard, p: pin, rt: rowType]; X: rowDesc = [0,0,0]; --no legal row at this y coordinate rowRef: TYPE = REF Rows; Rows: TYPE = ARRAY[0..MaxRows] OF rowDesc _ [ [01,01,10],X,[01,93,10],X,X, [02,057,1],X,X,X,X,X,[03,037,2],X,X,[04,025,3],X,X,[04,128,4],X,X,X,X,X,[05,117,11],X,X, [06,105,1],X,X,X,X,X,[07,085,2],X,X,[08,073,3],X,X,[09,048,4],X,X,X,X,X,[10,037,11],X,X, [11,025,1],X,X,X,X,X,[12,005,2],X,X,[12,121,3],X,X,[13,096,4],X,X,X,X,X,[14,085,11],X,X, [15,073,1],X,X,X,X,X,[16,053,2],X,X,[17,041,3],X,X,[18,016,4],X,X,X,X,X,[19,005,11],X,X, [19,121,1],X,X,X,X,X,[20,101,2],X,X,[21,089,3],X,X,[22,064,4],X,X,X,X,X,[23,053,11],X,X, [24,041,1],X,X,X,X,X,[25,021,2],X,X,[26,009,3],X,X,[26,112,4],X,X,X,X,X,[27,101,11],X,X, [28,089,1],X,X,X,X,X,[29,069,2],X,X,[30,057,3],X,X,[31,032,4],X,X,X,X,X,[32,021,11],X,X, [33,009,1],X,[33,117,5],X,X,X,[34,037,2],X,X,[35,025,3],X,X,[35,128,4],X,[36,117,5],X,X,X,[37,037,11],X,X, [38,025,1],X,X,X,X,X,[39,005,2],X,X,[39,121,3],X,X,[40,096,4],X,X,X,X,X,[41,085,11],X,X, [42,073,6],X,X,X,X,X,[43,055,2],X,X,[44,043,7],X,X,[45,020,4],X,X,X,X,X,[46,009,11],X,X, [46,125,8],X,X,X,X,X,[47,111,2],X,X,[48,099,9],X,X,[49,081,4],X,X,X,X,X,[50,069,11],X,X, [51,057,1],X,X,X,X,X,[52,037,2],X,X,[53,025,3],X,X,[53,128,4],X,X,X,X,X,[54,117,11],X,X, X,X,X,[55,105,10],X,[56,69,10] ]; chan: TYPE = INTEGER; --probe channel within a row+1 (or zero if there is no probe at that x. probe: TYPE = ARRAY [0..maxX] OF chan; --index with x/50 to get channel number+1, or 0 if there --is no probe at that x. probeRef: TYPE = REF probe; probeArray: TYPE = ARRAY rowType OF probeRef; pArray: probeArray _ [ NIL, --there really isn't a row type 0 NEW[probe _ [ 0, 0,-5,108,-1,107,0,106,0,105,0, 104,0,103,0,102,0,101,0,100,0, 99,0,0,0,98,0,97,0,96,0, 95,0,94,0,93,0,92,0,91,0, 0,0,90,0,89,0,88,0,87,0, 86,0,85,0,84,-1,83,-5,82,-1, 81,0,80,0,79,0,78,0,77,0, 76,0,75,0,74,0,73,0,0,0, 72,0,71,0,70,0,69,0,68,0, 67,0,66,0,65,0,0,0,64,0, 63,0,62,0,61,0,60,0,59,0, 58,-1,57,-5,56,-1,55,0,0,0, 0,0,0,0,-5,54,-1,53,0,52, 0,51,0,50,0,49,0,48,0,47, 0,46,0,45,0,0,0,44,0,43, 0,42,0,41,0,40,0,39,0,38, 0,37,0,0,0,36,0,35,0,34, 0,33,0,32,0,31,0,30,-1,29, -5,28,-1,27,0,26,0,25,0,24, 0,23,0,22,0,21,0,20,0,19, 0,0,0,18,0,17,0,16,0,15, 0,14,0,13,0,12,0,11,0,0, 0,10,0,9,0,8,0,7,0,6, 0,5,0,4,-1,3,-5,2,-1,1, 0,0]], --type 1 row NEW[probe _ [ 0, 0,-1,116,-2,115,0,114,0,113,0, 112,0,111,0,110,0,109,0,108,0, 107,-4,106,-2,105,0,104,0,103,0, 102,0,101,0,100,0,99,0,98,-4, 97,-2,96,0,95,0,94,0,93,0, 92,0,91,0,90,0,89,-1,88,-2, 87,0,86,0,85,0,84,0,83,0, 82,0,81,0,80,0,79,-4,78,-2, 77,0,76,0,75,0,74,0,73,0, 72,0,71,0,70,-4,69,-2,68,0, 67,0,66,0,65,0,64,0,63,0, 62,0,61,-1,60,-2,59,0,0,0, 0,0,0,0,-1,58,-2,57,0,56, 0,55,0,54,0,53,0,52,0,51, 0,50,0,49,-4,48,-2,47,0,46, 0,45,0,44,0,43,0,42,0,41, 0,40,-4,39,-2,38,0,37,0,36, 0,35,0,34,0,33,0,32,0,31, -1,30,-2,29,0,28,0,27,0,26, 0,25,0,24,0,23,0,22,0,21, -4,20,-2,19,0,18,0,17,0,16, 0,15,0,14,0,13,0,12,-4,11, -2,10,0,9,0,8,0,7,0,6, 0,5,0,4,0,3,-1,2,-2,1, 0,0]], --type 2 row NEW[probe _ [ -4, 103,0,0,-3,102,0,101,0,100,0, 99,0,98,0,97,0,96,0,95,0, 94,0,0,0,93,0,92,0,91,0, 90,0,89,0,88,0,87,0,86,0, 0,0,85,0,84,0,83,0,82,0, 81,0,80,0,79,-4,78,0,0,-3, 77,0,76,0,75,0,74,0,73,0, 72,0,71,0,70,0,69,0,0,0, 68,0,67,0,66,0,65,0,64,0, 63,0,62,0,61,0,0,0,60,0, 59,0,58,0,57,0,56,0,55,0, 54,-4,53,0,0,-3,52,0,0,0, 0,0,0,0,0,0,-3,51,0,50, 0,49,0,48,0,47,0,46,0,45, 0,44,0,43,0,0,0,42,0,41, 0,40,0,39,0,38,0,37,0,36, 0,35,0,0,0,34,0,33,0,32, 0,31,0,30,0,29,0,28,-4,27, 0,0,-3,26,0,25,0,24,0,23, 0,22,0,21,0,20,0,19,0,18, 0,0,0,17,0,16,0,15,0,14, 0,13,0,12,0,11,0,10,0,0, 0,9,0,8,0,7,0,6,0,5, 0,4,0,3,-4,2,0,0,-3,1, 0,0]], --type 3 row NEW[probe _ [ 0, 0,-1,117,0,116,0,115,0,114,0, 113,0,112,0,111,0,110,0,109,0, 108,-1,107,0,106,0,105,0,104,0, 103,0,102,0,101,0,100,-1,99,-1, 98,0,97,0,96,0,95,0,94,0, 93,0,92,0,91,0,90,-1,89,0, 88,0,87,0,86,0,85,0,84,0, 83,0,82,0,81,0,80,-1,79,0, 78,0,77,0,76,0,75,0,74,0, 73,0,72,-1,71,-1,70,0,69,0, 68,0,67,0,66,0,65,0,64,0, 63,0,62,-1,61,0,60,0,0,0, 0,0,0,0,-1,59,0,58,0,57, 0,56,0,55,0,54,0,53,0,52, 0,51,0,50,-1,49,0,48,0,47, 0,46,0,45,0,44,0,43,0,42, -1,41,-1,40,0,39,0,38,0,37, 0,36,0,35,0,34,0,33,0,32, -1,31,0,30,0,29,0,28,0,27, 0,26,0,25,0,24,0,23,0,22, -1,21,0,20,0,19,0,18,0,17, 0,16,0,15,0,14,-1,13,-1,12, 0,11,0,10,0,9,0,8,0,7, 0,6,0,5,0,4,-1,3,0,2, 0,1]], --type 4 row NEW[probe _ [ 0, 0,0,0,0,0,0,48,0,47,0, 46,0,45,0,44,0,43,0,42,0, 41,0,40,0,39,0,38,0,37,0, 0,0,0,0,36,0,35,0,34,0, 33,0,32,0,31,0,30,0,29,0, 28,0,27,0,26,0,25,0,0,0, 0,0,24,0,23,0,22,0,21,0, 20,0,19,0,18,0,17,0,16,0, 15,0,14,0,13,0,0,0,0,0, 12,0,11,0,10,0,9,0,8,0, 7,0,6,0,5,0,4,0,3,0, 2,0,1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0]], --type 5 row NEW[probe _ [ 0, 0,-5,110,-1,109,0,108,0,107,0, 106,0,105,0,104,0,103,0,102,0, 101,0,100,0,99,0,98,0,97,0, 96,0,95,0,94,0,93,0,92,0, 91,0,90,0,89,0,88,0,87,0, 86,0,85,0,84,-1,83,-5,82,-1, 81,0,80,0,79,0,78,0,77,0, 76,0,75,0,74,0,73,0,0,0, 72,0,71,0,70,0,69,0,68,0, 67,0,66,0,65,0,0,0,64,0, 63,0,62,0,61,0,60,0,59,0, 58,-1,57,-5,56,-1,55,0,0,0, 0,0,0,0,-5,54,-1,53,0,52, 0,51,0,50,0,49,0,48,0,47, 0,46,0,45,0,0,0,44,0,43, 0,42,0,41,0,40,0,39,0,38, 0,37,0,0,0,36,0,35,0,34, 0,33,0,32,0,31,0,30,-1,29, -5,28,-1,27,0,26,0,25,0,24, 0,23,0,22,0,21,0,20,0,19, 0,0,0,18,0,17,0,16,0,15, 0,14,0,13,0,12,0,11,0,0, 0,10,0,9,0,8,0,7,0,6, 0,5,0,4,-1,3,-5,2,-1,1, 0,0]], --type 6 row NEW[probe _ [ -4, 105,0,0,-3,104,0,103,0,102,0, 101,0,100,0,99,0,98,0,97,0, 96,0,95,0,94,0,93,0,92,0, 91,0,90,0,89,0,88,0,87,0, 86,0,85,0,84,0,83,0,82,0, 81,0,80,0,79,-4,78,0,0,-3, 77,0,76,0,75,0,74,0,73,0, 72,0,71,0,70,0,69,0,0,0, 68,0,67,0,66,0,65,0,64,0, 63,0,62,0,61,0,0,0,60,0, 59,0,58,0,57,0,56,0,55,0, 54,-4,53,0,0,-3,52,0,0,0, 0,0,0,0,0,0,-3,51,0,50, 0,49,0,48,0,47,0,46,0,45, 0,44,0,43,0,0,0,42,0,41, 0,40,0,39,0,38,0,37,0,36, 0,35,0,0,0,34,0,33,0,32, 0,31,0,30,0,29,0,28,-4,27, 0,0,-3,26,0,25,0,24,0,23, 0,22,0,21,0,20,0,19,0,18, 0,0,0,17,0,16,0,15,0,14, 0,13,0,12,0,11,0,10,0,0, 0,9,0,8,0,7,0,6,0,5, 0,4,0,3,-4,2,0,0,-3,1, 0,0]], --type 7 row NEW[probe _ [ 0, 0,-5,114,-1,113,0,112,0,111,0, 110,0,109,0,108,0,107,0,106,0, 105,0,104,0,103,0,102,0,101,0, 100,0,99,0,98,0,97,0,96,0, 95,0,94,0,93,0,92,0,91,0, 90,0,89,0,88,-1,87,-5,86,-1, 85,0,84,0,83,0,82,0,81,0, 80,0,79,0,78,0,77,0,76,0, 75,0,74,0,73,0,72,0,71,0, 70,0,69,0,68,0,67,0,66,0, 65,0,64,0,63,0,62,0,61,0, 60,-1,59,-5,58,-1,57,0,0,0, 0,0,0,0,-5,56,-1,55,0,54, 0,53,0,52,0,51,0,50,0,49, 0,48,0,47,0,46,0,45,0,44, 0,43,0,42,0,41,0,40,0,39, 0,38,0,37,0,36,0,35,0,34, 0,33,0,32,0,31,0,30,-1,29, -5,28,-1,27,0,26,0,25,0,24, 0,23,0,22,0,21,0,20,0,19, 0,0,0,18,0,17,0,16,0,15, 0,14,0,13,0,12,0,11,0,0, 0,10,0,9,0,8,0,7,0,6, 0,5,0,4,-1,3,-5,2,-1,1, 0,0]], --type 8 row NEW[probe _ [ -4, 109,0,0,-3,108,0,107,0,106,0, 105,0,104,0,103,0,102,0,101,0, 100,0,99,0,98,0,97,0,96,0, 95,0,94,0,93,0,92,0,91,0, 90,0,89,0,88,0,87,0,86,0, 85,0,84,0,83,-4,82,0,0,-3, 81,0,80,0,79,0,78,0,77,0, 76,0,75,0,74,0,73,0,72,0, 71,0,70,0,69,0,68,0,67,0, 66,0,65,0,64,0,63,0,62,0, 61,0,60,0,59,0,58,0,57,0, 56,-4,55,0,0,-3,54,0,0,0, 0,0,0,0,0,0,-3,53,0,52, 0,51,0,50,0,49,0,48,0,47, 0,46,0,45,0,44,0,43,0,42, 0,41,0,40,0,39,0,38,0,37, 0,36,0,35,0,34,0,33,0,32, 0,31,0,30,0,29,0,28,-4,27, 0,0,-3,26,0,25,0,24,0,23, 0,22,0,21,0,20,0,19,0,18, 0,0,0,17,0,16,0,15,0,14, 0,13,0,12,0,11,0,10,0,0, 0,9,0,8,0,7,0,6,0,5, 0,4,0,3,-4,2,0,0,-3,1, 0,0]], --type 9 row NEW[probe _ [ 0, 0,0,0,0,0,0,0,0,0,0,0,0,0, 92,0,91,0,0,90,0,89,0,0, 88,0,87,0,0,86,0,85,0,0, 84,0,83,0,0,82,0,81,0,0, 80,0,79,0,0,78,0,77,0,0, 76,0,75,0,0,74,0,73,0,0, 72,0,71,0,0,70,0,69,0,0, 68,0,67,0,0,66,0,65,0,0, 64,0,63,0,0,62,0,61,0,0, 60,0,59,0,0,58,0,57,0,0, 56,0,55,0,0,54,0,53,0,0, 52,0,51,0,0,50,0,49,0,0, 48,0,47,0,0,46,0,45,0,0, 44,0,43,0,0,42,0,41,0,0, 40,0,39,0,0,38,0,37,0,0, 36,0,35,0,0,34,0,33,0,0, 32,0,31,0,0,30,0,29,0,0, 28,0,27,0,0,26,0,25,0,0, 24,0,23,0,0,22,0,21,0,0, 20,0,19,0,0,18,0,17,0,0, 16,0,15,0,0,14,0,13,0,0, 12,0,11,0,0,10,0,09,0,0, 08,0,07,0,0,06,0,05,0,0, 04,0,03,0,0,02,0,01,0]],--type 10 row NEW[probe _ [ 0, 0,0,116,-2,115,0,114,0,113,0, 112,0,111,0,110,0,109,0,108,0, 107,-1,106,-2,105,0,104,0,103,0, 102,0,101,0,100,0,99,0,98,-1, 97,-2,96,0,95,0,94,0,93,0, 92,0,91,0,90,0,89,0,88,-2, 87,0,86,0,85,0,84,0,83,0, 82,0,81,0,80,0,79,-1,78,-2, 77,0,76,0,75,0,74,0,73,0, 72,0,71,0,70,-1,69,-2,68,0, 67,0,66,0,65,0,64,0,63,0, 62,0,61,0,60,-2,59,0,0,0, 0,0,0,0,0,58,-2,57,0,56, 0,55,0,54,0,53,0,52,0,51, 0,50,0,49,-1,48,-2,47,0,46, 0,45,0,44,0,43,0,42,0,41, 0,40,-1,39,-2,38,0,37,0,36, 0,35,0,34,0,33,0,32,0,31, 0,30,-2,29,0,28,0,27,0,26, 0,25,0,24,0,23,0,22,0,21, -1,20,-2,19,0,18,0,17,0,16, 0,15,0,14,0,13,0,12,-1,11, -2,10,0,9,0,8,0,7,0,6, 0,5,0,4,0,3,0,2,-2,1, 0,0]] --type 11 row ]; cardRows: rowRef _ NEW[Rows]; ASItoFluke: PUBLIC PROC[x,y: INTEGER] RETURNS [pt: PadType _ [noProbe,0]] = TRUSTED BEGIN rd: rowDesc; ch: INTEGER; IF ybMaxy THEN RETURN; IF xbMaxx THEN SELECT y FROM --The power pins at the corners of the board are handled --as a special case, since several pins on the board are considered connected --and are probed by a single probe. 1310 => { SELECT x FROM 4000 => RETURN[pt _[vee,7203]]; 16350 => RETURN[pt _[vcc,7202]]; ENDCASE => RETURN}; 14410 => { SELECT x FROM 4000 => RETURN[pt _[vtt,7200]]; 16350 => RETURN[pt _[vdd,7201]]; ENDCASE => RETURN}; ENDCASE => RETURN; y _ y-bMiny; IF y MOD 50 # 0 THEN RETURN; --not on 50 mil grid y _ y/50; x _ x - bMinx; IF x MOD 50 # 0 THEN RETURN; x _ x/50; rd _ cardRows[y]; IF rd.rt = 0 THEN RETURN; ch _ pArray[rd.rt][x]; IF ch = 0 THEN RETURN; pt.n _ ch + rd.p + 128*(rd.sc-1) - 2; --the -2 is because both ch and rd.p are 1-origined pt.t _ SELECT pArray[rd.rt][x-1] FROM 0 => signal, -1 => gnd, -2 => vee, -3 => vdd, -4 => vtt, -5 => vcc, ENDCASE => noProbe; END; END. Κ%˜IprocšωœΟk œœœœœœœœœœ Οcœ œœ žœ œœœ%œœ(œž$œ œœœœ œœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœ œœœ œœ œœ œ œœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœœœœœœ œœ œœ œœœœœ œœ œœœ œœœžHœœœ œž:œžœ œœœœ œ*œž"œœΧž œœσž œœΙž œœμž œœƒž œœάž œœΝž œœδž œœΥž œœ±žœœμž œ"œ Οn œœœœœ"œœœœ œ œœœ œ œœœž9œžNœž$œœœœ"œœœœœœ"œœœœœœœœœžœ"œœœœ%œ œœœœœ*ž4œ œœ[œœ œ˜[—…—-’2½