Jan 89 Letters
Volume Number: | | 5
|
Issue Number: | | 1
|
Column Tag: | | Letters
|
Letters
By David E. Smith, Editor & Publisher, MacTutor
Overriding ROM Resources
Ronny Zulaikha
Sydney, Australia
When Apple upgraded to the 128K ROM, some of the extra space was filled with ROM resources that were previously only held in the system file. This saves time in that these resources arent loaded from the system file when needed, and saves space in that RAM isnt taken up by them.
If one is designing a resource that is to replace one in the ROM, merely placing the new resource in the system file is not sufficient. As described in IM IV-20, one needs an ROvr resource ID 0, which my system file (4.3) already had. This resource startup scans the system file for ROv# resources of any ID, which indicates what resources to override. The first word of a ROv# resource is the version number of ROM to override, and is $75 for the 128K ROM. For the SE and Mac II, it would be reasonable to assume that the version numbers listed in IM V-xvii would apply, $76 and $78 respectively. In fact, the routine in the ROvr resource checks against the version word at location 8 higher than the start of the ROM. The high order byte is 0 for the 128K ROM, 1 for the Mac II and 2 for the SE, while the low order byte is the ROM version number. Putting this together, we get $276 for SE and $178 for the Mac II
Optimized String Comparisons
John S. Stokes III
San Diego, CA
My routine to compare two Pascal strings uses substantially less code than the optimized routine published in Donald Koschekas HyperChat column in November, 1988 issue of MacTutor. In my routine, the Pascal string length fields are compared as just another character in the comparison loop instead of separately.
;1
A0 --> Pascal string 1
A1 --> Pascal string 2
D0 <-- 0 if false, 1 if true
D1 <-- work
CompareString Moveq #0,D0; initialize flase return code
Move.B (A0),D1 ; length of the first string
Ext.W D1; dbra uses word
@10Cmp.B(A0)+,(A1)+; match?
Bne.S @900; no
Dbra D1,@10; yes, continue
Moveq #1,D0 ; set return code to true
@900 Rts ; return
NOTE: See Mar 89 Letters for bug fix and comments about this code.
Power Supply Board
David B. Lamkins
Canton, MA
Thanks to MacTutor, my Mac is alive and well at minimal expense following a sudden failure of the power supply board. Over a period of a couple weeks, under light use, my screen went from an occasional blink (accompanied by a snapping sound) to a thin vertical line. I recalled that there was a discussion of these symptoms in Mactutor, and found a detailed description of the problem and its cure in the June and July 1987 issues.
Id like to shed some additional light on the subject, since I suspect that many owners of older Macs will face the same problem eventually. The Macintosh power supply board (which also provides the circuitry to operate the display) contains a wide range of parts, from integrated circuits to high-power components. It is tricky to solder the full range of these components on a wave solder machine --too little heat and the leads of the large components dont get properly soldered, too much heat and the delicate components get fried.
I found a crack around J1 pin 4, just as indicated in the earlier articles, and signs of developing cracks around the other pins of J1. I removed the old solder with a solder bulb and carefully resoldered all four pins. What surprised me was that I found that NO solder had flowed between the pins and the(Im assuming --too late to check) plated through holes in the PC board. Thus, the contact area was limited to a very thin film of solder bridging the connector pin to the foil on the PC board. Its no wonder there was local heating leading to a joint failure!
I also found a bad solder joint on one of the leads of a coil in the same horizontal sweep circuit, and resoldered that as well. In this case, it looked like the original connection suffered from either improper cleaning of the coil lead, or too little flux and heat during soldering. A quick check of the solder joints on the remaining showed a potential problem on the end pins of the ten-pin power connector. Note that none of these problems were plainly visible to the naked eye --a magnifying glass was required
I found that the hardest part of the repair was locating the appropriate tools to open the Macs case. The readily available MacSnap Toolkit is not worth the expense --a long piece of allen wrench stock, which fits only some of the screws, is supplied in lieu of a Torx screwdriver. I returned this immediately for a refund. Local hardware, auto supply, appliance service, and specialty tool stores (I tried at least fifteen altogether) failed to produce a long-shafted Torx T-15 screwdriver. Least helpful was the service department of the local Apple dealer --Sorry, theyre made exclusively for Apple. You cant buy one unless youre an authorized Apple repair center. Finally, I turned to the MacTutor advertisers and called Computer Quick. For $20, these folks sold me a toolkit (separate screwdriver and case spreader) as good as any seen in an Apple service department.
My Mac started life three and a half years ago as a 512K. A year later, it was upgraded to a 512 enhanced, and stuffed with 4 megs of RAM and a piezo fan a year after the first upgrade. I have never had even a hint of a power supply problem during all this time. The time from onset of the first glitch to total failure was only a couple of weeks of light use --perhaps twenty hours of power-on time. From what Ive seen, I strongly recommend that owners of earlier Macs take very seriously any signs of trouble with their display.
Whatever you do, dont fix a jittery display by banging on the side of the case, as Ive heard some people will do --this will only prolong the symptoms and probably will cause more extensive damage due to internal heating of bad solder joints. If you see the onset of this problem, you probably shouldnt leave your Mac unattended while powered on. I suspect that the failure of the yoke connection for the horizontal sweep could unduly stress related components, leading to more serious failures than can be recovered with touch-up soldering.
Finally, if you do experience the thin vertical line death of your Macintosh, check the solder joints as mentioned here. If you dont know how to solder, or have never worked on a television or video monitor circuit, enlist the help and advice of a friend who has. Failing that, you may want to consider a board exchange via some outfit like Computer Quick on the west coast, or Pre-owned Electronics in the Boston area. Youll save money and time compared to the service provided by many Apple dealers.
Linear Equations
C. H. Friend
Watford, Herts, England
The article by Dave Kelly in the September MacTutor takes a long way around to do the following, which is the way it would appear in most math textbooks about solving linear systems of equations:
REM Solve equation system using inversion by MAT routines
REM mod CHF: 2/10/88 for TrueBasic 2.0 on Mac II
OPTION BASE 1
DIM A(3,3), V(3,3), B(3,1), X(3,1)
REM MacTutor Sep88 example:
REM coefficient matrix [A]:
DATA 1, -4, 4, -1, 6, -3, 1, 0, -1 ! equation coefficients
REM right-hand side vector (b):
DATA 7, 0, 7! equation data
REM System is [A]x(X) = (b)
MAT READ A
MAT READ B
PRINT Coefficients:
MAT PRINT A
REM inverse of coeff. matrix, [A]^-1
MAT V=INV(A)
PRINT Inverse:
MAT PRINT V
PRINT right-hand sides:
MAT PRINT B
REM Solution vector, (X) = [A]^-1 x (b)
MAT X = V * B
PRINT Solution:
MAT PRINT X
END
Results obtained are shown below:
Ok. run
Coefficients:
1-44
-1 6 -3
10 -1
Inverse:
.428571 .285714 .857143
.285714 .357143 7.14286e-2
.428571 .285714 -.142857
right-hand sides:
7
0
7
Solution:
9
2.5
2
Ok. Bye
You also refer to Hewlett-Packard Basic, on HP9000 Series machines. The Matrix ROM on HPs smaller Series 80 machines has had an extensive set of matrix commands and functions for some time. Series 200 HP-Basic has only just acquired some of these, such as the sub-matrix copy commands. Other useful HP-Basic functions are the row and column sums. These make powerful programs very short, e.g. the following example from Probability and Statistics for Engineers and Scientists by Walpole and Myers (MacMillan)
REM Multiple Linear Regression (W&M), HP86
REM mod 25/6/88 for TrueBasic on Mac II
OPTION BASE 1
DIM D(5,15), E(15,5), F(1,5), V(15,4), X(15,5), T(5,15)
DIM A(5,5), C(5,5), Y(15,1), Z(1,15), G(1,15), H(5,1)
DIM B(5,1), P(5,1), Y2(15)
DATA 4, 13
DATA 25.5, 31.2, 25.9, 38.4, 18.4, 26.7, 26.4,
DATA 25.9, 32, 25.2, 39.7, 35.7, 26.5
DATA 1.74, 6.32, 6.22, 10.52, 1.19, 1.22, 4.1
DATA 6.32, 4.08, 4.15, 10.15, 1.72, 1.7
DATA 5.3, 5.42, 8.41, 4.63, 11.6, 5.85, 6.62, 8.72
DATA 4.42, 7.6, 4.83, 3.12, 5.3
DATA 10.8, 9.4, 7.2, 8.5, 9.4, 9.9, 8, 9.1
DATA 8.7, 9.2, 9.4, 7.6, 8.2
REM
PRINT Multiple Linear Regression:
READ K,N
MAT REDIM D(K,N), E(N,K), F(1,K) V(N,K-1)
MAT REDIM X(N,K), T(K,N) A(K,K), Y(N,1)
MAT REDIM Z(1,N), G(1,K), H(K,1), P(K,1)
MAT READ D
REM
MAT E = Trn(D)
PRINT Data:
MAT PRINT USING #####.##: E
REM MAT F=CSUM (E) ! HP-BASIC
FOR J = 1 TO K ! TRUEBASIC
LET F(1,J) = 0.0
FOR I = 1 TO N
LET F(1,J) = F(1,J) + E(I,J)
NEXT I
NEXT J
PRINT Sums:
MAT PRINT USING #####.##: F
MAT X=Con
REM MAT V=E(,2:K) ! HP-BASIC
FOR I = 1 TO N ! TRUE BASIC
FOR J = 1 TO K-1
LET V(I,J) = E(I,J+1)
NEXT J
NEXT I
REM MAT X(,2:K)=V! HP-BASIC
FOR I = 1 TO N ! TRUE BASIC
FOR J = 1 TO K-1
LET X(I,J+1) = V(I,J)
NEXT J
NEXT I
REM PRINT Ind. variables:
MAT T = Trn(X)
MAT A = T * X
PRINT Equations:
MAT PRINT USING #####.###: A
REM MAT Y=E(,1)
FOR I = 1 TO N
LET Y(I,1) = E(I,1)
NEXT I
MAT Z = Trn(Y)
MAT G = Z * X
MAT PRINT USING #####.###: G
MAT H = Trn(G)
REM MAT B=SYS (A,H)! HP-BASIC, solves linear system
MAT C = Inv(A) ! TRUE BASIC
MAT B = C * H
PRINT Coefficients:
MAT PRINT USING ----,######: B
PRINT residuals:
REM MAT Y2=Y.Y ! HP-BASIC allows dot product of vectors
FOR I = 1 TO N
LET Y2(I) = Y(I,1)
NEXT I
REM SY2=SUM (Y2) ! HP-BASIC matrix function
LET SY2 = O.O
FOR I = 1 TO N
LET SY2 = SY2 + Y2(I)
NEXT I
LET SY2N = G(1,1)^2/N
LET SST = SY2 - SY2N
MAT P = Trn(G)
REM MAT P=B.P
FOR J = 1 TO K
LET P(J,1) = B(J,1)*P(J,1)
NEXT J
REM SBG=SUM (P)
LET SBG = 0.0
FOR J = 1 TO K
LET SBG = SBG + P(J,1)
NEXT J
LET SSA = SBG - SY2N
LET NDF = N - K
LET ES2 = (SST - SSA)/NDF
PRINT USING SST = ####.###: SST;
PRINT USING , SSR = ####.###: SSR;
PRINT USING ; s^2 = ##,#####: ES2
END
Results are:
Ok. run
Multiple Linear Regression:
Data:
25.50 1.745.30 10.00
31.20 6.325.42 9.40
25.90 6.228.41 7.20
38.40 10.52 4.638.50
18.40 1.1911.609.40
26.70 1.225.85 9.90
26.40 4.106.62 8.00
25.90 6.328.72 9.10
32.00 4.084.42 8.70
25.20 4.157.60 9.20
39.70 10.15 4.839.40
35.70 1.723.12 7.60
26.50 1.705.30 8.20
Sums:
377.50 59.43 81.82 115.40
Equations:
13.000 59.430 81.820115.400
59.430 394.726 360.662 522.078
81.820 360.662 576.726 728.310
115.400522.078 728.310 1035.960
377.5001877.567 2246.661 3337.780
Coefficients:
39.157350
1.016100
-1.861649
-.343260
residuals:
SST = 438.131, SSR = 399.454; s^2 = 4.29738
Ok. Bye
Matrix statements were in the original DEC PDP Basic, developed by Kemeny and Kurtz. They were omitted from early microcomputer Basics, presumably for memory reasons. Another less useful feature of DEC Basic is this #### print image stuff, HP-Basic uses the much neater nD.mD style (numbers of digits before and after the decimal point, plus other options for mantissa and exponent style, etc. [Thank you for an excellent treatment of an interesting subject. I am very interested in covering more such areas in scientific and engineering computing. After all, computers were origonally designed to solve problems, were they not? --Ed]
VIREX by HJC Software
Kirk Chase
Anaheim, CA
Last week I got a call at MacTutor from a Mr. Robert Capon about viruses. Actually, Ive been getting a number of calls in the last few weeks about viruses. I thought that the virus war was over a few months ago, but just when you thought it was safe to power up your Mac Anyway, this call was about Virex, an anti-virus application due to hit the market by the time this issue hits the doorsteps.
Virex supposedly combats all three current computer viruses out there, namely the Scores Virus, the nVIR family, and the Peace virus, with more updates as more viruses are put out by #@*!! computer vandals. Virex reports to have the ability to not only detect but remove and repair damaged files.
Developed by known computer virus authority, Robert Woodhead, this little gem of software might be just what the doctor ordered for the sysop who phoned me a couple weeks ago whose network over the college campus seemed constantly at risk to these self-replicating monsters. I dont know if it will be a complete help (probably not --sigh), but at a price of under a hundred dollars, software houses can certainly afford a little more protection.