1
0
mirror of https://github.com/rricharz/Tek4010.git synced 2026-01-13 15:27:31 +00:00

demo added

This commit is contained in:
¨Rene Richarz 2019-04-02 13:06:14 +02:00
parent 0799b327d3
commit 8c1e87a4aa
17 changed files with 72 additions and 30 deletions

View File

@ -1,4 +1,4 @@
# Tektronix 4010 Emulator
# Tektronix 4010 Terminal Emulator
This is a [Tektronix 4010](https://en.wikipedia.org/wiki/Tektronix_4010) terminal emulator
for the Raspberry Pi.
@ -54,12 +54,12 @@ If you want to test text output, type for example
./tek4010 head -n 32 tek4010.c -noexit
Don't forget the LAST argument "-noexit", which tells
tek4010 to stay alive after cat has finished so that you have a chance to look at the output.
By the way, the "-noexit" as the last argument might also be helpful if you want to
experiment with other commands. Let me know if you find anything which works and makes sense.
Because tek4010 pipes from stdout of that program and into stdin of that program, some
programs will not work.
Don't forget the LAST argument "-noexit", which tells tek4010 to stay alive after cat or
head has finished so that you have a chance to look at the output.
If you want to see a demo of historical Tektronix 4014 plot files, type
./tek4010 ./demo.sh
The emulator does use "rsh" or "telnet", because historical Unix systems do not support
the secure ssh protocol, and because ssh does not allow using a virtual emulator such as tek4010
@ -198,9 +198,9 @@ Pack it with zip or something else to make sure that the mailing program does no
**Screen resolution**
This tek4010 emulator creates a graphics window of 1024x768 points, which is the display size
of the Tektronix 4010 terminal according to the manual from Tektronix. Some sources claim
that actual terminals could display up to 780 points vertically. The Raspberry Pi can handle
This tek4010 emulator creates a graphics window of 1024x780 points, which is the display size
of the Tektronix 4010 terminaland the Tektronix 4014 terminal without enhanced graphics module.
The Raspberry Pi can handle
sufficiently high refresh rates at this resolution. This emulator makes an attempt to filter
Tektronix 4014 graphics code with the enhanced graphics module installed, so that such
graphics codes can be displayed using this terminal emulator, but the lowest two bits of

21
demo.sh Executable file
View File

@ -0,0 +1,21 @@
#!/bin/bash
# rricharz 2019
for filename in pltfiles/*.plt
do
# erase screen
printf '\033\014'
echo tek4010 is displaying "$filename"
cat "$filename"
# let tek4010 wait 5 seconds (not this script, which just shuffles stuff into the buffer!)
for i in {1..100}
do
printf '\007'
done
done

1
pltfiles/barchart.plt Normal file
View File

@ -0,0 +1 @@
7 @&y&T#}@}'H&yHy&@#}@$q@@#}T%e@@#}'H%y&@@$q'H&m&@@%e'HH&y&H%y'HH&y&\m'H#}&@}'_})G-sGs'_#}_$q__#}(S%e'__#})G%y'__$q)G&m'__%e)G'a'__%y)G'u'__&m)G(i'__'a)G(}'__'u)G)q'__(i)G*e'__(})G*y'__)q)G+m'__*e)G,a'__*y)G,u'__+m)G-i'__,a)GG-s(I,u)GG-s(]i)G#}'_})]}+E({E{)]#}]$q]]#}*Q%e)]]#}+E%y)]]$q+E&m)]]%e+E'a)]]%y+E'u)]]&m+E(i)]]'a+EE({)_'u+EE({*Si+E#})]}+\}-D0D}+\#\$q\\#},P%e+\\#}-D%y+\\$q-D&m+\\%e-D'a+\\%y-D'u+\\&m-D(i+\\'a-D(}+\\'u-D)q+\\(i-D*e+\\(}-D*y+\\)q-D+m+\\*e-D,a+\\*y-D,u+\\+m-D-i+\\,a-D-}+\\,u-D.q+\\-i-D/e+\\-}-D/y+\\.q-F0m+\\/e-DD0},@/y-DD0},Tm-D#}+\}-Z}/B-sBs-Z#}Z$qZZ#}.N%e-ZZ#}/B%y-ZZ$q/B&m-ZZ%e/B'a-ZZ%y/B'u-ZZ&m/B(i-ZZ'a/B(}-ZZ'u/B)q-ZZ(i/B*e-ZZ(}/B*y-ZZ)q/B+m-ZZ*e/B,a-ZZ*y/B,u-ZZ+m/B-i-ZZ,a/BB-s.D,u/BB-s.Xi/B#}-Z}/Y}1A*`A`/Y#}Y$qYY#}0M%e/YY#}1A%y/YY$q1A&m/YY%e1A'a/YY%y1A'u/YY&m1A(i/YY'a1A(}/YY'u1A)q/YY(i1AA*`/^(}1AA*`0R)q1A#}/Y}1W}2_(e_e1W#}W$qWW#}2K%e1WW#}2_%y1WW$q2_&m1WW%e2_'a1WW%y2_'u1WW&m2__(e1['a2__(eO'u_#}1W}3V}4^,a^a3V#}V$qVV#}4J%e3VV#}4^%y3VV$q4^&m3VV%e4^'a3VV%y4^'u3VV&m4^(i3VV'a4^(}3VV'u4^)q3VV(i4^*e3VV(}4^*y3VV)q4^+m3VV*e4^,a3VV*y4^^,aJ+m^#}3V}5T}6\.v\v5T#}T$qTT#}6H%e5TT#}6\%y5TT$q6\&m5TT%e6\'a5TT%y6\'u5TT&m6\(i5TT'a6\(}5TT'u6\)q5TT(i6\*e5TT(}6\*y5TT)q6\+m5TT*e6\,a5TT*y6\,u5TT+m6\-i5TT,a6\-}5TT,u6\.q5TT-i6\\.vC-}\\.vWq\#}5T}7S}8[2q[q7S#}S$qSS#}8G%e7SS#}8[%y7SS$q8[&m7SS%e8['a7SS%y8['u7SS&m8[(i7SS'a8[(}7SS'u8[)q7SS(i8[*e7SS(}8[*y7SS)q8[+m7SS*e8[,a7SS*y8[,u7SS+m8[-i7SS,a8[-}7SS,u8[.q7SS-i8[/e7SS-}8[/y7SS.q8[0m7SS/e8[1a7SS/y8[1u7SS0m8[2i7SS1a8[[2q7_1u8[[2qSi[#}7S}9Q}:Y/yYy9Q#}Q$qQQ#}:E%e9QQ#}:Y%y9QQ$q:Y&m9QQ%e:Y'a9QQ%y:Y'u9QQ&m:Y(i9QQ'a:Y(}9QQ'u:Y)q9QQ(i:Y*e9QQ(}:Y*y9QQ)q:Y+m9QQ*e:Y,a9QQ*y:Y,u9QQ+m:Y-i9QQ,a:Y-}9QQ,u:Y.q9QQ-i:Y/e9QQ-}:Y/y9QQ.q:YY/yEeY#}9Q};P}<D-|D|;P#}P$qPP#}<D%e;PP$q<D%y;PPe<D&m;PP%y<D'a;PP&m<D'u;PPa<D(i;PP'u<D(};PPi<D)q;PP(}<D*e;PP)q<D*y;PPe<D+m;PP*y<D,a;PP+m<D,u;PPa<D-i;PP,u<DD-|;Qi<D#};P5|$V#}VB}<D&d$LV(lBl<D*t$LV,|B|<D/d$LV1lBl<D3t$LV5|B|<D#}$V}<D"t$Q0"t(N2"t,K4"t0H6"t4E8"t7[10"t;X12#v"U200(e"U400,u"U6001e"U8005u"G1000

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
pltfiles/usmap.tek Normal file

Binary file not shown.

BIN
pltfiles/warandpeace.plt Normal file

Binary file not shown.

1
pltfiles/wizard.plt Normal file
View File

@ -0,0 +1 @@
h e G7yGy=T eTe G"l!Xl"G[l0Xw1HpW#b^"x2E{R#fU$`GpG|Qq]cP#|Y$`3BiFoLpXgY#{Es2_m3CnNeL"{2_u3JV#d4@n3YyXv4HnMvV$cUmYl5S#yUuK"|@{O#v^w6RiOdZ$gZ`7MsI%g6QsSk7@tG&aDt_i8L%x7[kZv8OkU$xBoJg7^b8S}]%p9Wc_$zWmBdDSo[u:OkShGb;@#vCs:Yy9[qUi^m;Ii<@"nLl;Z|:\{IeQfD|9_#aJsIz8]oNa["w\FtBoKpYf9F!vF8O"oBx7MfIaCw6ZyGkGhAt5JoDx4NlJj5CbH!{6ArKp5\xJ~3_"jYlLfF!yGr2_yY"pXrL!~E"f1@l0Yl-\p.G|T#lOo-]l,\`["n-Xl\l'HoSyZ#fWmLm&NdB"yFl'H#d&_bT"|Ww_{'F#aFd&^s%Fs._f-XeP"M{U^#a.Bf-X%m&XgC$m%R#~]|'Z|+Y$sTt\z,@%a+\bPiOwP{X{,IoFo+_iY$p,FfA#~Dz/Ai^e0Sl1EvK$sN|H~Az0]lYg^l1AvAqEiH#wDu0^zW%f/ZmEk.V$~-PxIt,^xZ|Z%`-IfQjPnMBsBzF&`Fu/U0D'|^(d2Gm1ZoHs0\|L)}/I*nA}GUx0Gc1F)pV*sMlV)}2C~G*oBe3AgFlE}2@w3JxO}N+dGi2Bn1\r2En3JqOvJ}2Qz1V,`Rx^-a_dW,~OcEp/M-sMqRiTeVnW{U.tLgY-{[v^w0B.`Cx/]/cV{.\yO2b-TtVj.\j/ErI4f,QgJbA3v+Y0n*RaQ/NtPrKsHyDoCs)XlZhXRc*@.y)^hF-q(\,|ZtXqPd'SJ`F+&X/kAgGaLcRkPlG{%^0b&JRfSlLdAm%VwU|V1cK0~IwOmPdLCf$^iZbX/}\0`_/w%InHjKeLfH.~EyKO}P/gT+&Ls%VmRfTi&Ta%Z*{XxZw_x&I+a[*xOv%\nZj]k&EsPkGeJcPn]eR)|Xm]p'D*fAs])y(Ub]d)A*a(^o)EsJtO(kQ%g*TkLjGbG$|KzTq_pZsM%e)Ef(H`'W$|MuDo&NsEyB}C%`G$~N%gYmXw+Jt*[iZ`+KvH},SgRm[_S'g0LjYqUk\o1Dy0\p1EqM~IwQyV(`T'{W_(b^'h0D}C(h/]nJm.WhObPe/@'|PpUgT&~E.]'fPbO&yVt/@]'g0C(p1E`0Wk[jHrOx/Z)`PiNcT(~^~0K)`-\h.F({R)iPm[p]qR*aM)vFx-ZvZo.B(-\*p.V+aWa/Dl.WyXpRyGfK`-^*|.E+aP*}RtSpV+v/[u0L,bQ+wUz^qY*}\+fT*}J+hHv/[,sMdHfEpEzC+}.TR,sT+~IyA,cBjBb-\+wXvU,`O+mL*wP+z,Y*Ye-Kl,_+mA*|BbJ{+T+nK*J+r*Y*v^+lI,l)\`Z+h*@)K,zEgEhAu(Y.`)D-zEwJw*^z+Rn-MrVzY.eVgZeMp.Z-z/GqEn.\sGkAdAd-ZgTeQaTeIk,_i\`\,}\-jH`Dj+T,yS-dGC,xBw*_}Y-dXfT,|Q-mH,}E-a)\n[gImE|B.rVmShVe^g*Nd+Oe,@cHlOtM}+\/kSpNsR0`N/wWx\0a[/x,D0`I/wLS|YuZ_}-DrDwQnQk^gOj,[aW.zFA/h@jFeI.~EA{*AZ/h^x[rXuPgGcDaIeKgG0l+KwTn_yX1c,A`+UpN`N0*]z+LlK1gHqB2mLk[c,F1xMtLIzB|+RvJmHgH3a,EeQ2|W3gUl\nVvUrNuEmJcEh-F2sViOm,Sr.GzMoO/{Jt-^o.@nOgE.RxW\pZSmMhKcOT,h(W+zO}'[r(JdCjO*}X+pXw)Gy(U,jW*o*PcIg)_)}*GmEuMgUlZzU*a]TnPc,V)yOzArJcEiQ`WlZt-Cy,Y*cV(k+]qPoAh*U'{NlMaT&z^u+Sw]'a,B&+Y'dEn*^x_(d+Rf]k]d-L'qFn,[g-C&v,_'a-H&uS'dOp\M(dL*s']+lN,`Fc1B+wFpD*oO#s%EzEz.Ww_s]&u/Uu2V(dGd5T-a1_a3T/{.\y3[4f,Rf/H1c%Kc)K2r/Ir3P%m&Xm)[&u3Tu4I ` @

8
pltfiles/wizidd.plt Normal file
View File

@ -0,0 +1,8 @@
`7l @ Tektronix 4010/PDP11 Graphic Editor
*lw%D+pC,tE-xL.zX/z&F0xZ1t'R2k(L3`)Jp*H|+J4c,Me-Pc.T3{/Tp0V`1V2m2S1u3NiXeFjB2`2Ir1N3b0Qm/Ps.Qu-Pt,Om+Na*N2q)P1(Vi'\0oF/r&S.tE-t%Z,rT+pRaS%u'_a(V$n)R#*Pt+On,Qk-Rn.Ru/S$a0Rp1Q%c2Ly3E&rZ'o4L(m[)n5G*oL+rN,cMd[+q]*mZ)iT(gI'g4Y&iE%o3O$w2Ub1X#r0Xf/W".T}-R,O#f+Kq*J$a)Kv(M%k'T1h3SrJ2h2P{1U3k0Vw/T~.S4`-Q3~,Nw+Kk*K2{)Mh(P1q'V0u&_/wK.x%]-vR,sJ+pH*zI~O+pN,tO-uW.v&A/tP0r'C1mZ2c(Sw)O3g*Mr+My,Oz-Qx.Rr/Rf0S2x1Re2M1m3GfM,c5S+qT*nR)mL(k@'l4R&o3_%uI$~2Ok1T#}0Up/Ui.Se-Sg,Rn+Nz*O$g)Q}(T%r'\oX$z(Qd)N#u*Mi+Nc,Pa-Sd.Tj/Wv0W$g1Wz2P%r3L&l4C'iV(j5F)P*mW+qY,dX~%G.}"T/gLwL1~Y4m#RuXw$A5h&Nr)@oG3v*YqO5f(^4}&Pk$Dh#^1{D/t"Xj\-l%J/d#Sq"_1y#K3iY2z$K/d#S3c$Nr#\4`$BcJ3uXcNw%E4h$T5a(V4n)I3w%E0v&Y2m$X}[1`'BlK3m%HpV1s'R'g4Y%l6[d_${_v7DqDn@iAa6\#xZvSlQiGaFc5]"|[~SzQJ~Ez@|4W$w2Uh7Bf6\`\%d3E#~4P$kV%l3N&s4M%n5Uv6E'`4U"~5E#g4]m[p5@z@}G$fGiMsPtW~\~6C%eGcNgReQY${_%eYmWoQKj@$u5H#x4WkUdWe5AaKiAlDeMaKkNuCyFqPkNwT~J$dL#|WwT$d\lRpUh_d\m6Fu5\{6@qImFuO}G%aK$xSuOyZ%`QbV$z^yZ#rB{@$cGdN#O{FuJrBr2Vq_n3IiSdZ"}_s4DiF!GuFkDa3_ zZuSqIm2_lVmLqBu1XzR!aMkIuED"iEsI}M#dRiXn2BqLrV!cA"{A]z3AxFtJlKfJcF!B|FxJqLcLc2_p_s^x]zZLcLA"LrLZp^l_g^cZL#kVj_f3IbQ"{Xs\i4@!Au@k3\cX ~QzIv2_uVvLzB~1Z!cVkRuNM"iNsR{V#bZf2BjLkV$w8P&k3Qk*NtAo)T{NtHv(]~['p)G{G(d(^'|Tr_mXpPwM{H{']u]m(MgScOdF&}HvSrIr'_}W'd]k]iPdLiDrEyBy&LkJiS&w\vO'iCj%R`T&}K'uKp$[~_(l%StQnFu@~C)k$LcA(wOnPv#_nZa$J'{CuMr#[(eSr"]iVb]'y#OsM@{"ZIxFvPr![iXg"AkZf_`Wc!S`@&m Vl!Ew^v"NgGhRwV{#H'gIlSd$@&{#UtTy$FqJnBo#VhK%|K&c_n$Jt[h_d%DtKu[k[i&@qSnYt'KlNj&YeU`@%z%Xx&D~S&b'Xj]l(HhM%LzSX&oXp)BbHh*GkkMll,[oRwG'bKd[b-V&zWm,_l[l2NnDu1^~2A'cJc3C&}MuJl2N}U{^w\tUvO{O}V'g4Eg+^&~,_}-FyHvAv,Z{V~_(p2[l3M'y[oRm1^m.T~XQ(bNgQh[m\w[zUFqIOmT'{ItMoJl+\`D&}*R'bCi)^~\(d*AeGbJ'yMuIyG(`G'|CwAjDiIlO(k+GpYn,Fe-FaK'~U(aXdXgKkEnFpHQtQyN}N)l+Ls*_*gIm)GsRt*AwK}X+u+V,`\kWlLg*\+yBk)U,d]+UuJG,aK+z(Q|MM,k)Mg(IEkFpLs)KwPzHw(IyE|I-a^,)U-cXtN{M}Tx[f*Co+R.gRfN`L-}K.dJmL~SuHmGiDjAp@/aEiKz,AxK1k-Bx@q,Aq+YvV2{.@|ExMpT0g/T/~U|XuVsZt]x0@qAtJoIlJOiDbE.vYf1B-wDqEoLf2DLcO[/n3NlIgEi@nBoIzQ~G@0a2_e3E`NfXmXqXv4ArBm3]f]`4@GaLcO/~Q{M}KwBpCnAj@kCeFbAb3]e]lY-cE,zXv[qYs2^n3TjVgTPHn2Xg3CfR`T+~RK,dB+~IzGyB,`2W+z3@t2[iWkQ{S,d1\+rHbAc0^w1@,a0ZdVeR*rP(l/SnZ^h^dZbS'|J{N~Y(j0Zk1Sg2AdI'Q{3C~K(bMeMgIeCl2Zp[w/@uMmNg._v/B{-^l_pW|T^)x*XzMQ{K~D*eK)C)]*h*@d)YeUjWfTMkN)y*_*h+@oEtUs,EoKkKm+]gP)LxLrYs,@xKuKoFk+]sEx@*u*CjOrLq\vV{+G+`PgQbL*D*Y+`,[fS*}I+gKiAk@lIwMpSq]p]kV`[,bFnEn+Zu,EDxIRqOmZjTnKkIeHbF|+G|*X-eT,}QIyMkKqRkZs\|+G-qRfVhYoYv[a,GIqGbQ,W-fVjVe[,}_|-A-cF,vIgFYlY+zJT,v.MjL+xE,jXw_l/@zOfJu\-l0GcI,sD-cUvZhZi^r1D.p0[lZjVj/Jl.Zd-Hf@l,^t-@u,]t-H{,Bl+WfYd,AgRbW-}W]-B}E{B}K.bT`V-zVxV.a.G-zJ.aX-uY}/CFtGJxO}O~SwU.c]-x_{0G.dH-W.cZm]}LyOvLtEu/Xs.\tNrGyA~C/eQnYr]tZ}]wUQ~RwJ}FwDw-^zYuXT{PsPwEpEn,Zl-FnWg[b.IhiLoMqHmEhIiLkb0Dlf/NlJwMsOuVl^i0@g/\jZl^0e._mXgOoUvMsW]s]s/Ko._e_x/BG1s._rRlIdCaDFfLgZc/@0}BxB2a.Jd@1}-[2e\iVj[p\m.BoJiEbJf-N1w@pFs^v,R|MtK/zPuZqXpKlTfIaEA.{BHyMvOrKG-i1F,M-a^,zQpWtMkExE}0Y1H-jF,a/V+y\|0Du/^i_oYeRiNrRwKS,`V+y-[r.AMmEbJg@`-[iXnPrYy[*r.Pv[t/HoRfX)|YtSoJl.YmPtLsTv/E}J*dJm.ZnPrPm-I)N}WxPlTtLlCvF,[-H*mI,d1\u2H-cOkf*B,l}BxDkd)\'lg4FlFl,Ej+^g,@)l+Ll(Z*m)Gm&K-{)M{(A/z,Az']2{-_{+V0v4Av0U1v+Vv(D(p2[p0H)l(Al'O7j![j"WI5yIy#EE7jEj$H5yH6uHu#Eu%Ru$V7j%Yj$V5yVy%Y7j'X5y_6n(FM5yT7j[j)Wj*Ej)^5y^Wy*E7jZj+]5y*Zy+]y,R7j-@5yN6n,Yn-G5y\\7j\j.Xc_6|_uXu-\u.Q5y_y/MM7jMj0IcP6`P5yIy/M7j3Kj2VcO6`O5yVy3K6`R7cRjK5y4@@7j@j5C6u4\@7j7P^W5yWP^y8SS7jSj9OcV6`V5yOy8Sy:DD7jDj;@cG6`G5y@y:Dy;U7 @

1
pltfiles/wizwarp.plt Normal file

File diff suppressed because one or more lines are too long

BIN
tek4010

Binary file not shown.

View File

@ -246,6 +246,15 @@ int tek4010_on_timer_event()
// or there is still a bright spot, return 1 to ask for
// one more redraw
// is child process still running?
int status;
if ((!noexit) && (isInput() == 0) && (waitpid(-1, &status, WNOHANG))) {
tek4010_quit();
gtk_main_quit();
printf("Process has been terminated\n");
exit(0);
}
return (isBrightSpot || isInput());
}
@ -306,6 +315,15 @@ void clearPersistent(cairo_t *cr, cairo_t *cr2)
plotPointMode = 0;
}
void clearSecond(cairo_t *cr2)
// clear second surface
{
cairo_set_source_rgba(cr2, 0, 0, 0, 0);
cairo_set_operator(cr2, CAIRO_OPERATOR_SOURCE);
cairo_paint(cr2);
cairo_set_operator(cr2, CAIRO_OPERATOR_OVER);
}
void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first)
// draw onto the main window using cairo
@ -321,10 +339,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first)
showCursor = 1;
isBrightSpot = 0;
cairo_set_source_rgba(cr2, 0, 0, 0, 0); // second surface is cleared each time
cairo_set_operator(cr2, CAIRO_OPERATOR_SOURCE);
cairo_paint(cr2);
cairo_set_operator(cr2, CAIRO_OPERATOR_OVER);
clearSecond(cr2);
// clear persistent surface, if necessary
if (globalClearPersistent) {
@ -345,14 +360,15 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first)
do {
ch = getInputChar();
if (isInput() == 0) todo = 0;
// fade away last bright spot vector
if (vectorTable.intensity > 0.1) {
cairo_set_line_width (cr2, vectorTable.linewidth);
cairo_set_source_rgb(cr2, 0.25, 0.7, 0.25);
cairo_set_source_rgb(cr2, 0.45, 0.8, 0.45);
cairo_move_to(cr2, vectorTable.x0, WINDOW_HEIGHT - vectorTable.y0);
cairo_line_to(cr2, vectorTable.x2, WINDOW_HEIGHT - vectorTable.y2);
cairo_stroke (cr2);
cairo_stroke(cr2);
vectorTable.intensity = 0.0;
isBrightSpot = 1;
}
@ -569,7 +585,13 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first)
break;
default: switch (ch) {
case 0: break;
case EOF: break;
case 7: // bell function, delay 0.1 sec
// cannot delay if bright spot is on, needs to be turned off first
clearSecond(cr2);
usleep(50000);
showCursor=0;
todo = 0;
break;
case 8: // backspace
x0 -= hDotsPerChar;
if (x0<leftmargin) x0 = leftmargin;
@ -633,14 +655,4 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first)
// display cursor
if (showCursor) doCursor(cr2);
// is child process still running?
int status;
if ((! noexit) && (waitpid(-1, &status, WNOHANG))) { // Is child process terminated?
tek4010_quit();
gtk_main_quit();
printf("Child process has been terminated\n");
exit(0);
}
}

View File

@ -1,6 +1,6 @@
#define WINDOW_WIDTH 1024 // proposed width of main window
#define WINDOW_HEIGHT 768 // proposed height of main window (as per Tektronix manual)
#define WINDOW_HEIGHT 780 // proposed height of main window (as per Tektronix manual)
#define WINDOW_NAME "Tektronix 4010" // name of main window
#define ICON_NAME "" // path to icon for window