NATL INST OF STAND & TECH

A11107 3SDSS3

iMtssiH 84-2853

Measuring the Corrosion Rate of

Reinforcing Steel in Concrete

U S DEPARTMENT OF COMMERCE

National Bureau of Standards

National Measurement Laboratory

Center for Materials Science

Metallurgy Division

Washington DC 20234

April 1 984

Sponsored by

'"''derai Hiqhwav Administration

C ashirgton, DC 20590

100

,U56

84-2853

1934

C.3-

NBSIR 84-2853

NATIO:'.' c? sx

LI"

MEASURING THE CORROSION RATE OF

REINFORCING STEEL IN CONCRETE

E Escalante M Cohen, A H Kahn

U S DEPARTMENT OF COMMERCE

National Bureau of Standards

National Measurement Laboratory

Center for Materials Science

Metallurgy Division

Washington DC 20234

April 1984

Sponsored by

Federal Highway Administration

Washington, DC 20590

U.S. DEPARTMENT OF COMMERCE, Malcolm Baldrige, Secretary

NATIONAL BUREAU OF STANDARDS, Ernest Ambler, Director

IL BTOEAT7 .YJDASDS RASY

MEASURING THE CORROSION RATE OF REINFORCING STEEL IN CONCRETE

The deterioration of concrete bridge decks as a result of corrosion action

on the reinforcing steel is a serious and costly problem to the nation (1). It

is recognized that this corrosion is caused by the diffusion of chloride

ions into the concrete resulting in the breakdown of the passive iron oxide film

that normally protects the steel. The corrosion product that forms generates

sufficient pressure to crack the concrete allowing moisture, oxygen, and

more chloride to enter, further accelerating the deterioration process (2).

Methods have been developed that: a) block the chloride from coming in

contact with the steel, (b) stop the chloride from entering the concrete,

(c) remove the chloride from the vicinity and (e) others, such as cathodic

protection, which modify the reactions at the surface of the steel (3-7).

All of these approaches require some method to evaluate their effectiveness, and

the most direct method is to measure the corrosion rata of the steel before

and after a modification to the concrete.

Procedure

The plan for this study is divided into the following five phases which

are: A literature review, preliminary studies, measurements in concrete, field

measurements, and the development of a microprocessor system. More than half

of these phases have been accomplished and reported as will oe described.

Phase I. Literature Review - At the outset, a literature search was

undertaken to identify the information available on the corrosion of steel in

concrete and methods for measurement. A total of 394 papers, reports, and

talks from 1964 through 1978 were identified on the subject, and are inaexed

under subject and author (3). The Subject Index was further subdivided into

six subgroups such as general survey, factors affecting corrosion, measurement
2

techniques, protection techniques, concrete design, and related fields.

In the Author Index, the references are listed alphabetically by author.

A study of this literature revealed several interesting facts. For

example, it was found that over thirty references discussed the effect of

chloride on corrosion, but only one reference discussed the effect of

oxygen content. Furthermore, the effect of moisture was considered in

just four of these references. Not one study on the corrosion of steel

in an alkaline environment was found. Clearly, most of the attention had

been directed towards the effects of chloride.

Phase II. Preliminary Studies - From the information gathered through the

literature search, it was evident that more information was needed on the

effects of oxygen, pH, and moisture, and therefore an experimental program

was designed to evaluate these factors. Three environments were used on

this phase of the study, and these were alkaline solutions of Ca(0H)2

with controlled oxygen, Cl", and pH; wet sand/salt mixtures; and

mortar (9).

Flat steel specimens 100 x 20 x 1 mm were immersed in controlled solutions

and the initiation time for visible corrosion was noted. At a pH of 10.5

or less, corrosion started immediately on immersion. However, as the pH was

raised to 12, initiation times increased to 200h, and at higher pH corrosion

did not occur during the period of the experiment. The experiment was repeated

in the presence of chloride, and it was found that chloride did reduce the

initiation time to corrosion but otherwise had little effect. Once initiated,

the corrosion rates were constant in all cases. Not surprisingly, the oxygen

content of the solution had a large effect on the corrosion rate of the steel

with lower concentrations leading to lower corrosion rates.
3

Further experiments were carried out. as described which indicated that

the interaction of oxygen, pH, and chloride is more complex and in

combination can develop conditions that lead to corrosion even at high

values of pH. Figure 1 is a summary of these data showing these three parameters. Illustrated is a three dimensional figure with boundaries within which

corrosion does not occur. However, outside of this boundary corrosion of steel

is observed. For example, where it was shown earlier that chloride or oxygen acting

alone could not cause corrosion of steel at a pH of 12.5, this figure reveals

that at an oxygen concentration as low as 2 ppm and at a Cl" concentration

of 6 mol /l, corrosion does occur, and can also develop at lower concentrations

of Cl" at higher oxygen contents.

To observe the effect of moisture on the corrosion of steel, specimens

were imbedded in a mixture of sand, Ca(0H)2, and NaCl. The mixture was held

in small perforated crucibles in an atmosphere of flowing air with controlled

moisture content. This configuration allowed the specimens to be removed for

weight loss determination during the course of the experiment. Specimens in a

moisture saturated sand mixture did not corrode, but during the same period,

specimens in a dry mixture began to corrode almost immediately as moisture was

introduced. However, the corrosion rate of these specimens decreased steadily

as moisture content of the sand mixture increased; and at saturation, the

corrosion ceased. Clearly, the degree of moisture, which affects oxygen concentration, plays a very important role as expected, but the cessation of

corrosion at saturation was not anticipated.

After the study of steel in solutions and in sand mixtures was completed,

the work was extended to include steel in mortar. Specimens as described aoove

were cast with a 5 mm cover of chloride-containing mortar. After 2Ah,

half of the specimens were immersed in a Ca(0H)2/NaCl solution and half
4

were allowed to dry for one week before immersion. The corrosion current

of each specimen was determined by polarizing the specimen from -10 to

+10 mV with a potentiostat and plotting the overvoltage as a function of

the polarizing current. As in the case of the sand mixture, the corrosion

of the steel in mortar that was kept continuously wet was near zero, but

the specimens that were allowed to dry for one week, and then immersed,

initially developed a high corrosion rate that decreased with time to a

very low value.

In summary, these studies have shown that at low concentrations

of O

2 and Cl", pH controls the initiation of corrosion. But as O2 and

Cl" increase, corrosion can initiate even at a pH of 12.5. It is hypothesized

that in the moisture saturated concrete, the concentrations of Cl" and oxygen

are sufficiently low for conditions to exist within the "no corrosion"

boundary of Figure 1. However, as the concrete dries, the Cl" concentration

in the pore water eventually increases to saturation. This drying process

also allows oxygen to diffuse more rapidly through the concrete setting

up conditions outside of the “no corrosion" boundary where corrosion of

steel does take place. Once corrosion is initiated, the pH is reduced at

the anodic areas by the corrosion reaction, making it easier to reinitiate

corrosion in future times when moisture and oxygen are available.

Phase III. Measurements in Concrete - The purpose of this portion

of the work was to compare several polarization techniques for measuring

the rate of corrosion of steel in concrete(9). All polarization techniques

are essentially the same in that the measurement is based on the observation

that the polarizing current necessary to change the potential of a metal

in an electrolyte, in this case concrete, is directly related to the rate

of corrosion of the metal. The techniques differ only by how this change
5

in potential Is achieved. Initially, four techniques were used in this

study and are described as follows: Stern and Geary consider the derivative

of the potential of the specimen versus the applied current for deviations

from the corrosion potential not greater than 10 mV (10). This

slope is related to the corrosion current, I corr , the relationship:

lim dE_ = b a

• b c dE -*0 dl 2.3(b a + ^c^corr

~~

where b

a and b c are the anodic and cathodic Tafel Slopes respecti vely. For

calculation of the corrosion current, I corP , values for the Tafel slopes

must be obtained from other sources, or by trial and error for the best fit

to the data. In this case a£ was 5 mV and the assumption made that

b a = b c = 100 mV. Thus:

Icorr = 21 .7al

At

The second technique used is an empirical approach described by Schwedtfeger in

which I corr is determined from the change in slope of the polarization curve (11).

The cathodic corrosion current. Ip, and the anodic corrosion current, Iq, are

found at this "break" in the curve, and the corrosion current is then calculated from:

I corr

= -E—2. In +1,

The technique requires that polarization, cE, extend over a range

of ±100 mV so that the "breaks" in the polarization curve may be observed.

The three point method of Barnartt is the third technique that has been

used (12). Three voltage/current data points are measured along the

polarization curve, and from this b a , b c , and I corr are calculated as follows.

If the first potential point is at a£, then the second and third are at 2i£

and -2a£ respecti vely . The resulting currents at each potential are measured

and substituted into the ratios
6

n = I2aE/ i -2aE

and r2 = I 2 aE^aE

which in turn are related to each other through the quadratic equation

+ rj = 0

The roots of this equation are

exp 2.3 AE and exp 2.3 aE

t>a b c from which b

a and bc are calculated. Using the relationship of I/I C orr

versus aE, the corrosion current for the process is found.

The fourth technique is a computer analysis of polarization data

developed by Mansfield (1_3). The computer makes a best fit analysis to

theoretical curves generated from the Stern-Geary equation for different

values of Tafel slopes and in this way b

a , b

c , and I corr are found.

Each of the polarization techniques described employs a three electrode

system having the steel specimen as one electrode, a voltage reference as a

second electrode, and a counter electrode as a third electrode from which

polarizing current is applied to the specimen. The circuit used for these

measurements is Holler's (14) which incorporates a Wheatstone bridge for IR

compensation as illustrated in Figure 2. The IR compensating design takes

advantage of the fact that when a polarizing current is applied to the

specimen, its rate of change in potential due to polarization is very

small compared to the rate of change in potential due to IR. By repeated

applications of current of short duration (e.g. 0.5s), and by adjusting

the Wheatstone balancing resistance, the IR component is compensated.

Once this balance is achieved, then the polarizing potential, free of IR,

can be measured for all values of applied current.
7

Small concrete slabs 55 x 30 x 5 cm were cast each with three imbedded

1.27 cm diameter steel rods. Two small stainless steel rods were also encased

in the concrete and were used to determine the resistivity of the slab.

The concrete was treated in two ways. Four of the slabs were cast

with 0.06 parts NaCl to one part cement (38.4- lbs NaCl/cu.yd), and the

remaining eight slabs were cast without Cl". After curing for approximately

thirty days, two of the Cl" free slabs were immersed in a saturated solution

of NaCl for six days, withdrawn, and left in a dry laboratory atmosphere.

Two other slabs were immersed in a 3.5% NaCl solution for 24h, withdrawn,

and also left in a laboratory atmosphere. Corrosion measurements showed

that steel specimens in Cl" free slabs developed very low corrosion rates

(<0.007 mg/dn^/day). However, those slabs with Cl" in the concrete

immediately developed a corrosion rate of A. 4 mg/dm^/day or more than

two orders of magnitude greater than those in Cl" free concrete. Figure 3

illustrates the decreasing rate of corrosion as the concrete dried. In

the case where the chloride free concrete slabs were immersed for six

days in a sodium chloride saturated solution, the corrosion rate increased

by over an order of magnitude within a few hours as shown in Figure A.

The second group of chloride free concrete slabs that were immersed for

only 24-h in a solution of 3.5% NaCl behaved similarly to these immersed

longer in a more concentrated solution. The average weignt loss of steel

on these specimens, based on electrochemical measurements, was 0.33 mg/dm*-/day.

The resistivity of the concrete was also measured with time, and the data

reveal that the resistivity decreases as moisture increases. However,

the effect of immersion on the corrosion rate is much greater than its

effect on the resistivity of the concrete. As the concrete dries ano

the resistivity increases above 7,000 ohm-cm, the resistance aDDears to

have a direct influence on the degree of corrosion observed.
8

Weight losses were calculated from the electrochemicaly determined

corrosion currents measured as a function of time, and were compared to gravimetric

weight loss measurements on the same cleaned steel rods. A comparison of the data

from the four electrochemical techniques described is shown in Table 1 and

indicates that all methods overestimated the weight loss of steel. The

Stern-Geary method overestimated weight loss by 17% while Schwerdtfeger' s,

Mansfeld's, and Barnartt's techniques overestimated weight loss by 40%,

56%, and 83% respectively. Since the differences in the corrosion rates

between a corroding and a non-corroding system are over an order of

magnitude, then even the data with an overestimation of 83% will reveal the

existence of high corrosion.

In summary, the data indicate that the corrosion of steel in chloride

free concrete is negligible and less than 0.007 mg/dm^/day while the corrosion

rate in chloride contaminated concrete is more than an order of magnitude

greater with an average of 0.33 mg/dm^/day, but can be as high as 4.4 mg/dm^/day.

Comparison of the gravimetri cal ly determined weight loss to the weight losses

calculate from the polarization data indicates that the electrochemical

measurements overestimate weight loss by 17% to 83%. However, even with an

overestimation of 83%, the polarization techniques will differentiate between

a corroding and a noncorroding condition of steel in concrete.

An important part of this study is the characterization of the current

distribution during polarization measurements. This distribution must be

known in order to determine the area of the steel being polarized which,

in turn, makes it possible to calculate a corrosion current density or weight

loss of steel per unit length of steel bar.

Under controlled laboratory conditions, determining this area is not

a serious problem since the specimens are small and the geometry of the
9

electrodes can be arranged so that the entire specimen electrode is polarized

with a uniform current. But in extending these polarization measurements

to a bridge deck we are faced with limitations brought on by the relatively

large size of the structure. The major constraint being that, unlike our small

slabs in the laboratory, we cannot polarize the entire bridge at once,

but can only polarize a small area at a time, and it is this area that must

be characterized.

The experimental procedure used is simple in principle. In an attempt

to simulate the large scale geometry in a small slab, it was decided to

use a long line specimen in concrete and polarize it from a point or small

line current source. The potential of the steel in the concrete would be

monitored by reference electrodes positioned along its length.

Three variables were considered as having an effect on the distribution

of the current, and these are the distance between the counter electrode

and the specimen, the amount of current applied, and the resistivity of

the concrete.

Using small concrete slabs similar to those described earlier, a new

geometric arrangement of electrodes was designed as shown in Figure 5. As

before, the steel rod is imbedded horizontally along the length of the

concrete slab. The counter electrode is a small diameter (3 mm) rod positioned

vertically adjacent to the steel specimen. Three counter electrodes at different

distances (1,2,4cm) from the specimen are illustrated. Ten reference

electrodes, imbedded in the concrete, are located 8.5 cm apart along the

length of the steel rod and 2 cm from its surface. This arrangement of

electrodes allowed a polarizing current to be applied to the steel specimen

from a small vertical line source. Any changes along the length of the

specimen are detected by the reference electrodes. Measurements we r e
10

made using one of the three counter electrodes. The resistivity of the

concrete was controlled by controlling its moisture content. During an

experimental run, the potential along the length of the specimen was measured

before any current was applied. Subsequent potential measurements were made

with reference to this initial base potential. The polarizing current was

increased in increments and the potential measurements repeated until a

maximum of approximately 10 mV was achieved. Initial measurements were

made manually using the Holler bridge circuit for compensation of IR. More

recent measurements were made using a computer controlled system which applies a

cycling direct current of 5 seconds on and 0.25 seconds off. The potential

of the specimen was then read during the current off cycle so that the IR

component was zero. Figure 6 illustrates the distribution of current as

indicated by the change in potential along the length of a steel rod in concrete.

This curve is a measure of the extent of current distribution along the

length of a horizontal steel rod when the current source is a small vertical

rod in the concrete. The shape of the curve is an indication of how uniformly

the current is distributed within the polarized area. This type of data

have been obtained as a function of counter electrode distance, applied

current, and resistivity of concrete. Preliminary analysis of the data

indicates that, as expected, the extent of the current distribution

decreases as the resistivity of the concrete increases, and the general

shape of the current distribution curve does not appear to be affected.

In addition, as the electrode distance is decreased, the area of steel

rod polarized also decreases. The largest effect observed is that of the

applied current. As the current is increased, the area of distribution
11

increases. But perhaps the most important observation is that current

distribution is very limited and 90% of the current encompasses a distance

of less than lOx the distance between the specimen and the current source

electrode.

A mathematical model has been developed that takes these variables into

consideration and generates a current distribution curve along a cylinder

from a point source in free space as follows. The electric current distribution

in a conductive medium containing electrodes held at arbitrarily fixed potentials

may be obtained by a standard application of potential theory. For the

case of an infinitely long cylindrical conductor embedded in an electrolyte

with a point source of current at a fixed distance from the cylinder, an

extension of the formulas given by Jackson gives a complete solution for

the current distribution in the electrolyte (15).

The following geometric arrangement is treated as illustrated in Figure 7.

Consider an infinitely long metallic cylinder of radius a, held at ground

potential, and at a distance, d, from the axis of the cylinder, a point

electrode emits a total current I 0

. By application of the methods stated above,

the current density at any point, P, on the surface of the cylinder is described.

/

dk coskz '^m ( k d ) ka

m=0 0

where

Current density at point P on the cylinder

Total current emitted by source at d

Integer index for summation

Variable of integration

2 for m = 0; 1 for m > 0

A modified Bessel function of the second kind, order m, argument x, see ref. (16)

m

k
12

Although this formula is a closed mathematical expression with a precisely

defined meaning, its evaluation to a specified accuracy requires numerical

integration of a function which is rapidly oscillating and the summation of

a convergent series. Use of digital computing methods to produce graphical

or tabular representation of the results is essential. A preliminary

evaluation of the function, illustrated in Figure 8, demonstrates that it

does follow the general shape of the measured data. Further analysis of this

function and its correlation to the data is required for a more accurate

assessment of their relationship.

Phase IV. Field Measurements - After gaining some experience in performing

the corrosion

measurements on concrete slabs in the laboratory, the measurements were

extended to the field on an operating bridge deck. With the cooperation

of the Virginia Highway Department arrangements were made to perform

corrosion rate measurements on a bridge deck (Number 2063) on Interstate

66 near the Washington, DC Beltway. The primary objective of this portion

of the study was to evaluate the background electrical noise and determine

whether the measurements could be made.

Measurements were made on two separate decks that were a few hundred

meters apart. Two sets of measurements were made on a seven year old deck

(area A) repaired and widened (area B) eighteen months earlier and now in

use, and one set was made on a deck (area C) over a year old but not yet

opened to traffic. The major difference between the two decks is that

the older deck with its new widened section had been exposed to de-icing

salts while the new deck, barricaded to traffic, was not salt contaminated.

During the measurements, electrical contact was made to the steel rebar

with modified locking pliers. The counter electrode was a 500 cm^ rectangle

of aluminum foil wrapped in a towel wetted with a saturated solution of
13

Ca (OH ) 2 . A 6- cm diameter hole was cut out of the center of the counter

electrode to accommodate the Cu/CuS04 reference electrode positioned at this

point on a small wetted sponge. Using the Stern-Geary technique and the Holler

bridge circuit, measurements were made at areas A, B, and C, and a portable

Tetronix Model 214 oscilloscope was employed to monitor the background

electrical noise.

The background electrical noise was found to be a very high frequency

signal beyond the kilohertz range of our instrument, but more importantly,

it was of very low amplitude and less than 1 mV. Apparently the steel

structure of the deck acts as a very good antenna for radio frequency radiation.

The corrosion measurements revealed that area A on the 7 year

structure developed a corrosion current of 9.3 uA, while area 3 on the

recently widened section of the same structure had a corrosion current of 5.9 uA

The new deck not open to traffic displayed the lowest corrosion current

of 1.2 uA. Thus, though the data could not be verified by examination

of the steel, it did seem reasonable^ That is the oldest contaminated

structure did display the highest corrosion and the new uncontaminated

deck the lowest corrosion. Furthermore, it was found that the measurements

could be made and that background interference was negligible.

Phase V. Microprocessor System - It is recognized that the corrosion

measurements are tedious, time consuming, and require some knowledge of

the concepts involved, and because these measurements lend themselves to

automation, the ultimate goal of this project is to develop an instrument

that will make these measurements automatical ly. Field measurements

would then be performed with a microprocessor controlled device whic.n

would relieve the operator of most of the detail eo adjustment, data

acquisition, and calculations required. This device is to be as simo’e
14

allowing minimally trained personnel to perform the measurements. A

description of the design of such a device follows.

The instrument is designed around a set of commercially available

mi crocomputer printed circuit cards. These are based on a MC 6809 microprocessor circuit giving the system a very capable and powerful controller.

The modules used in the system are:

1.

) The processor card

2.

) Battery backed-up memory

3.

) Serial, parallel, and timing card

4.

) Analog to digital converter

5.

) Digital to analog converter (modified)

6.

) Vacuum fluorescent display

In addition to these commercial cards, several other cards have been

constructed at NBS, and serve two functions. First, to provide an interface between the user and the system are the following:

1.

) Keyboard and display panel

2.

) Test and keyboard control

Second, to interface the instrument to the experimental cell, these cards were

constructed:

3.

) Voltage to current converter

4.

) Input amplifier and distribution card

Schematics of these cards and the modification to the digital to analog

converter are illustrated in Figures 9 through 13.

The instrument operates in the following manner. At turn on, if the

test switch is on, the unit is in a display test mode. The system will not

function except for the display which will demonstrate the full character
15

set on a character by character basis. When the test switch is deactivated,

followed by a reset, the system goes into operational mode and instruction

messages appear on the display.

In the operational mode, the processor requests information from the user,

and when all necessary parameters are stored, sets up the system for zero

levels and enters a wait state until the operator lets it know that final

hook up to the cell is complete. This information is transmitted to the

instrument by pressing the "RUN" key thereby activating the microprocessor

to begin data acquisition. Output current is generated by a precision

voltage to current converter. Voltage driving this converter is derived

from a 10 bit digital to analog converter under control of the processor.

The full scale output current range is also selectable by the processor

software. Input potentials are measured by a 12 bit analog to digital

converter. Three channels are used in this measurement. One channel

measures the current applied, another the counter electrode to working

electrode potential, and the third the reference electrode to working

electrode potential where the working electrode is steel in the concrete.

The data are then saved in a battery backed up memory remaining there

until deliberately erased. When data acquisition is complete, calculations

are performed and the results displayed. A permanent record can then be

printed out and the data erased, or another experiment can be performed

while the data is saved for later printing. The software has been developed

as a system of modular routines, the majority of which are single function

stand alone subroutines (Appendix A). Links between modules have been

made absolute, and therefore the overall program is not relocatable.

However, relocation can be put into the system with little difficulty, if if

should prove desirable. The software design is such that changes to the
16

measurement technique can be made by changing 3 or 4 of the modules. Such

a change is necessary to the present modules since interfacing problems have

resulted in an error in the measurements. These changes are in the process

of being implemented.

Summa ry

This National Bureau of Standards study has revealed the following information.

1.) A total of 394 papers, reports, and talks from 1964 to 1978 were

found pertinent to the subject of the corrosion of steel in concrete. A

study of this literature indicated that information was lacking on the

effect of oxygen, pH, and moisture.

2.

) Oxygen concentrati on , chloride concentration, and pH have been

found to control the initiation of the corrosion of steel in concrete.

Moisture content of the concrete also plays an important role through its

effect on the concentration of oxygen and chloride.

3.

) The comparison of four polarization techniques for measuring the

corrosion of steel in concrete reveals that all the techniques overestimated

the weight loss from 17 to 83%. Current distribution measurements indicate

that the extent of current distribution along a steel bar in concrete is

very limited and of the order of 10 times the distance between the specimen

and the current source. A mathematical model describing this current distribution is being developed.

4.

) Corrosion rate measurements on operating bridge decks verify that

polarization techniques can be used in this situation, and furthermore,

background electrical noise is negligible.

5.) A mi croprocessor controlled instrument for making corrosion rate

measurements has been designed and constructed. However, complications in

interfacing the cards have developed requiring a change in its design.

These improvements are in the process of implementation.
REFERENCES

1. An Economic Analysis of the Environmental Impact of Highway Deicing,

U. S. Environmental Protection Agency, EPA-600/276105, May 1976.

2. Cornet, I., Bresler, 8., Galvanized Steel in Concrete: Literature

Review and Assessment of Performance, Galvanized Reinforcement for

Concrete-II, International Lead Zinc Research Organization, Inc., Vol. 2,

May 1981.

3. Clifton, J. R., Protection of Reinforcing Bars with Organic Coatings,

Materials Performance, 15, No. 5, 14-17, May 1976.

4. Internally Sealed Concrete Guide to Construction and Heat Treatment,

Federal Highway Administration, Implementation Package 77-9, April 1977.

5. Slater, J. E., Lankard, 0. R., Moreland, P. J., Electrochemical Removal

of Chlorides from Concrete Bridge Decks, Materials Performance, 15,

11, 21-26, 1976.

6. Lundquist, J. T., Rosenberg, A. M., Gaidis, J. M., Calcium Nitrite

as an Inhibitor of Rebar Corrosion in Chloride Containing Concrete

Materials Performance, 18, 36-40, March 1979.

7. Fromm, H. J., Wilson, G. P., Cathodic Protection of Bridge Decks: A

Study of Three Ontario Bridges, Transportation Research Board,

Transportati on Research Record No. 604, 38-47, 1976.

8. Escalante, E., ITO, S., A Bibliography on the Corrosion and Protection

of Steel in Concrete, National Bureau of Standards Special Publication

550, August 1979.

9. Escalante, E., Ito, S., Cohen, M., Measuring the Rate of Corrosion of

Reinforcing Steel in Concrete, National Bureau of Standards NBSIR 80-2012,

March 1980.

10. Stern, M., Geary, A. L., A Theoretical Analysis of the Shape of

Polarization Curves, J. Electrochemical Society, 104, 56, January 1957.

11. Schwerdtf eger, W. J., McDorman, 0. N., Measurement of the Corrosion

Rate of a Metal From Its Polarization Characteristics, J. Electrochemical

Society, 99, 407, October 1952.

12. Barnartt, S., Two-Point and Three-Point Methods for the Investigation

of Electrode Reaction Mechanisms, Electrochi mica ACTA, 15, 1313, 1970.

13. Mansfeld, F., Tafel Slopes and Corrosion Rates from Polarization Resistance

Measurements, Corrosion, 29, No. 10, October 1973.

14. Holler, H. D., Studies of Galvanic Couples, J. Electrochemical Society,

97, 271, September 1950.

15. Jackson, J.D., Classical Electrodynamics, John Wilesy and Sons, N.Y., 84,

1962.

16. Handbook of Mathematical Functions with Formulas, Graohs, and Mathematical

Tables, National Bureau of Standards, Applied Mathematics Series No. 55,

1964.

TABLE 1

Comparison of Weight Loss Determined Gravimetrical ly

to

Weight Loss Calculated From Polarization Data

Technique Wei ght

Loss, mg

Overestimate

0010

Gravimetri c 147 —

Stern-Geary 172 17

Schwerdtfeger 206 40

Mansfeld 230 57

Barnartt 269 83

FIGURES

1.

) A three dimensional plot of Cl” concentration, oxygen concentration,

an pH showing the regions of corrosion and no corrosion.

2.

) A simplified schematic of the Holler bridge circuit as used in

a manual measurement of corrosion rate of steel in a concrete slab.

3.

) A plot of corrosion current and resistivity versus time for steel

in salt contaminated concrete.

A.) A plot of corrosion current and resistivity versus time for steel

in concrete contaminated with salt after curing.

5.

) Geometry of electrodes for current distribution measurements.

6.

) A plot of current distribution along a steel bar in concrete as indicated by its change in potential.

7.

) Geometry of electrodes used in model of the current distribution

calculation.

3.) A plot of one half of the current distribution along an infinitely

long cylinder as calculated from the model.

9.

) Schematic diagram of the keyboard and display panel circuit.

10.

) Schematic diagram of the keyboard and display panel circuit.

11.

) Schematic diagram of the keyboard scanner circuit.

12.

) Schematic diagram of the voltage to current converter circuit.

13.

) Schematic diagram of the input amplifier and distribution circuit.
.
F1

(jure
1mn

Figure
100

rV

H1000K

uiou ‘XjiAftsisay

V7* ‘;uajjno ucjsojjoQ

Days

Since

Cast
Corrosion

Current,

fj

A 100k

10k

Ik

F i a u r e 4

Resistivity

of

Concrete,

Qcm
Resistivity

;xju
AW / 33 U 110 Ay 3 A 0

i

J3

O)

i-3

CT U-

.004
PANEL WIRING

+5 +5

Tq Display

GNO Display

+ 5V Display

F i a u r a 9
Modification

to

1614

Module

(10

Bit

DAC) >+ o

+* .M o o

0)

a

a>

©

CO CO

05 £L to f

CO

O CO o c I c ‘5 E CO E CO

CO is- a a

a
Keyboard Scanner Card

PBS

P97

RRQ.

P9 5 ? 97

PRO.

F i gu rs 11
Voltage

to

Current

Converter

aza

a o :

CM

<U

s.2C

•r

Ll

Offset

Trim

and

Bipolar

Power

Not

Shown
Input Card

APPENDIX A

*#****#**#**#•#*#*##*«#*#*#*##*#*####*##*###*#**#*

* BEGIN

* THIS ROUTINE ISSUES PROMPTS AND STORES CONSTANT

* DATA FOR THE PORTABLE INSTRUMENT

*##*##*# ###**#*# **####*##* «##########*#**####***#

OPT EXP

* SYSTEM EQUATES

0600 BUFFER EQU

FECA WFS EQU

F9A3 GETDATA EQU

07-43 STARTD EQU

07OB DATBUF EQU

FB9C PACKS EQU

FAB3 CUDTB EQU

0731 RIJNFLG EQU

FB6A GETR EQU

F 1 9-4 MEASUR EQU

0745 ORG

0745 RUNSET RMB

0749 TIMSET RMB

074D AREAST RMB

0751 - WORK RMB

0007 SETDP

F000 ORG

FO00 OF 31 BEGIN CLR

FO02 BE 0B0O LDX

F005 9F OB STX

MSG MACRO

LBSR

FCB

FCC

FCB

LDB

LBSR

BEQ

ENDM

F007 ID MSG

F007 17 OEC0 LBSR

foqa OD OA FCB

FOOC 49 44 20 2B FCC

FO10 31 35 20 43

F014 4B 41 52 2E

foib 2D 4D 41 58

F01C. 29 20 3D 20

$0BOO

$FECA

$F9A3

$0743

$07OB

$FB9C

$FA83

$073i

$FB6A

$F 1 94

$07-45

4

A

A

$07

$F000

RIJNFLG

# BUFFER GET START OF BUFFER

DATBUF SAUE IT

WFS

$QD . $0A

' &r

$0

#$£.-2

GETDATA

S:0

- ID <15 CHAR* -MAX ) = "

* " 10"

Wir S

$ 0D i $0A

'ID <15 CHAR* -MAX) = '

1
F02O 00 FOB $0

FQ21 C6 10 LDB #$ 10

FQ23 i 7 097D LBSR GETDATA

F026 27 DF BEQ

ENDM

ID

F028 DATE MSG “DATE (DDMMYR) = %7

F02G 17 0E9F LBSR WFS

1-Q2B 0 D OA FCB $0D t $0A

F02D 44 41 54 45 FCC ’DATE ( DDMMYR ) = ’ F03

20 28 44 44

F035 4D 4D 59 52

F039 29 20 3D 20

F03D 00 FCB $0

F03E C6 07 LDB #$7

FQ4Q 1 -T 1 / 096O LBSR GETDATA

FQ43 27 E3 BEQ

ENDM

DATE

FQ4S TINE MSG "TIME TO NEXT MEASUREMENT ( MMSS

F045 17 0EB2 LBSR WFS

F048 OD 0A FCB $0D t $0A

FQ4A 54 09 4D 45 FCC 'TIME TO NEXT MEASUREMENT <MMSS>= ' FQ4E 20 34 4F 20

F052 4E 45 38 50

FQ56 20 4D 45 41

F05A 35 52 45

FQ5E 4D 45 4E 54

F062 20 28 4D 4D

FQ66 53 53 29 3D

F06A 20

F06B 00 FCB $0

F06C C6 05 LDB #$5

F06E 17 0932 LBSR GETDATA

F07 I 27 D2 BEQ

ENDM

TIME

F073 3E 0B LDX DATBIJF POINT TO DATA

F075 34 20 F'SHS Y SAVE Y F077 30 IB LEAX -5 » X POINT TO MINUTES DATA

F079 17 00C0 LBSR CVTIM GO CONVERT TO BINARY

F07C 86 3C LDA #60 LOAD SEC/M IN

F07E 3D MUL MULTIPLY

F07F DD 49 STD TIMSET

F0S1 9E 0B LDX DATBIJF POINT TO DATA > AGAIN

F083 30 ID LEAX -3,X POINT TO SECONDS

F085 17 00B4 LBSR CVTIM CONVERT TO BINARY

FOBS D3 49 ADDD TIMSET

FQ8A DD 09 STD TIMSET

F08C 35 20 PULS Y FOSE AREA MSG 8 AREA OF SAMPLE (0-65535 CMt2)=

F08E 17 0E39 LBSR WFS

F091 0D 0A FCB $0D t $0A

F093 41 52 45 41 FCC 'AREA OF SAMPLE (0-65535 CMt2)= ’ F097 20 4F 46 20

F09B QOJU oi JD 30

F09F 4C 05 20 28

F0A3 30 2D 36 35

F0A7 35 33 35 20

F0AB 43 OD 5E 32

) =

II

II »5

. 6

2
FOAF 29 3D 20

FOB 2 00 FCB $0

F0B3 C6 06 LDB »$6

FOBS 17 OBEB LBSR GETDATA

F0B8 / 04 BEQ AREA

ENDM

FOBA 9E OB LDX DATBUF POINT TO INPUT DATA

FOBC: : A 20 PSHS Y SAUE Y

fobe 8D 76 BSR INSAU

FOCO DD 4D STD AREAST SAUE BINARY AREA

F0C2 nctJ'J 20 PULS Y F0C4 RUNS MSG “RUNS COUNT <100 OR LESS) = ” >6

F0C4 17 0E03 LBSR WFS

F0C7 OD OA FCB $0D . $0A

F0C9 =r

•- 55 4E 53 FCC 'RUNS COUNT (100 OR LESS ) = ’ FOCD 20 43 4F 55

fod: 4E 54 20 28

F0D5 31 30 30 20

F0D9 52 20 4C

FODD 45 53 53 29

foe: 3D 20

FOE 3 00 FCB $0

FOE- C6 06 LDB «$6

F0E6 17 OBBA LBSR GETDATA

FOE 9 27 DB BEQ RUNS

ENDM

FOFB 9E OB LDX DATBUF POINT TO DATA

FOED 34 20 PSHS Y SAUE Y

FOEF 3D 45 BSR INSAU

FOF

DD 45 STD RUNSET SAUE BINARY NUMBER OF RUNS

F0F3 35 20 PULS Y

F0F5 BE OB00 CRTOOO LDX ^BUFFER POINT TO START OF INPUT DATA

FOFB A6 GO CHARN LDA X + GET CHAR

FOFA 31 OD CMPA #4 0D IS IT A CR?

FOFC .-,-7 5C BEQ CG IF SO* CHANGE IT

FOFE ?C OB CNTCM CPX DATBUF HAUE WE REACHED END?

FI 00 26 F6 BNE CHARN IF NOT t GET ANOTHER CHAR*

F 1 02 BD 5B BSR DATSAU

F 104 CC F194 LDD ttMEASUR POINT TO MEASUREMENT ROUTINE

F 1 07 DD 31 STD RUNFLG

FI ©9 17 ODBE LBSr WFS

F10C OD OA FCB $0D i $0A

F10E 50 52 45 53 FCC ' PRESS RUNWHEN READY FOR MEASUREMENT'

F1 1.2 CTO 20 52 55

FI 16 4E 20 57 4B

FUA 45 4E 20 52

FI IE 45 41 44 59

FI 22 20 46 4F 32

F126 20 4D 45 41

F12A 53 55 5‘"‘ 45

F12E 4D 45 4E 54

FI 32 00 FCB 00

FI 33 16 0A34 LBRA GETR

F136 30 1A INSAU LEAX -6 > X F138 1 -r 0948 LBSR CUDTB CONUERT TO BINARY

F13B 39 K i 3

3
F13C 10BE 0751 CUTIM LDY #WORK

F 1 -10 C6 03 LDB »$3

F i 42 B6 30 LDA *$30

FI 99 A7 AO THIRTY STA Y + FH6 5A DECS

FI 47 26 FB BNE THIRTY

F199 06 02 LDB #$2

F19B A6 BO SIXTY LDA X + GET DATA

F 1 9D A7 AO STA Y + SAUE IT

F 1 -IF 3A DECS

FI 50 26 F9 BNE SIXTY

F152 IF 21 TFR Y > X

F 1 39 30 IB LEAX -5,X

F156 1

092A LBSR CUDTB

F 1 59 39 RTS

FI 5A 9F CG CLRA

F15B A7 IF STA -1 ,X REPLACE CR BY ZERO

FI 3D 20 9F BRA CNTCM

F15F 3-4 20 DATSAU PSHS Y SAUE Y F161 109E 93 LDY STARTD GET CMOS MEMEORY START

F169 3E 0800 LDX #BUhFER F'OI N 1 T0 DATA

FI 67 DC OB LDD DATBUF

FI. 69 B3 OB00 SUBD ^BUFFER

F16C 97 ASRA DIUIDE BY 9

F16D 56 RORB

F16E 47 ASRA

FI 6F 56 RORB

FI 70 17 0A29 LBSR PACKO

F 1 73 109F 93 STY STAR-TD SAUE NEXT CMOS DATA ADDRE

FI 76 9E OB LDX DATE: UF POINT TO DATA INPUT AREA

FI 78 35 AO PULS Y » PC RESTORE Y > RETURN

END

0 ERROR <S) DETECTED

SYMBOL TABLE

1 4

AREA F08E AREAST 079D BEGIN FOOO BUFFER 0800 CG F15A

CHARM FOFB CNTCM FOFE C:R i 000 F0F5 CUD“B FAB3 CUTIM F13C

DATBUF 070B DATE F02S DATSAU F15F GETDAT F9A3 GETR FB6A

ID F007 INSAU F136 MEASUR F 1 99 PACKS FB9C RUNFLG 0731

RUNS F0C9 RUNSET 0793 SIXTY F 1 9B STARTD 0793 THIRTY FI 99

~j. ME F095 T I MEET 0799 WFS FECA WORK 075

4
a**#***#**#*#*#***#***###*###******#***#*##***#*###

* MEASUR

* THIS ROUTINE HANDLES THE MEASUREMENT SEQUENCE IN

* THE PORTABLE INSTRUMENT* THE MEASURED DATA IS

* STORED IN THE CMOS MEMORY AND THE ADDRESS UPDATED

* FOR LATER RETRIEVAL IF DESIRED,

#*K ***###**# X- *###*#*##•*###*##*###**#*#*****##****#*

* SYSTEM EQUATES

0700 INDEX EQU $0700

0702 ADCUAL EQU $0702

0709 CHNUM EQU $0709

0705 SWNUM EQU $0705

0706 DACVAL EQU $0706

070B DATBUF EQU $070B

0733 RUNCNT EQU $0733

07 93 STARTD EQU $0793

0795 RUNSET EQU $0795

0799 TIMSET EQU $0799

B009 SAUST1 EQU $8009

DE50 DDAC EQU $DE50

0007 SETDP $07

FB2F CGTIME EQU $FB2F

FB39 TIMCHK EQU $FB39

FB52 CHSELT EQU $F852

FB67 SMSELT EQU $FS67

FB79 CONVRT EQU $F879

FB9D INITDA EQU $FB9D

JrB80 SWNSET EQU $FSB0

FBBF SWNZER EQU $FBBF

FBCB LDDAC EQU $F8CB

FECA WFS EQU $FECA

0751 ORG $0751

0751 WORK RMB pT 0756 REVFLG RMB I 0757 DAC INI RMB V 0759 OPNCRK RMB

075B DACADJ RMB

FI 99 ORG $F1 99

FI 99 17 0D33 MEASUR LBSR WFS

FI 97 OD 0A FCB $0D t $0A

FI 99 ST 9F 52 9B FCC * WORKING

F19D 99 9E 97

FI AO 00 FCB $00

F i A

0F •"t Ci Z CLR RUNCNT

FI A3 C C 01FF LDD *$01FF

F1A6 DD 57 STD DAC INI

Fl AS CC 0033 LDD »$0033

OUTPUT MESSAGE

CORRESPONDS TO ZERO 01

SAUE INITIAL VALUE

COh'REsPONDS TO 1/2 MIC

5
F1AB DD 3B STD DACADJ SAUE ADJUSTMENT UALUE

FI AD 9E 23 LDX STARTD GET START OF CMOS MEMORY AREA

FI AF BF 8002 STX SAUST1 SAUE START OF MEMORY AREA

F1B2 CC 000

BELCH LDD 4$ 5000

F1B5 ED 82 STD X FiB7 •« “7 0673 LBSR C'GTIME SET TIMER FOR 1 MSEC TIMEOUTS

FI BA 86 01 LDA #$01 SET A TO D FOR CE TO WE, I -OFF

F1BC Q"7 02 STA CHNUM

FI BE •ji / 0691 LBSR CHSELT SELECT CHANNEL

F 1 C

i “7

.L / 06A 3 LBSR SMSELT START SAMPLING MODE

F 1 C2 17 0672 LBSR TIMCHK WAIT FOR TIMEOUT

FI 07 17 06A F LBSR CONURT MEASURE

FiCA ED 81 STD X + + SAUE UGLTAGE, I -OFF ZERO

F ICC 0C 02 INC CHNUM

F1CE 17 0681 LBSR CHSELT

F1D1 17 0693 LBSR SMSELT

F 1 DA iA 7f 06A2 LBSR CONURT GET OPEN CIRCUIT POTENTIAL

F1D7 86 00 LDA #$00

F1D9 97 02 STA CHNUM

F1DB 17 0672 LBSR CHSELT SET A TO D TO CURRENT CHANNEL

FIDE 17 0686 LBSR SMSELT SET TO SAMPLING MODE

FI. El 17 02 1C LBSR SET 10 GET ZERO CURRENT UALUES

F1E2 DC 5B CURSE! LDD DACADJ GET ADJUSTMENT UALUE

F IE6 44 LSRA HALUE IT

F1E7 56 RORB

FI EG D3 57 ADDD DACINI ADD INITIAL UALUE

* **##*#**#*****•######*****#**

* ALTERNATE IS SUiEXTRACTION FOR

* OTHER POLARITY

#**####*###***##*##*#####*##

F1.EA DD 06 STD DACUAL

FI EC 0C 33 NEXT INC RUNCNT

FIEF. 9F 31 STX WORK SAUE INDEX

F 1 F0 17 0626 LBSR TIMCHK WAIT FOR TIMOUT r'J--

F 1 F3 17 06D5 LBSR b&DAC-T^* SET CURRENT — ITU ' vv F 1 F6 17 06B7 leHSR— SWNBET— SET SWITCH

F 1 F9 17 0630 '>t ^ - T—LBSR TIMCHK WAIT FOR ANOTHER TIMEOUT

FIFO 17 067LBSR CONURT GET POTENTIAL DROP OUER RESISTOR

FIFE ED 81 STD X + + SAUE R DROP

F201 0C 02 INC CHNUM

F203 •i ~r 062C LBSR CHSELT

F206 1 7 065E LBSR SMSELT SET TO READ CE TO WE POTENTIAL

F209 •* -*r 1 / 066D LBSR CONURT GET IT

F20C ED 81 STD X + + SAUE CE TO WE , I -ON

F20E 0C 02 INC CHNUM

F210 17 063F LBSR CHSELT

F213 .» —1 / 0651 LBSR SMSELT

F216 17 0620 LBSR TIMCHK

F2 19 1 7 0227 LBSR SWZERO TURN OFF CURRENT

F21C 1 7 065A LBSR CONURT GET WE- REF » I -OFF

F21F ED 81 STD X + + SAUE IT

F221 0A 02 DEC CHNUM POINT TO CE TO WE

F223 17 062C LBSR CHSELT

F226 17 0629 LBSR CHSELT

0
| F229 17 064D LBSR CONURT GET WE TO CE CURRENT OFF

F22C FD 61 STD X+ + SAUE IT

F22E BF 8004 STX SAUSTi SAUE NEXT DATA BLOCK ADDRESS

F231 0 F 04 CLR CHNUM

r c* o

* T

1 / 06 1C LBSR CHSELT

F236 17 062E LBSR SMSELT SELECT CURRENT READ , AGAIN

F239 0D 36 TST REUFLG HAUE WE FOUND RANGE?

F23B 2B 06 BMI RDONE YES, THEN CALCULATE PARAMETERS

F23D SD 3B BSR CALC I DO CHECK FOR APPROPRIATE RANGES

F23F 9E 31 LDX WORK RESET INDEX

F241 20 A9 BRA NEXT

F243 DC 43 RDONE LDD RUNSET GET * OF RUNS TO BE PERFORMED

F245 1 027 008

LB EG CALC IIF ZERO GO CALCULATE

F249 D0 33 SUBB RIJNC NT

F 24B 1 02F 0087 LBLE CALC I

IF DONE, DO FINAL CALCULATIONS

F24F 0F CLR TIMSET+2

F251 OF 4C CLR TIMSET+3

F253 CC: 2380 LDD *$2580

F256 ED 34 STD X SET TIMEOUT FOR ONE SEC

F258 17 05D4 LBSR cgtime

I25B 17 03DB TIMEGT LBSR TIMCHK

F23E DC 4B LDD TIMSET+2

F'60 C3 0001 ADDD #$0001

F26U DD 4B STD TIMSET+2

F265 1093 49 CMF'D T INSET ARE WE DONE?

F26B -r

»•:. / y.d BEG TIMUR

F26A 20 EF BRA TIMEOT

F26C CC 000A TIMUR LDD #$ 000A SET FOR 1 MILL I SEC TIMEOUT

F26F ED 84 STD V

r\ F27

17 05BB LBSR CGTIME

F274 BE 8004 MORE LDX SAUSTI

F277 16 FF72 LBRA NEXT-T

F27A ORG $F27A

F27A CALC I RMB 23 REsERUE AREA FOR NEXT PROGRAM

F291 TWOS RMB 69

F2D6 CALC I

RMB 2 ADDRESS OF CALCULATION PROGRAM

F600 ORG 5F600

F60O O L Du 03 SET 10 LDA #$03

F6D2 97 03 STA SWNUM POINT TO 5 MICROAMPERE FULL SCAL

F604 DC 57 LDD DACINI GET ZERO CURRENT EQUIUALENT

F606 DD 06 STD DACUAL SETUP TO OUTPUT IT

r 6y8 DC 02 OP NS A

LDD ADCUAL GET OPEN CIRCUIT UOLTAGE

F60A ED 81 STD X + + SAUE IT IN CMOS MEMORY

F60C •) 7* x # FCFJ2 LBSR TWOS

F60F DD 39 STD OF'NCRK

F61

i 0225 LBSR TIMCHK

r i 1 -4 *f -r

j. r 02B4 LBsk LDDAC SET FOR ZERO CURRENT

F617 17 0296 LBSR SWNSET TURN ON ZERO CURRENT

F61

! -7 02

C

f CD C* O r T M 1 — / tz: IK iZM'O r 1 nt'".

F61D 0C 04 INC CHNUM POINT TO CE TO WE UOL’AGE

r 6 1 F

-r

j. / 0230 LBSR CHSELT

7
F622 17 0242 y^LBSR SMSELT

F625 17 0251 LBSR CONURT GET APPLIED UOLTAGE-I ON

F626 DC 02 LDD ADCUAL RETRIEUE CE TO WE POTENTIAL

F62A ED 81 STD X + + SAUE IT

F62C 86 00 LDA #$00

F62E 97 04 STA CHNUM POINT TO CURRENT CHANNEL AGAIN

F630 •i ~T 02 IF LBSR CHSELT

F633 i 7 0231 LBSR SMSELT

F636 f T

/ 0200 LBSR TIMCHK

F639 17 023D LBSR CONURT GET DROP ACROSS R

F63C 17 0228 LBSR SMSELT

F63F 17 027D LBSR SWNZER TURN OFF ZERO CURRENT

F642 DC 02 LDD ADCUAL RETRIEUE DROP ACROSS R

F644 ED 81 STD X + + SAUE IT

F646 39 RTS

F647 DD 06 SET 101 STD DACUAL SAUE ZERO CURRENT VALUE

F649 17 027F LBSR LDDAC SET CURRENT TO NEW ZERO

F64C 17 0261 LBSR SWNSET TURN ON CURRENT

F64F 17 01E7 LBSR TIMCHK

F6b2 17 0224 LBSR CONURT GET NEW CURRENT ZERO

F655 17 0267 LBSR SWNZER TURN OFF SWITCH

F65B DC 02 LDD ADCUAL RETRIEUE VALUE

F65A ED 14 STD -12,

SAUE IT IN ZERO LOCATION

F65C 17 020B LBSR SMSELT

F65F 39 RTS

F660 •} -7 023

SWBEGN LBSR INITDA INITIALIZE DAC

F 663 ?F 00 SWZERO STX INDEX SAUE INDEX

F665 8E DE50 LDX «DDAC SET OUTPUT TO ZERO ROUTINE

F668 CC 8000 LDD $ 8000

F66B ED 84 STD X F66D E7 05 STB 5 , X TURN OFF SWITCH

F66F 9E 00 LDX INDEX RESTORE INDEX

F67

39 RTS

F672 END

0 ERROR < S) DETECTED

SYMBOL table:

ADCUAL 0702 CALCI F27A CALCIF2D6 CGTIME F82F CHNUM 0704

CHSELT FB52 CONURT F879 CURSE

F1E4 DACADJ 075B DAC INI 0757

DACUAL 0706 DATBIJF 070B DDAC DE50 END F672 INDEX 0700

INI IDA FB9D LDDAC FBCB MEASUR F194 MORE F274 NEXT FI EC

OPNCRK 0759 OPNSAU F60B RDONE F243 REVFLG 0756 RUNCNT 07 63

RIJMSET 0745 SAUST3004 SELCH F1B2 SET 10 F600 SET 10

F647

SMSEl " FB67 STARTD 0743 SWBEGN F660 SWNSET FBB0 SWNIJM 0705

SWNZER FBBF SWZERO F663 TIMCHK FB39 TIMEOT F25B TIMSET 0749

TIMI.JP F26C TWOS F291 WFS FECA WORK 0751

8
#*#*«##*#*###•*#*•*##*«*#•###•»**•»«#*#***#*•*##*»**#*•*

* CALC

* THIS ROUTINE DOES CALCULATIONS FOR THE ADJUST-

* MENT OF THE CURRENT TO RESULT IN A FIXED REF TO

* WORKING ELECTRODE POTENTIAL

a**#*##*#*#**####***###**#*#**###*###*######*#**#*

* SYSTEM EQUATES

0759 GPNCRK EQU $0759

0733 RUNCNT EQU $0733

075B DACADJ EQU $075B

0706 DACUAL EQU $0706

0705 SWNUM EQU $0705

0756 REUFLG EQU $0756

0757 DACINI EQU $0757

FECA WFS EQU $FECA

0731 RUNFLG EQU $0731

FB6B GETR EQU $FB6B

FC00 STARTCL EQU $FC00 COLD START ON ERROR

F647 SETIOl EQU $F697

F27A ORG $F27A

0007 3ETDP $07

F27A QA 33 CALC I DEC RUNCNT REDUCE RUN COUNT TO REFLECT

* DATA NOT YET FOUND

F27C- EC IE LDD -2 > X GET REF TO WE POTENTIAL

F27E A3 12 SUED -14,

GET DIFFERENCE FROM OPEN CIRCUIT

F28Q 2B 19 BMI POLAR

F2B2 BA 0F TEST 1 ANDA #$QF CLEAR UPPER 4 BITS

F2B4 1083 000

CMPD #$000

IS THE DIFFERENCE 10 MU?

F288 2D IB BLT ADJUST

F2BA 96 56 LDA REUFLG

F2BC BA F0 ORA #$FO SET FLAG TO INDICATE CURRENT FOL7-

F28E 97 56 STA REUFLG

F29© 39 RETURN RTS

F291 85 08 TWOS BITA #$0S

F293 27 03 BEQ PLUS

F295 BA FB ORA #$FB BIT 3- -SET, SIGN EXTEND, ALL ONE':

F297 39 RTS

F298 B4 07 PLUS ANDA #$07 IF BIT 3 IS ZERO

F29A 39 R 1 3 SIGN EXTEND ALL ZEROS#

F29B 8D 02 POLAR BSR NEGD GET TWO'S COMPLEMENT OF D

F29D 20 E3 BRA TEST 1

F29F 43 NEGD COMA

F2A0 53 COME

F2A1 C3 0001 ADDD #301

F2A4 39 RTS

9
F2A5 DC 06 ADJUST LDD DACUAL GET OLD CURRENT SET

F2A7 D3 5B ADDD DACADJ

F2A9 1083 03FF CMPD »$3FF HAUE WE REACHED FULL i F2AD 2C 03 BCE RANGE

F2AF DD 06 CHANGE STD DACUAL

F2B1 39 RTS

F2B2 DC 57 RANGE LDD DACINI GET INITIAL UALUE

F2B4 0A 05 DEC SWNUM

F2B6 27 03 BEQ ERRORS

F2BB 16 03BC LsRA SET 101

F2BB 17 0C0C ERRORS LBSR WFS

F2BE 0D 0A FCB $0D * $0A

F2C0 4F 55 54 20 FCC 'OUT OF RANGE'

F2C4 4F 46 20 52

F2C3 41 4E 47 45

F2CC 00 FCB $00

F2CD CC FC00 LDD ttSTARTCL

F2D0 DD 31 STD RUNFLG

F2D2 17 0B93 LBSR GETR

F2D6 ORG $F2D6

F2D6 CALC 1RMB ADDRESS OF NEXT ROUT II END

0 ERROR ( S ) DETECTED

SYMBOL 1 ABLh. 4 ADJUST F2A5 CALC

F27A CALC I

F2D6 CHANGE F2AF DACADJ 075B

DAC INI 0757 DACUAL 0706 ERRORS F2B5 GETR FB6B NEGD F29F

OPNCRK 0759 PLUS F298 POLAR F29B RANiGE F2B2 RETURN F290

REUFLG 0756 RIJNCNT 0733 RUNFLG 073 1 SET 101 Ffc-^7 STARiC FC00

SWMUM 0705 TEST

F2B2 TWOS F291 WFS FECA
****** ******* **************************************

* CALC I

* THIS ROUTINE DOES FINAL

* OUTPUT OF DATA* RESULTS

* DETERMINED*

* ALGORITHMS ARE: R'=<CE

*

CALCULATIONS PRIOR TO THE

ARE CALCULATED AND FORMAT

TO WE) /U< ACROSS RESISTOR)

TIMES R

* OHMS X CMt2 = KU ( REF TO WE ) -U ( OPEN CIRCUIT)/! X AREA

* K IS CONVERSION FACTOR TO VOLTS/ AMPS

********************************************************

* SYSTEM EQUATES

0700 INDEX EQU $0700

0705 SWNIJIM EQU $0705

07OB DATBUF EQU $070B

074D AREAST EQU $074D

0751 WORK EQU $0751

0759 OPNCRK EQU $0759

07 A3 STARED EQU $07-43

8002 SAVSTO EQU $8002

BOOH SAVST1 EQU $8004

F29F NEGD EQU $F29F

F7C0 MUL 1EQU $F7C0

FAB1 CVBTQ EQU $FAB1

F77E DIV16 EQU $F77E

FB68 GETR EQU $FB68

FECA WFS EQU $FECA

075D ORG $075D

075D APVIQF RMB •“S jL 075

POTENT RMB f 076 i APVION RMB

0 7 63 I RSW RMB Jmm 0765 RONEA RMB «* 0767 RONEC RMB i 0768 EX PON RMB 1 0769 KONEA RMB 2. 0763 KTHREE RMB i

J. 076C RDATo RMB i 076D RDAT i RMB 9

0776 KDATO RMB i 0777 KDAT1 RMB e 077F KDA f 6 RMB 2

0751 TEN RMB 2

0790 ORG $0790

0790 PRESTR RMB 6

n
0796 WSTORE RMB 5

079

CiMT RMB 1 0007 SETDP $07

F 206 ORG $F2D6

F2D6 cc. 000

CALC I

LDD «$0A

F2D9 DD Bi STD TEN SET SHIFT MULTIPLIER

F2DB 3-4 20 PSHE; Y SAUE Y

F2DD 1 09E A3 LDY STARTD POINT TO ZERO DATA

F2E0 EC B3 LDD --X GET MEASURED VALUE I -OFF

F2E2 A3 Ai SUBD Y + + SUBTRACT ZERO VALUE

F2E A 2A 02 BPL STORE

F2E6 HD B7 BSR NEGD IF NEGATIVE* COMPLEMENT

F2ES DD 5D STORE

STD APUIOF

F2EA EC S3 LDD ““ — X GET OPEN CIRCUIT VALUE

F2EC A3 Al SUBD Y + -+ SUBTRACT MEASURED VALUE

F2EE 2A 02 BPL STORES

F2F0 BD AD BSR NEGD

F2F2 DO 3F ST0RE2 STD POTENT SAVE IT

F2FE 27 7D BEG ERRORS

F 2F 6 EC 83 LDD --X GET GET APPLIED VOLTAGE* I -ON

F2FB A3 Al SUBD Y + -*- SUBTRACT CE TO WE> I -OFF

F2FA 2 A 02 BPL ST 0RE3

F2FC BD Al BSR NEGD

F2FE DD 61 STORES STD APUION

F300 27 71 BEQ ERRORS

i~ 302 EC B3 LDD --X GET DROP ACROSS RESISTOR

F30-4 A3 Al SUBD Y + + SUBTRACT ZERO CURRENT VALUE

F306 2A 02 BPL STOREA

F30B BD 95 BSR NEGD

i- jyA DD ijd STOREA STD IRSW

F30C •~i T

.»i / 65 BEQ ERRORS

F 3 0E

qcr 20 PULS Y

F 30 9F 0B RAPPAR STX DATBUF SAVE INDEX

F312 0F 9B CLR CNT

F31H 0F 6B CLR EX PON

F316 34 20 PSHS Y SAVE Y F31B BE 0763 LDX »IRSW

F31B 1 08E 0761 LDY #APVION POINT TO VOLTAGE (CE TO WE)

F31F 17 025E LBSR SHIFT

~i r DD 65 STD RONEA SAVE BINARY RESULT

F32-* BE 0 7 6 D LDX ttRDA i 1 POINT TO ASCII STORAGE AREA

F327 17 07B7 LB3R CUBTD MAKE ASCII DATA AND STORE

F32A 3 3 20 PULS Y ~ -“i ”• BE F3AC CUR LDX ttRTBL POINT TO TABLE OF RESISTANCE

F32F D6 05 LDB SWNUM GET WORKING SWITCH NUMBER

F331 3A ABX POINT TO VALUE

F332 A6 BA LDA X F33-4 27 56 BEQ ERROR6

97 67 STA RONEC SAVE RESISTANCE

F338 BE 076D LDX *RDAT1

F33B 17 '00F6 LBSR DEC IMF GO SET UP ASCII OUTPUT DATA

F33E 1

006F LBRA CORRK

F3H1 33 20 ERRORA PULS Y

12
F343 17 0BB4 LBSR WFS

F346 OD OA FCB $0D* $0A

F348 44 41 54 41 FCC 'DATA EXCEED ALLOWABLE POTENTIAL L

F34C 20 45 58 43

F350 45 45 44 20

F354 41 4C 4C 4F

F35B 57 41 42 4C:

F35C 45 20 50 4F

F360 54 45 4E 54

F36*-! 49 4 1 4Q. 20

F368 4C 49 4D 49

F36C 54 53 21

F36F 00 FCB 400

F370 16 07F5 LBRA GETR

F :73 17 0B54 ERRORS LBSR WFS

F376 0D OA FCB 40Q t $0A

F376 44 41 54 41 FCC ’DATA READS ZERO!'

F37C- 20 52 45 41

F380 44 53 20 5

F3B4 45 52 4F 21

FU8G 00 FCB $00

F389 16 07DC LBRA GETR

F38C 17 0B3B ERR0R6 LBSR WFS

F38F OD OA FCB $0D> $0A

F391 CTO 57 49 54 FCC ’ SWITCH WAS SET TO ZERO!’

F395 43 ^8 20 57

F399 41 53 20 53

F39D 45 34 20 54

F3A1 4F 20 5A 45

F3A5 AF 21

F3AB 00 FCB $00

F3A9 16 07BC LBRA GETR

F3AC 00 RTBL FCB 400 VALUES CORRESPONDING TO

F3AD 04 05 06 FCB 404 t 405 t 406 THESE ARE EXPONENTS

#**K ?#**##************ *#****#* #**#*#*** ***£#***«

* FOR ERR I INSTRUMENT USE $02* $03 » $04

tf#*********#***###*****#**-*****************#*#**

F3B0 B6 00 ooZQ zn LDA #400 SET CONSTANT FOR CONFERS

F3B2 7 / 68 STA EX PON

F3B4 Q "7 9B STA CNT

F3B6 34 20 PSHS Y

F3B8 1 OSE 073F LDY #POTENT

F3BC DC ET 27 LDD POTENT GET VALUE OF REF TO WE

F3.BE 1083 0041 CMPD #40041

F3C2 ’ 02:E FF7B LBGT ERR0R4 GREATER THAN 65 MILLIVOL

F3C6 8E 0763 LDX ttIRSW POINT TO POTENTIAL ACROS:

F3C9 OC 9B INC CNT SET TO MULTIPLY ANSWER B' F3CB i

i. / 0 1 B2 LBSR oH I FT

F3CE OA 68 DEC EX PON DIVIDE ANSWER BY TEN

F3D0 D D 69 STD KONEA

F3D2 2' i^T (7* PULS Y F3D4 34 70 PSHS X * Y * IJ F3Dfc 8D 10 BSR MLARE

TIMES AREA - STORE ASCII

WL

DA13
F3.D8 35 70 PULS X . Y U RESTORE REGISTERS

F3DA BE 8002 LDX SAUST0 1 F3DD 9F 00 STX INDEX

F3DF BE 800

LDX SAUST1 GET FINAL ADDRESS OF DATA

F3E2 BF 8002 SIX SAUSTO START FOR SAUE CMOS MEMORY

F3E5 16 0062 LBRA F'lJTDAT

F3E8 BE 0769 MLAREA LDX #KONEA POINT TO V/A DATA

F3EB 1 0GE 07 4D LDY #AREAST POINT TO AREA DATA

F3EF EC AA LDD Y GET AREA

F3F26 05 BNE MLD IF NON- ZERO GO

1 3F 3 CC: 0001 LDD #$0001 IF AREA ZERO DEFAULT

F3F6 ED AA STD Y TO 1 F3FG CE 0751 fILD LDU «WORK POINT TO RESULT STORAGE LOCATION

F3FB 17 03C2 LBSR MUL 1

*********************************************

* THE MEXT ROUTINE ROUNDS OFF DATA TO 16 BIT ********* ****************************** ******

F3FE EC CA MLCHAR LDD u FETCH STORED RESULT

F200 27 09 SEQ CNTMC IF NON- ZERO - ROUNDOFF NEEDED

FA02 BD 16 BSR ROUNDF

F-10A EC A2 LDD 2 1 U GET DATA

FA 06 17 01 AF LBSR SHIFTS FINISH ROUNDOFF PROCEDURE

F A 00 ED A2 STD 2 * U SAUE RESULT

FA0B EC CNTMC LDD 2 IJ GET ROUNDED DATA

FA0D DD 69 STD KONEA

FA0F BE 0777 LDX ttKDATl POINT TO ASCII STORAGE AREA

FA 12 17 069C LBSR CU8TD MAKE ASCII AND STORE

F A 1BE 0777 LDX #KDAT

h A 1

20 1A BRA DEC IMP

F A 1

BA FF ROUND

ANDA #$FF BYTE ZERO?

FA 1C 27 09 BEQ BYTE2

FA IF. AA LSRA SHIFT D RIGHT

FA IF 56 RC'RB

FA20 17 0 1 A0 LBSR UPDATE ELSE ADJUST LOWER HALF

FA23 0C 9B INC CNT

F225 20 F3 LOOF'R BRA ROUNDF DO NEXT BIT

FA27 CA FF BYTE2 ANDB #$FF IS BYTE ZERO?

FA29 ~T

/ 08 BEQ ENDRND GO . DONE

FA2B 5 A LSRB ELSE SHIFT NEXT BIT

F A 2C 17 0 19A LBSR UPDATE

FA2F 0C 9B INC CNT

FA3

20 FA LOOF'B BRA BYTE2

FA33 39 ENDRND RTS

FASA 96 67 DEC I MR LDA RONEC GET RESISTANCE EXPONENT

FA36 9B 6B ADDA EXPON ADJUST EXPONENT

FA3B SB 0A ADDA #402 POSITION ADJUST FOR DECIMAL POINT

FA3A 97 6B STA EXPON SAUE IT

FA3C o - 0A CMF'A #$0A IS EXPONENT 10

FA3E “T 0F BEQ TENEXP

FAA0 R0 0A SUBA #40A IS EXPONENT >10

FAA2 2B 06 BN I SINGEX

14
F*4*1*4 IF B9 TFR A> B SAUE ONES DIGIT

F4*46 86 01 LDA »$01 SET TENS

FAAB 20 0B BRA DECDAT

F-14A 4F 3INGEX CLRA SET TENS TO ZERO

F*1*4B D6 68 LDB EX PON GET ONES DIGIT

F4*4D 20 03 BRA DECDAT

F*4*4F 5F TENEXP CLRB SET ONES DIGIT TO ZERO

F 450 B6 01 LDA 01 SET TENS TO ONE

F452 BA 30 DECDAT ORA »$30

F*454 CA 30 ORB #$30 MAKE EXPONENT ASCII

F456 E7 07 STB 7 1 X

F45B A7 06 STA 6 * X F*45A A6 8*4 LDA X Hsc A 7 IF STA X

T—

» F J 5E 86 2E LDA #' . PUT DECIMAL POINT IN DA

F460 A7 8*4 STA X F462 36 *45 LDA »' E PUT EXPONENTIAL SIGN IN

F*46*4 A7 05 STA 5» X

F -466 39 RTS

F*46A ORG $F*46A

F*46A PUTDAT RMB 2 STARTING ADDRESS OUTPUT

F580 ORG $F5BQ

F580 EC A*4 SHIFT LDD 0# Y GET MULTIPLICAND

F582 DD 90 STD PRESTR

F5B*4 3*4 20 PSHS Y SAUE Y POINTER

FSB6 108E 0790 LDY •PRESTR

FSBA 9F 00 STX INDEX SAUE POINTER

F58C 8E 07BSHIFT! LDX #TEN POINT TO MULTIPLIER

F58F CE 0751 LDU •WORK POINT TO STORAGE

F592 1 -7

J. f 022B LBSR MUL 1

GO MULTIPLY

F595 0A 68 DEC EXPON ADJUST EXPONENT

FS97 DC 51 LDD WORK GET UPPER 16 BITS

F599 26 06 BNE USERND IF NOT ZERO t ROUND OFF

F59B DC 53 LDD WORK +2 GET DATA

FS9D ED A*4 STD 0 * Y

F59F 20 EB BRA SHIFT

IF ZERO DO AGAIN

F5A1 17 FE76 USERND LBSR ROUNDF ROUND OFF

F5A4 o 20 PULS Y F5A6 DC 53 USEABL LDD WORK+2 GET USABLE PART OF DATA

F5AB •"i“7 BEQ ERR0R7

F5AA ib A*4 STD 0# Y SAUE UALUE

F5AC Q E 00 LDX INDEX RESTORE POINTER

F5AE 34 40 PROCES PSHS u SAUE U REGISTER

F5B0 CE 0796 LDU •WSTORE POINT TO SCRATCH AREA

F5B3 01C8 LBSR DIU16

F5B6 35 *40 PULS u F5BB OD 9B SHIFTS TST CNT TEST ADJUSTMENT COUNT

FSBA

-7 06 BEQ ENDF'RO IF ZERO NONE NECESSAR

F5BC: uj ASLB ELSE MUL i I PLY ANSWER

F5BD 49 ROLA

F5BF 'r') ft 9B DEC CNT

I 15
t-5C0 20 F6 BRA SHIFTS

F5C2 39 ENDPRO RTS RETURN

F5C3 06 F, UPDATE ROR WORK+2 SHIFT LOWER WORD

F5C5 06 50 ROR WORK + 3

F5C7 20 02 BCC BACK

F5C9 0C 50 INC WORK +3 IF BIT WAS SET ADJUST

F5CB 39 BACK RTS

F5CC 35 20 ERROR? PULS Y F5CE 16 FDA2 LBRA ERRORS

END

0 ERROR ( 3) DETECTED

SYMBOL table:

APUIOF 075D APUION 0761 AREAST 070D BACK F5CB BYTE2 F027

CALC 1F2D6 CNT 079 B CNTMC F00B CORRK F3B0 CUBTD FAB1

CUR F-12C DATBUF 070B DECDAT F052 DEC I MR F030 DIU16 F77E

ENDPRO F5C2 ENDRND F033 ERRORF301 ERR0R5 F373 ERR0R6 F38C

ERROR? F5CC EX POM 076B GETR FB6B INDEX 0700 I RSW 0763

KDAT0 0776 KDAT1 0777 KDAT6 077

KONEA 0769 KTHREE 076B

LOOPS F031 LOOPR F025 MLAREA F3EB MLCHAR F3FE MLD F3FB

MUL16 F7C0 NEGD F29F OPNCRK 0759 POTENT 075PRESTR 0790

Pk'OCr 6 F5AE PUTDAT F06A RAPPAR F310 RDAT0 076C RDAT1 076D

RONEA 0765 RONEC 0767 ROUNDS F01RTBL F3AC SAUST0 8002

SAUST3000 SHIFT F5S0 SHIFT! F5BC: SHIFTS F5BB SINGEX S 00A

S • AR ! )J 07-13 STOREF2EB ST0RE2 F2F2 ST0RE3 F2FE STORE0 F30A

SWNUM 0705 TEN 0781 TENEXP F00F UPDATE F5C3 USEABL F5A6

USERND F5A1 WFS FECA WORK 0751 WSTORE 0796

16
***************************************************

* PIJTDATA

* THIS ROUTINE OUTPUTS THE FINAL RESULTS TO THE

* DISPLAY. IT THEN PROMPTS FOR CMOS MEMORY SAVE#

* AND THEN FOR CON ! INUA l iON» IF NOiHING HJR'THER

* IS DESIRED. IT GOES INTO AN ENDLESS WAIT LOOP

* UNTIL POWER DOWN.

***** ******* * a*#-***** ********** *******************

* SYSTEM EQUATES

0700 INDEX EQU 40700

0S00 BUFFER EQU 4 0600

076RDAT0 EQU 4076C

0776 KDAT0 EQU $0776

DE20 ACIA EQU $DE20

0756 REUFLG EQU 40756

070

DATBUF EQU $070B

0743 STARTD EQU 40743

DE2B KEYPAD EQU 4DE28

F949 KB INCH EQU 4F949

FC00 startcl EQU 4FC00

FB7D PGMSAU EQIJ $FB7D

FBCC UNF’AKS EQU $FBCC

FECA WFS EQU 4FECA

FF08 WRC EQU $F*-08

F2D6 CALCIEQU $F2D6

0007 SETDP 407

F46A ORG $F46A

F P 6 A 0D 56 PUTDA7 TST REUFLG IS THIS FIRST OUTPUT POINT

F J6 C 26 02 BNE HEADER IF SE

* OU i PU i HEADhR

F46E 20 42 BRA HUU i ELSE OUTPUT NEXT DATA POIN

Fh7Q 0F 56 HEADER CLR REOFLG

Fh/v •• “7 00C5 LB SR CRL.F

F H 8 h 0800 LDX ^BUFFER POINT TO HEADER DATA

tm''-l 7B C 6 0F LDB #15 OUTPUT ID

F H 7 A 08E DE20 LDY »AC 1 A

F47E •fi / 00C4 LBSR OUTDAT

FWS 1 A6 80 LDA X + INCREMENT X> CHECK FOR LAS

F 483 1026 00DB LiSNh ERROR?

FAR 7 17 00C4 OUTSS LBSR OUT4S

FHGA C6 06 LDB *6

F48C •i T.1 7 00B6 LBSR OIJTDAT OUTPUT DATE

P40 :; 17 009C LBSR CHAR IN WAi : r

r CHARAC ER

17
F^92 17 00AS ROUT { C* Z' u. u.< CRLF

u. /2 Q—

1 7 0A32 LBSR WFS

F^98 2 27 20 3D FCC R" = u $00

F-9VC 20 00

h -49h. BE 076C LDX *RDAT© POINT TO R ' DAT

F-mA i C6 09 LDB #9

F-4A3 •i "7

.L / 009LBSR OUTDAT OUTPUT R’

FHA6 17 0A21 LBSR WFS

FHA9 20 AF AB AD FCC ’ OHMS’ * $00

F9AD CTO 00

F4AF 8D 7D BSR CHAR IN WAIT FOR CHARACTER

FHB1 17 0086 KOIJT LBSR CRLF

F-’BA 17 0A13 LBSR WFS

FAB 7 HB 20 3D 20 FCC ' K = ’ 500

FABB 00

FABC BE 0776 LDX »KDAT0

FABF Cfo 09 LDB *9

FAC 1

•• "T 006

LBSR OUTDAT OUTPUT K

FACA 17 0A03 LBSR WFS

FAC7 20 AF A0 AD FCC * OHM X CMt2 1 f $ 00

FACB 20 58 20 AS

FACF AD 3E 32 20

FAD3 20 00

FADS SD <=r t BSR CHAR IN WAIT FOR CHARACTER

FAD7 9E A3 LDX STAR !

GET BEGINNING OF FILE

FAD9 30 08 LEAX 8 * X OFFSET BY ZERO LOCATIONS

F^DB 9C 0B CP X DATBUF HAVE WE REACHED END OF DATA

FADD T

L. / 05 BED EXIT

hADF 9E 0B LDX DATBUF ELSE* LOAD POINTER TO NEXT DATA

F'-£ 1 16 FDF2 LBRA CALC IGO DO IT

FAEA BD 5A EXIT BSR CRLF

h At6

•! T

i. / 09ELBSR WFS

FA£9 A 1 56 FCC ’SAVE DATA? YES = 1 ’ * $00

FAED 20 AA Ai 3

h AF

Al 3F 20 20

h Ah r. 20 59 45 33

F^F9 20 3D 20 31

fafd 00

FAFE SD 2E BSR CHAR IN

FSO0 Cl O i CMPB *$31 IS IT A ONE?

F502 •~.“7 A. / 31 BEQ DSAVE

FS0A BD 3A ANOTHR BSR CRLF

F506 •4 “7 i / 09Cl LBSR WFS

F509 57 Al AE 5 a FCC 'WANT ANOTHER RUN? YES = 1' * $00

F50D 20 41 4E AF

F511 5A A8 AS 52

F7 1 S 20 52 a£

FS19 3h 20 20 59

F51D AS 53 ji.0 -Sj D

FS21 20 31 00

FS2A SD 08 BSR CHAR IN

F526 Cl 31 CMPB *«31

F52B 10:27 06DA LBEQ STARTCL

F52C 20 FE BRA * THIS IS AN ENDLESS LOOP!

18
F52E B6 DE2B CHAR IN LDA

F531 17 0-415 LBSR

F53- 39 RTS

F535 17 0645 DSAUE LBSR

F53B 20 CA BRA

F53A 1 08 E DE20 CRLF LDY

F53E 17 0969 LBSR

F341 0D 0A 00 FCB

F5-M 39 RTS

F545 A6 80 OUTDAT LDA

F347 17 09BE LBSR

F54A 5A DECS

F54B 26 FB BNE

Fb-iD 39 RTS

F54E 9F 00 OUTAS STX

F550 1 0SE DE20 LDY

F554 17 0973 LBSR

F557 20 2 0 20 20 FCB

F55B 00

F55C 9E 00 LDX

F55E 39 RTS

F55F 86 3F ERR0R7 LDA

F561 17 09A 4 LBSR

F56“ ,11 LJA FF20 LBRA

F567 END

•’ ERROR < S ) DETECTED

SYriB' TABLE:

JL> O i

—

Il> DE20 ANOTHR F504 BUFFER

CRLF F53A DA7BUF 070B DSAVE

EXIT F4E^ HEADER F470 INDEX

KE /PAD DE2S KOUT r -4B

0UT4S

RGM!SA'J FB7D PIJTDAT r 46A RDATO

SlARTC FC00 STARTD 07-43 iJNF'AKS

KEYPAD CLEAR KEYPAD

KB INCH

F’GMSAU DISABLE CMOS MEMORY

ANOTHR

»ACIA

WFS

$0D t $0A *

X + WRC OUTPUT CHAR * OUTDAT

INDEX

ttACIA

WFS

$ 20 >

$

20 1 $ 20 $20 * $00

INDEX

»' 5

WRC

0UT3S

0B00 CALC I

F2D6 CHAR IN F52E

i” 3o'5 END F567 ERROR

F55F

0700 KB INCH b 9-4 9 KDAT0 0776

F54E OUTDAT F5-45 OUTSS F487

07 6

RhUFLG 0/56 ROUT F 492

FBCC WFS FECA WRC FF0B

19
.

.
F7BE DIU153 F799

F7AD

. DIU16 F77E DIU163 F7A1 DIU165 F7AB

'

21
NOT FOUND *************************************************

* MUL 1

* THIS ROUTINE IS A 16 BIT BY 16 BIT MULTIPLY

* ONE NUMBER IS POINTED TO BY X . THE OTHER BY Y

* IJ POINTS TO STORAGE FOR THE RESULT THIS

* ROUTINE GENERATES A 32 BIT UNSIGNED RESULT

* (AJB) X (CJD) = BDH : BDL

* + BCH1BCL

* + ADH1ADL

* 4 ach:acl

**************************************** ********** F7C0 ORG $F7C0

F7C0 6F C.9 MUL 1

CLR 0 > IJ F7C2 6F 91 CLR 1*U

F7C9 A6 Ol LDA 1>X LEAST SIGN. BYTE NUMBER A

F7C6 E6 21 LDB 1 > Y LEAST SIGN. BYTE NUMBER B

F7C8 3D MUL

F7C9 ED 92 STD 2j U SAUE RESULT

F7CB A6 39 LDA 0» X MOST SIGN. BYTE NUMBER A

F7CD E6 21 LDB 1»Y LEAST SIGN. BYTE NUMBER B

F7CF 3D MUL

F7D0 E3 91 ADDD 1»U

i—r r\ •-» i“ f 'J.L ED 91 STD 1»U

F7l>" 29 02 BCC AB1

F7D6 6C C9 INC 0> U

F7DB A6 01 AB1 LDA 1>X LEAST SIGN. BYTE NUMBER A

F7DA E6 A9 LDB 0» Y MOST SIGN. BYTE NUMBER B

F7DC 3D MUL

F7DD E3 91 ADDD 1 »U

F7DF ED 91 STD 1 1 U

F7E29 02 BCC AB2

F7E3 6C C9 INC 0UJ

F7E5 A6 39 AB2 LDA 0tX MOST SIGN. BYTE NUMBER A

F7E7 E6 A9 LDB 0# Y MOST SIGN. BYTE NUMBER B

F7E9 3D MUL

F7EA E3 C9 ADDD 0>U

F7EC ED C9 STD 0»U

F7EE 3? RTS

F7EF END

O ERROR (S) DETECTED

SYMBOL TAB! fu. F7DS AB2 F7E5 END F7EF MUL 16 F7C0

22
a#**###################*######*#**#*##*-)*#**#**#

* ASTIMER

* THIS ROUTINE INITIALIZES THE TIMER IN THE

* MODULAS ONE SYSTEM » AND ALSO SETS TIMER

* PERIOD AND CHECKS FOR TIMEOUT OF TIMER 0.

* HANDLING OF TIMER ONE AND TWO CAN BE DONE

* IF DESIRED. SEE DATA SHEETS FOR TIMER AND

* MODULE 11 HO MANUAL

a#*##*#*#*#*#***##********#***#**#*#***#*#*****

* SYSTEM EQUATES

003H CTRLTO EQU $3H INITIAL CONTROL STATE TIMER 0

0060 CTRLT1 EQU $60 INITIAL CONTROL STATE TIMER 1 0099 CTRLT2 EQU $99 INITIAL CONTROL STATE TIMER 2

0025 MSBTO EQU $25 MOST SIGNIFICANT BYTE COUNTER

0060 LSBTO EQU $80 LEAST SIGN. BY tCOUN . hR 0

00FF LSBT1 EQU $FF LEAST SIGN. BYTE COUNTER 1 00 1

MSBT2 EQU $10 MOB i S I ON. BYTE COUNTEK 2

* ADDRE'SSES

DE2C CTO EQU $DE2C COUNTER 0 ADDRESS

DE2D CT1 EQU $DE2D COUNTER 1 DE2E CT2 EQU $DE2E COUNTER 2

DE2F TIMER EQU $DE2F CONTROL WORD FOR PROGRAMMING

DE29 CRA EQU $DE29 PI A CONTROL REGISTER A

DE2B KPD EQU $DE28 DATA REGISTER A- -KEYPAD

* INITIALIZAT ION

F800 ORG $FBOO

FBOO 86 3H INTIME LDA sCTRLTO RESET TIMERS

F802 B7 DE2F STA TIMER

FB05 B6 60 LDA sCTRLTl

F807 B7 DE2F STA TIMER

FBOA 86 99 LDA #CTRLT2

F80C: B7 DE2F STA TIMER

FBOF B6 30 LDA #LSB lSET INITIAL UALUES

FBI 1 B7 DE2C STA CTO

FB1H B6 25 LDA ttMSB l 0

F816 B7 DE2C STA CT0

FBI 9 86 bF LDA ttLSBTl

F81B B7 DE2D STA CT 1 FB1E B6 10 LDA #MSB 1

F820 B7 DE2E STA CT2

F823 39 RTS

****************************************** * * * » *

23
* WHEN THE TIMER IS READ t IT INDICATES THE

* NUMBER OF CLOCK PERIODS ELAPSED SINCE THE

* LAST INTERRUPT (TIMEOUT) WAS GENERATED

* HERE # THE TIMER HAS BEEN INITIALIZED ""0 * GENERATE A TIMEOUT PULSE EUERY SECOND.

* THh INPUT CLOCK Is A 96fe?0 HER i Z PULSE INPLU"

* FROM THE BAUD RATE_GENERATOR > AND THE TIMEOUT

* APPEARS AT CA1 Or i Hh PIA.

* TO CHANGE THE TIMER PERIOD# THE COUNTER IS

* LOADED WITH A NEW VALUE. THIS NEW COUNT

* Is EFFECTIVE AFTER THE NEXT TIMEOUT PERIOD.

*#*#**#*#####**####*###**##*#*####*****##**•****

* READ TIMER- -A AND B REGISTERS DESTROYED

FB2H HF RDTIME CLRA

FB25 7",“7 b / DE2F /\ O ! M TIMER LATCH COUNTER O

FB2B F6 DE2C LDB CTO GET i_SB OF COUNT

FB2B 86 DE2C LDA CT0 GET MSB OF COUNT

r S2E 39 RTS

« CHANGE TIMER PERIOD- -A DESTROYED

#

V

A CONTAINS LOCATION

* OF NEW VALUE

F82F A6 01 CCTIME LDA i#x GET LSB OF NEW VALUE

FB31 B7 DE2C STA CTO

FS3H A6 SH LDA X GET MSB OF NEW VALUE

F836 B7 DE2C STA CTO COUNTER 0 NOW CONTAINS NEW PERIOD

FB39 B6 DE29 TIMCHK LDA CRA CHECK FOR TIME OUT

FB3C HB AsLA

FS3D 2H FA BCC TIMCHK

F83F B6 DE2B LDA KPD CLEAR IRQ

FBH2 39 RTS TIMER NOW OPERATING AT NEW PERIOD

* TIMCHK IS ALSO USED AS SUBROUTINE CALL

# FOR TIMING NEEDS.

END

O ERRORS S) DETECTED

SYMBOL i ABLE

CCTIME FB2F CRA DE29 CTO DE2C CT 1 DE2D CT2 DE2E

CTRL i O 003CTRLTi 0060 (.• i k L. \ jL yy9 INTIME FBOO KPD DE28

LSB TO 0060 LSBT1 yyPSF MSBTO 0025 MSB72 00 1 0 RDTIME FB2H

TIMCHK FS39 TIMER DE2F

24
MO SUCH FILE

•a**#*##**##*##**##*

* ASA70D

* THIS ROUTINE PROVIDES A UTILITY PROGRAM TO

* OPERATE i HE ADAPTIVE SYSTEMS MODULAS ONE

* A iO D MODULE s=i642*

*************************%x#*x**#x*x##xxxxxxxxxxx

* SYSTEM EQUATES

DE10 DADC EQU $DE10

0700 ORG $0700

0700 INDEX RMB 2

O702 ADCVAL RMB Jim 0704 CHNUM RMB 4X

F843 ORG $FB43

0007 SETDP $07

* INITI ALIZATION ASS

FB43 BE DE10 INI TAD LDX #DADC

F846 CC 34F0 LDD »$34F0

F849 A

01 STA 1>X

FB4B E7 02 STB 2 . X

F84D 66 3C LDA *$3C:

F64F A7 03 STA 3#X

FB51 39 RTS

* CHANNEL SELECTION

F852 9F 00 CHSELT STX INDEX

F854 BE DE10 LDX ftDADC

F857 96 04 LDA CHNUM

FB59 4B ASLA

F85A 46 ASLA

FB5B 4B ASLA

F85C 4B ASLA

F85D A7 02 STA 2# X FS5F C6 OB LDB #B

l'86i 5 A ADC 1 DECS

F862 26 FD SMC! '-i U. ADC1

F864 9E 00 LDX INDEX

F866 39 RTS

* SELECT SAMPL INC MODE

F867 9F 00 SMSELT STX INDEX

F869 BE DE10 LDX t* DA DC

F86C CC 343C LDD *$343C

;'-6F A7 01 STA 1#X

BASE ADDRESS OF 1642 MODULE = PI

RESERVE TWO LOCATIONS FOR X TEMP

LOCATION FOR LATEST ADC VALUE

STORAGE r OR' CURRENT CHANNE_

:UMES RESET HAS OCCURRED

GET ADDRESS OF PI

SET A SIDE- -ALL INPUT * CA2 O' TP! ~ SET E SIDE--PB4-7 0UT#PB0-3 IN

SET CB2—OUTPUT# IRQ’S MAR ED

SAVE INDEX

Gb 1 BASE ADDRESS:

PUT IN CHANNEL SELECT

DO APPROX* 50 MICROS

FOR OP AMP TO S *AB I L I ZE

RESTORE INDEX

SAVE INDEX

Gfc. BASE ADDRE -•

ShT CA2-L0 FOR A

25
FB7

1 xL NOP

FB72 12 NOP

FB73 12 NOP

FB74 E7 03 STB 3* X REsE i ADC

FB76 9E 00 LDX INDEX RESTORE INDEX

FB7B 39 RTS

» A/D CONNER'S ION

FB79 9F 00 CGNVRT STX INDEX SAVE INDEX

F87B BE DE10 LDX *DADC

FB7E CC 3C34 LDD &S3C3H

FBBi A7 01 STA 1»X SET CA2-HI FOR HOLD NODE

FBB3 B6 04 LDA tt$4

FBB5 E7 03 S 1 B 3 1 X START ADC CONVERSION <CB:

F8S7 E6 03 ADCS LDB 3,X L-ECK FOR EOC

FS89 2B 03 BN I ADC4 IF RECEIVED- -READ VALUE

FB8B 4A DECA IF NOT FOUND > LOOP

FBBC: 26 F9 BNE ADC3 UN > IL LOOP COUNTER — 0

FSBE A6 02 ADC4 LDA 2t X READ UPPER 4 BITS

FB90 BA F0 ORA «$F0 MASK OUTPUT BITS

FB92 E6 B4 LDB 0 t X GET LOWER B BITS

FB94 40 NEGA DA~A IS COMPLEMENTARY OF

* 17 FB95 50 NEGB MUST BE NEGATED

FB96 B2 00 SBCA #0 ADJUST OVERFLOW

FB9B DO 02 STD ADCVAL SAVE RESULT

F89A 9E 00 LDX INDEX RESTORE INDEX

FB9C 39 RTS

0 ERROR (S) DETECTED

SYMBOL table:

END

ADC1 FB61 ADC3 FBS7 ADC: 4 F88E ADCVAL 0702 CHNUM 0704

CHSELT FB52 CONVRT FB79

SMSELT FB67

DADC DE10 INDEX 0700 INI TAD FB43

BINAR

-

26
*#**#**#**#* if «*#«#**#* if#*#****##**#**#*###*##

)f ASDTOA

* THIS ROUT I ME PROVIDES A UTILITY PROGRAM TO

* OPERATE THE ADAPTIVE SYSTEMS MODULAS ONE

* D TO A MODULE

»*#*:•)*#******!********#* x a##**#* a#*##########*#

OPT PAG

* SYSTEM EGUAlhS

DE50 DDAC EQU $DE50 DAC BASE ADDRESS

DE55 DSWITC EQU $DE55 ANALOG SWITCH SELECT ADDRESS

0700 INDEX EQIJ $0700 TEMP STORAGE FOR INDEX

0705 ORG $0705

0705 SWNIJM RMB x STORAGE FOR LATEST SWITCH VALUE

0706 DACVAl. RMB 2 STORAGE FOR LATEST INPUT VALUE

0706 DACOLD RMB 2 STORAGE FOR PREVIOUS INPUT VALUE

0007 SETDP $07

F89D ORG $F39D

* UNIT IALIZATION

FB9D BE DE50 INITDA LDX #DDAC GET BASE ADDRESS

FBAo 4F CLRA

FSA1 C6 06 LDB *6 ZERO DAG'S AND TURN SWITCH OFF

FBA3 BD 05 BSR DACINZ

FBA5 C6 OA LDB « 1

FBA7 BE 0700 LDX # INDEX

FBAA A7 80 DACINZ STA X + FBAC 5A DECB

F8AD 26 FE: BNE DACINZ

F3AF 39 RTS

* TURN SWITCH ON

FBBO 9F 00 SWNSET STX INDEX SAVE INDEX

FBB2 BE DE53 LDX ttQSWITC POINT TO SWITCH SELECT

FBB5 96 05 LDA SWNIJM GET SWITCH NUMBER

FBB7 66 RORA MOVE NUMBER TQ BITS 6 AND 7

FBBB 46 RORA

FBBv 6 6 RORA

FBBA A7 84 STA X SEND TO SWITCH SELECT “ppr 9E oo LDX INDEX RESTORE INDEX

FBBE 39 RTS

* TURN SWITCH OFF- -ALTERNATE TO SWNSET WITH 00

* UOhS NOT C MANGE CONTENTS OF SWNIJM

27
2-1B-B2 TSC ASSEMBLER PAGE i FRBF 9ir 00 SWNZER STX INDEX SAVE INDEX

Feet 8E DECS LDX *DSW I !

ET or- & 86 00 LDA »$00

FBC6 A7 89 STA 0,X

Fees 9E 00 LDX INDEX RESTORE INDEX

F8CA 39 RTS

* LOAD DAC VALUE

FBCB 9F 00 LDDAC STX INDEX SAVE INDEX

F3CD 8E DE50 LDX *DDAC POINT TO DAC 1 F8D0 D6 06 LDB DACVAL GET DAC INPUT

F8D2 D7 08 S [ o DACOLD

FBD-i 96 07 LDA DACUAL +

F8D6 97 09 STA DACOLD+

FBDB 59 LSRB SHIFT SO THAT 2 LO BITS ARE IN

F8D9 96 RORA BIT? 6 AND 7 OF B AND 8 HI BITS

FBDA 56 RORB ARE IN A

F3DB RORA

FBDC •56 RORB

F8DD ED 89 STD X OUTPUT UALUE TO DAC

FBDF 9E 00 LDX INDEX RESTORE INDEX

F8E1 39 K i 8

END

0 ERROR ( S ) DETECTED

28
2-18-82 TSC ASSEMBLER PAGE

SYMBOL table:

DACINZ FBAA

INDEX O70O

GWNZER F8BF

DACOLD 0708

INITDA FB9D

DACUAL 0706

LDDAC: F8CB

DDAC DE7-0

SWNSET FBB0

DSWITC DE3

SWNUM 07O

\ 29

U1

Ol
«*#*#**X**#**# #** ###*#*K*###*##*##**##*#

1

I

I

X SAVEC

i

* THIS ROUTINE CHECKS FOR DISABLING OF THE

* CMOS MEMORY ON STARTUP* THE CONTENTS OF

* THIS CMOS MEMORY ARE SAVED BY DISABLING

* THE INPUT TO THE MEMORY* THIS IS DONE BY

* CLOSURE OF THE STORE KEY (ALTERNATE ACTION)

* PRIOR TO POWER-OFF OR WHENEVER DESIRED*

* ON RESET OR POWER-UP t "HE UNIT WILL CHECK

* AND REQUEST RELEASE IF NEEDED* THAT IS THE

x FUNCTION OF THIS ROUTINE*

}

XX*XS'XX#**X*XX**X*#X*#**X**#**###* *****#*##**

x SYSTEM EQUATES

DE2A ORB EQU 5DE2A ADDRESS OF DATA REG OF PI

DE20 AC IEQU 5DE20

FECA WFS EqU $FECA ROUTINE TO WRITE STRING

070

SAVFLG EQU $070

0007 SETDP 507

F8F0 ORG 5FBF0

x CHECK FOR S:AUE AMD REQUEST RELEASE

X ASSLiMES INITIALIZATION COMPLETE!

FBFO 108!E DE20 SAVECK LDY »AC IPOINT TO COMMUNICATIONS REGISTER

FBF4 F6 DE2A LDB ORB GET PI A B DATA

FSF7 CH •40 ANDB »$H0 IS BIT 6 HI?

FBF9 •-i ~r

oC. / 0H BEQ CONTI IF NOT HIGH i MEMORY HAS BEEN SAVED

FBFB 0 F 0A CLR SAVFLG

FSFD 20 31 BRA CONT MEMORY AVAILABLE- CONTINUE

'C pPIT

I Lj l l OX FF CONTI LDA »5FF SET FLAG

F9Q1 97 0A STA SAUFLG

i-903 X -T 1 / Q5CH LBSR WFS REQUEST CLEARANCE OF DISABLE

F906 40 jp FCC: ' MEMORY NOT AVAILABLE- -UNSAVE 1

' F90A crp. 59 20 4E

F90E HF 54 20 HI

F912 56 .41 .49 AC

F916 H2 4f: AS

F912D 2D 55 HE

F91E ^Ci—J HI 56 H5

F922 21

F923 00 FCB 0

F92H 86 0H CHECK LDA «=$H

F926 C6 H0 CHECK

LDB «5H0

F928 F5 DE2A BITS ORB

F92B ~r F7 BEQ CHECK

F92D HA DECA

F92E 26 1 6 BNE CHECK

CHECK FOUR TIMES FOR COMPLETION

F930 17 0597 CONT LBSR WFS

F933 0D 0A FCB $ 0D * $ 0A

30
F935 52 41 44

F939 39

F^3A O0

F93B 39

FCC ’READY'

FCB O

RTS

END

0 ERROR < S ) DETECTED

SYMBOL table:

; C I A DE20 CHECK F924 CHECK 1 F926 CQNT

ORB DE2A SAUECK FBF0 SAUFLG 070A WFS

F930 CONTI FSFF

FECA

31
«#*##****#** a*#**#***#*##**## ##** ** tf *#**###

* KPDCTL

* THIS ROUTINE CONTROLS THE OPERATION OF THE

* KEYPAD ON THE PORTABLE INSTRUMENT » THIS

* UTILITY IS CONCERNED ONLY WITH THE IMMEDIATE

* OPERATION OF THE KEYPAD AND THE ENTRY OF A

* SINGLE CHARACTER .» AND ITS TRANSLATION INTO

* AsCii* OTHhR ASr'hCTS OF KEYr'AD USAGE ARE Fu

* BE CONTROLLED BY THE CALLING ROUTINES*

***#•#####•*#*#*####*#######*#**•#*##*#***•»#*#•&#*#

* SYSTEM EQUA i ES

DE2E KEYPAD EQIJ $DE2B DRA OF PI A ON 1 1H0 MODULE

0700 INDEX EQU $0700

0007 SETDP $07

F93C ORG $F93C

* INITIAL I ZAT ION- -ASSUMES RESET

F93C 3E DE2S INITKP LDX •KEYPAD GET PI A BASE ADDRESS

F93F 86 1 4 LDA • $ 1H A SIDE- INPUT* IRQ'S MASKED

F9HA7 01 STA 1 * X CA1 GOES LO * CA2 GOES HI

F9H3 CO- 3F0H LDD •$3F0H B SIDE -2 IN* 6 OUT MASK IRQ

F9H6 ED 02 S ! D 2 * X CB1 AND CB2 GO LO

F9H8 OQ RTS

* READ KKEYPAD --NO MATCH :SHOWN BY ZERO BIT SET

F9H9 9F 00 KB INCH STX INDEX SAVE INDEX

F9HB 3H HO PSHS IJ SAVE U

F9-D CE DE28 LDU •KEYPAD

F950 86 HO LDA »$H0 SET MASK

F952 A5 HI CHAR IN BIT A 1»U DO WE HAVE A CHARACTER < CA2-

F95H 27 FC BEQ CHAR IN LOOP » IF NOT

F9S6 Afc CH LDA u ELSE* GET CHARACTER

F958 c; p F96D LDX •KEYTBL

F95B Ai 81 KB INI CMPA X + + F95D 27 OA BEQ KBIN2

F95F BC F989 CPX KEYTBL +28 HAVE WE REACHED END OF TABL

F962 26 F7 BNE KB INI

F96H 5F CLRB SHOW NO MATCH FOUND I F965 9E 00 KBIN3 LDX INDEX RESTORE INDEX

F967 opr CO PIJLS U * PC RESTORE U REGISTER* RETURN

F969 E6 IF KBIN2 LDB -i . X SHOW MATCH

F963 20 FB BRA KB INS

# TABLE TO CONCERT KEYPAD VALUE TO ASCII

h 96D 1 1 (.>D KEYTBL FCB $11* $0D

32
F96F 12 33 FCB *12, $33

F 9 7 1 14 36 FCB $ 1 A * $36 F973 ie 39 FCB $18, $39 F97H 21 30 FCB $21 > $30 F977 Ui- FCB $22 t $32 F979 O A O FCB $24, $35 F97B 28 38 FCB $28 * 38

F97D 4 1 7F FCB $41 # $7F F97F A2 31 FCB $42 * $31 F981 AA 34 FCB $44# $34 F983 AQ 37 FCB $48 1 $37 F985 81 HA FCB $81 > $4A F987 32 AQ FCB $82 > $48

END

0 ERROR (S) DETECTED

SYMBOL TABLE:

char i n F952

KB I M3 F965

INDEX 070O

KB INCH F949

INITKP F93C:

KEYPAD DE2B

KB INI F9-5B

KEYTBL F96D

KBIN2 F969

33
************* X*** *******************************

* GETDATA

* THIS ROUTINE GETS A DATA STRING FROM THE

* KEYPAD OF THE PORTABLE INSTRUMENT ENTRY

* REQUIRES THAT 8 CONTAIN THE NUMBER OF CHAR*

* REQUESTED AND X CONTAINS THE STARTING ADDRESS

* FOR STORAGE ThE ROUTINE FORMATS THE STRING

* SO THAT LEADING ZEROS ARE INSERTED TO FILL

* THE REuUhS TED DA i

BLOCK* STORAGE IS IN THE

* form of ascii characters*

* INCLUDED IN THIS ROUTINE IS A SUBROUTINE TO

* ALLOW hOR APPkGX IMATlLY 100 MILLISEC PER

* CHARACTER

x***********************************************

* SYSTEM EQUATES

F929 KB INCH EQU $F929 INPUT CHARACTER FROM KEYPAD

FECA WFS EQU 5 FECA STRING OUTPUT ROUTINE

0 7 30 INDEX1 EQU $0780 TEMPORARY STORAGE FOR INDEX

FA0C CMDADR EQU error+ $ a

DE2B KEYPAD EQU 3DE2B

Fi-0B WRC EQU $FF08

Q70B ORG $070B

070B DATBUF RMB “> STORAGE FOR LATEST BUFFER ADDRES

07QD TCOUNT RMB T STORAGE FOR WORKING COUNT

O70E TCHAR RMB i STORAGE FOR WORKING CHARACTER

07OF TCHCNT RMB i COUNTER FOR ACESsEo iQ CHAR*

0710 TBUFFR RMB BUFFER AREA FOR STRING STORAGE

0731 RUNF LG RMB 2 FLAG TO INDICATE RUN STATUS

0007 bE \ uK $07

F9A3 ORG $F9A3

F9A3 9E 0B GETDAT LDX DATBUF GET STORAGE POINTER

F9A5 D7 0D STB TCOIJNT

F9A7 9F B0 STX INDEX 1 SALE INDEX

F9A9 BE 0710 LDX »TBUFFR POINT TO TEMPORARY BUFFER

F9AC 0F 0E CLR TCHAR

F9AE B6 DE2B LDA KEYPAD CLEAR ANY RESIDUAL CHARACTER IRQ

F9B1 BD 96 DATA! BSR KB INCH GET A CHARACTER

F9B3 07 2 D BEQ ERROR ZERO BIT IS ERROR FLAG FOR KB INC

h 9B5 17 007F LBSR CHARCK CHECK FOR TIMEOUT

F9BS 0A 0D DEC TCOUNT UPDATE CHAR* COUNT

F9BA 26 V uT BNE NXTCHR

F9BC Cl 0D CMPB #$0D

F9BE jLiw i 5A BNE ERROR! LAST CHAR* MUST BE C:R F9C0 E7 SO RET STB X + F9C2 32 20 PSHS U SAUE U

F9CH IF 13 TFR X .* u

34
F9C6 9E 80 LDX INDEX 1 POINT TO STORAGE AREA

F9CB DF 80 STU INDEX 1 F9CA D 6 0D LDB TCOUNT FETCH REMAINING NUMBER OF CHAR

F9CC r,-f

jL / 07 BEQ CHARS

F9CE 86 30 LDA #$30 LOAD A WITH ASCII ZERO

FvDO A7 80 ZEROS STA X + F9D2 5A DECB

F9D3 26 FB BNE ZEROS

F9D5 34 20 CHARS

PSHS Y SAUE Y

F9D7 1 08E O710 LDY #TBUFFR

F9DS A6 AO CHARS LDA Y + F9DD A7 80 STA X + F9DF 1 09C- 80 CMF'Y INDEX 1 F9E2 , —T/ 02 BEQ RET 1 F9EH 20 F5 BRA CHARS

F9E6 9F 0B RET1 SIX DATBUF

F9EB 35 E0 PULS V > U , PC CLEAN STACK > RETURN

F9EA Cl 0D NXTCHR CMF’B #$0D IS CHAR* A CR- F9EC 26 02 BNE NXTONE

F9EE 20 D 0 BRA RET

F9F0 Cl 7F NX70NE CMPB #$7F TS IT A DELETE

F9F2 26 02 BNE CHAR

F9FH 5F CLRB SHOW CANCELLATION OF ENTRY

F9F3 39 RTS

F9F6 E7 80 CHAR STB X + SAUE CHARACTERF9FB IF 98 TFR B> A

F9FA 17 050B LBSR WRC ECHO CHARACTER

F9F0 58 ASLB

F9FE 2B AD BMI CMD IF CMD * PROCESS

FAOQ 20 AF BRA DA TA

FA02 17 0AC5 ERROR LBSR WFS OUTPUT STRING

FA05 49 AC AC A5 FCC ' ILLEGAL CHARACTER !

FA09 47 A 1 AC 20

FA0D A3 AS Al 52

FA 11 i J3 5A A5

FA15 21

FA 17 00 FCB 0

FA18 20 18 BRA WAIT

FA1

1

0AAD ERROR

LBSR WFS

FA 1 D 5A 30 30 20 FCC '700 MANY CHARACTERS !

FA21 AD Al 4E 59

FA25 20 A3 A8 Al

FA29 CTV Al A3 5A

FA2D A5

FA31 00 FCB 0

FA32 17 FF1

WAIT LBSR KB INCH WAIT FOR ANY CHAR. INPUT

FA35 5F CLRB SHOW ERROR

FA36 39 RTS

rr A rJ ~r

i f iu/ Di 0E CHARCK CMPB T CHAR COMPARE TO PREUIOUS CHAR.

FAS 9 v "7 07 BEQ CKMATC

FA3B D7 0E NEW S ! B ; CHAR SAUE CHAR. IF NO MATCH

FA3D 86 03 LDA #3

35
FA3F Q7 OF STA TCHCNT SET FOR THREE INPUTS OF CHAR

FAHI 39 RTS

FAH2 OA OF CKMATC DEC TCHCNT

FAHH •-«“T xL / C«=TJL BEQ NEW

FAH6 3S 02 PULS A

FAH8 02 PULS A

FAHA 16 FF6H LBRA DATA1

FAHD BE FAOC CMD LDX *CMDADR GET CMD BASE ADDRESS

FASO 57 ASRB RESTORE CHAR

FAS! 3A ABX

ir A52 6h 8H JMP X

FASH 20 07 CMDH BRA CMDH1 HALT COMMAND ROUTINE

**i********************************************

* LOCATION RUNFLG MUST BE LOADED WITH THE

* ADDRESS OF THE ROUTINE TO BE STARTED ON RUN

* COMMAND. ELSE# AN ERROR WILL BE RETURNED. **********************************************

FAS6 DC o ^ CMDR LDD RUNFLG RUN COMMAND ROUTINE

FAS8 -T4-. / OC BEQ ERR0R2

FASA 3H 06 PSHS D PUT D INTO SUBROUTINE RETURN CALL

FASC 39 RTS ***********************************************

* THE HALT COMMAND ENTERS A LOOP AND STAYS THERE

* UNTIL A RUN COMMAND IS RECEIVED.

* UPON RECEIPT OF THE R CMD. THE PROCESSOR WILL

* RESUME AT THE ROUTINE THAT WAS IN OPERATION

* WHEN HALT WAS CALLED. THIS IS DONE BY

* REPORTING AN ERROR AND LETTING THE ROUTINE

* USE ITS EXCEPTION CALL. ***********************************************

FA5D 1

FEE9 CMDH 1 LBSR KB INCH WAIT FOR A CHARACTER

FA60 Ci HA CMPB «$HA IS IT AN R?

FA62 26 F9 BNE CMDH1 IF NOT LOOP AGAIN

FA6 H SF CLRB EL:SE# SHOW ERROR

FA 65 39 RTS AND RETURN

FA66 20 9A ERR0R2 BRA ERROR

END

0 ERROR ( S) D-ETECTED

SY MS01- TABLE

CHAR F9F6 CHARCK FA37 CHARS F9DB CHARS 1 F9D5 CKMATC FAH2

CMD FA4D CMDADR FAOC CMDH FASH CMDH1 FASD CMDR FA56

DA f ft 1 F9B1 DA t SUF 07OB ERROR FA02 ERROR! FA1 A ERROR'2 FA66

36
'
NO

«##*###***#*#*##*•#******#*•####*#****######***####**

* CLn’BUr

* THIS ROUTINE CLEARS AREAS OF MEMORY IN THE AS

* SYSTEM* THE STARTING AND ENDING ADDRESSES ARE TO

* BE PLACED IN THE LOCATIONS INDICATED.* BY THE

* CALLING PROGRAM * A AND X ARE DESTROYED*

K ***•»#*#**# X *#*#**#***#***#•##*«***#*#******#**#***#

0 7 L* B 0 i G

0007 SETDP

07DB TBUFST RMB

07DA TBUFND RMB

FA69 ORG

FA69 3H H0 PSHS

FA6B DE DA LDU

FA6D HF CLRA

FA6E 36 02 NEXT PSHU

FA70 1193 DB CMPU

FA73 •T'jLjA. LJ F9 BNE

FA75 36 02 PSHU

FA77 opr C0 PULS

END

0 ERROR (S) DETECTED

SYMBOL TABLE!

NEXT FA6E TBUFND 07DA TBUFST

$07DS

$07

START ADDRESS TO BE HERE

2 END ADDRESS i 0 E; h HhRE

$FA69

U SAVE U REGISTER

TBUFND LOAD U WITH END ADDRESS

A STORE A IN LAST LOCATION

TBUFST HAVE WE DONE ALL

NEXT

A

LOOP IF NOT DONE

U.*PC RESTORE U* RETURN

07DB

38
***#**##*#*#######****#*##**#***#*#**#**#*#*

* BIN2BCD

* THIS ROUTINE CONVERTS A 16 BIT BINARY

* NUMBER TO BCD AND STORES THE RESULTING

* 5 CHARACTER'S*

* ON START t D CONTAINS THE BINARY NUMBER * * AND X CONTAINS THE POINTER TO DECIMAL

* STORAGE ************* ********** *##*#**#* ************

* SYSTEM EQUATES

FA79 K 1 OK EQU $FA79

* TEMPORARY STORAGE

073E ORG $073E

073

SAOEA RMB 1 ACCUMULATOR A

073F SAOEX RMB Jmm STORE DATA POINTER

07-41 SAOEX! RMB 2 POINTER TO CONSTANTS

0007 SETDP $07

FAB1 ORG SFAB1

FAB1 9F 3F COBTD STX SAOEX SAOE DATA POINTER

FAB3 BE FA79 LDX m( 1 OK POINT TO CONSTANTS

FAB6 OF 3E CODEC

CLR SAOEA INITIALIZE DEC CHAR

FABB A3 OJ CODECS SUED V

A FABA 25 0-4 BCS CODECS OOERFLOW

FABC OC 3E INC SAOEA INC CHAR BEING BUILT

FARE 20 FR BRA CODECS

FACO E3 3H CODECS ADDD X RESTORE PARTIAL RESULT

FAC2 36 02 r'SHU A SAOE A REGISTER

FACA 9F 4 1 STX SAOEX

FAC6 9E 3F LDX SAOEX POINT TO STORAGE FOR RESUL

FACS 96 3E LDA SAOEA

FACA SB 30 ADDA *$S0 MAKE ASCII CHARACTER

FACC A7 8-4 STA X FACE -~i ~r 02 F'ULU A RESTORE A REGISTER

FADO 30 01 LEAX 1 1 X INCREMtN i X

FAD2

li-' TM 3F STX SAOEX

FAD-4 9E -41 LDX SAOEX

POINT TO CONSTANTS

FADS 30 02 LEAX 2 > X

FADS SC FAE3 CPX ±cK 1 0K+ 1

ARE WE DONE

FADE* 26 D9 BNE CODEC!

FADO 39 RTS

END

0 ERROR (S) DETECTED

39
SYMBOL TABLE:

DEC1

SALEA 073E SAOEX 073F SAOEX 1 0741

COBTD ...

FAB1 CODEC 1 FAB6 CODECS FABB CODECS FAC© K 1 OK FA79

n

40
##**###*#*## •**#**#*##*# «##**** *###***#*#

* BCD2BIN

« THIS ROUTINE CONVERTS A STRING OF 5

* ASCII NUMBERS TO A 16 BIT BINARY VALUE

* THE INITIAL STRING SHOULD NOT EXCEED

* 63 1 535*.

* X SHOULD POINT TO THE START OF THE

* ASCII STRING*

* THE RESULT WILL BE IN D*

*#***#####**###***-*******************#**

* TEMPORARY STORAGE

073A ORG $073A

07 6 A TEMP RMB 1 BCD STORAGE

073B TEMPI RMB jL BINARY STORAGE

0730 COUNT RMB 1 STORAGE FOR CHARAC !

0007 SETDP $07

* CONS TANTS

FA 79 ORG 5FA79

FA 79 2710 K10K FDB 10000

FA7B 03E8 FDB 1000

FA7D 0062 FDB 100

FA7F 000

FDB 10

FAB1 0001 FDB 1 FA83 0F 3A CVDTB CLR TEMP

FA85 0F 3B CLR TEMPI

FAB7 0F 3C: CLR TEMP 1+1 INITIALIZE STORAGE

FA89 i 0BE FA79 LDY »K 1 OK

FABD 86 05 LDA #$05

FASF 97 3D STA COUNT

FA91 crtr

•-.'I NEXT CLRB

FA92 A6 80 LDA X + GET ASCII CHARACTER

FA9H 80 30 SUBA #$30 MAKE BCD

FA 96 t 0E BEQ SUM

FA98 97 3A STA TEMP SAVE IT

FA9A CLRA

FA9B =rci CLRB

FA9C r~ r". TZ.Cs AH cv ADDD Y GET CONSTANT VALUE

FA9E 0A 3A DEC TEMP

FAAO 26 FA BNE CV ADD UNTIL DONE

FAA2 D3 3B ADDD TEMPI

FAAH DD 3B STD TEMPI

r AA6 0A '—

! P, CfU SUM DEC COUNT

FAAB 2- / 0-a BEQ EXIT

FAAA 31 LEAY 2 * Y

FAAC 20 E3 BRA NEXT

41
FAAE DC: 3B EXIT LDD TEMPI

FA80 39 RTS

END

O ERROR (S) DETECTED

SYMBOL TABLE!

COUNT 073D CV FA9C CUDTB FAB3 EXIT FAAE K 1 0K FA79

NEXT FA91 SUM FAA6 TEMP 073 A TEMPI 073

42
«******#*•*#*#*#*#*# ******************************

FIRQHDL

'Hlb ROUTINE IS AN INTERRUPT HANDLER FOR FIRQ WHICH CHOOSES BETWEEN A JUMP TO MONITOR AND

A REPEAT ROUTINE* SELECTION IS MADE BY

MEANS OF THE STATUS OF THE FUNCT SWITCH ON THE PANtL OF THE PORTABLE INSTRUMENT* THE FIRQ IS ISSUED BY PRESSING THE KEY MARKED RPT< MONITOR)

************************** t**##*#**######********

*

**

**

*

* SYSTEM EQUATES

07F6 EFIN EQU S07F6

DE2A FRQFLG EQU 5DE2A

FC3C NMI EQU 5FC3C

0700 INDEX EQU $0700

A7nn v i do ORG 50733

0007 SETDP 507

0733 RUNGNT RMB i 073*3 RPTADR RMB ojLm FADE ORG 5FADE

STORAGE LOCATION FOR FIRQ VECTOR

F'lA B SIDE DATA REGISTERENTRY ROUTINE FOR ASOl

NUMBER OF REPEATS PERFORMED

ADDRESS TO WHICH REPEAT GOES

* INITIALIZATION

FADE 9F 00

FAEO BE FAF

FAE3 36 10

FAE5 BE FC3C

FAE3 9F 34

FAEA 9E 00

FAEC 36 32

FAfcE 1C OF

FA10 39

FRQINZ STX INDEX

LDX #FRQUEC

PSHU X LDX #NMI

STX RPTADR

LDX INDEX

PSHU Y »X;

ANDCC tt$OF

RTS

SAVE X

GET ADDRESS FOR FIRQ ROUTINE

SAVE IN STACK

POINl TO MONITOR

SAVE AS DEFAULT FIRQ

ENABLE FIRQ

* INTERRUPT HANDLER

FAF 1 FAFP

FAF6

FAF9

FAFB

F6

2 A

BE

AF

3B

DE2A

06

FC3C

61

FRQVEC

DEBUGLDB

BPL

LDX

STX

RTI

FRQFLG

REPEAT

ttNMI

ins

READ PI A FOR FUNCTION FLAG

IF BIT7 = 0 REPEAT ROUTINE

DO MONITOR STARTUP

SET LOCATION TO JUMP TO

JUMP TO ASOI

FAFC

FAFF

OC

6E

r?ov~» 9F 073-4

REPEAT I NC

JMP

RUNCNT

CRF'TADR ]

& ERROR (3) DETEI

END

43
SYMBOL table:

DEBUG FAF6 EFIM 07F6 FRQFLG DE2A FRQINZ FADE hRuVEC FAF1

INDEX 0700 NMI FC3C REI-'EA i FAFC RF'TADR 073*1 R'UNCN

F 0733 .
a**#*##*##*#**####*###*##**####**###*#**###* a##*#*#

* STARTUP

* THIS ROUTINE IS ENTERED WHEN RESET IS RECEIVED BY

* THE ADAPTIVE SCIENCE SYSTEM* IT PERFORMS ALL

* REQUIRED INITIALIZATIONS* AND THEN POINTS TO THE

* START OF THE ROUTINE* AND WAITS FOR A RUN COMMAND

******#*»•*#* £*#*#**##******###*•»**#* #**«#**#**###**

* SYSTEM EQUATES

FBOQ INTIME EQU $FB0O INITIALIZE TIMER

FB-43 INI TAD EQU $FBH3 INITIALIZE A TO D

FB9D INITDA EQU $FB8D INITIALIZE D TO A

F93C INITKP EQU $F93C: INITIALIZE KEYPAD

07D8 TBUFST EQU $07DB

07 DA TBUFND EQU $07DA

FCQQ RES EQU 5FC00 INITIALIZE MONITOR AND AC I

FADE FRQINZ EQU $FADE SET UP FIRQ ROUTINE

FBF0 SAVEuK EQU $FBFO CMOS MEMORY SAVE CHECK

070

SAVFLG EQU $070

FA69 CLRBUF EQU $FA69

3010 BEGDA

EQU $301 0 START OF CMOS DATA STORAGE

07-43 STARID EQU $0743

0731 RUNFLO EQU $0731

F949 KB INCH EQU $F9-49

FA56 CMDR EQU $FA56

8002 SAVSTO EQU $8002 POINTER TO CMOS DATA STORAGE

F000 BEGIN EQU $ F00 0 LOCATION FOR START OF

SEQUENCE

0007 SETDP $07

FB 1

ORG $FB1F

FB1F 36 20 STARTUP F'SHU Y FB2.1 8D BB BSR FRQINZ

FB23 86 07 LDA «$07

FB25 j. BB EXG A * DP

FBL’7 17 FCD6 LBSR INTIME

FB2A *f T -&&•<? p£ l*itmis ti V f

*' FB2D 17 FDl3 LBSR INI! AD

FB30 17 FE09 LBsR INITKP

FB33 BE 0000 LDX #$0000

FB36 9F DB STX TBUFST POINT TO START OF SCRATCHPAD

FB3S BE 0707 LDX #$07D7

FB3B 9F DA STX TBUFND POINT TO END OF SCRATCHPAD

FB3D 17 FF29 LBSR CLRBUF

FB--0 BE 0000 LDX #$0800

F243 9F DB STX TBUFST POINT TO DATA STORAGE

FBHH BE 0FFF LDX #$0F Fr

FB48 9F DA STX TBUFND POINT TO END OF DATA STORAGE

F 8HA 17 FF1C LBSR CLRBUF

F BHD 1 / FDA0 LBSR SAVECK

FU30 QD 0A TST SAVFlG HAS CMOS MEMORY BEEN PRC

FB52 26 20 BNE SAVDAT YES* GET START OF UNPROTEC

45
FB5A BE BO 10 LDX

FB57 9F 43 STX

9F DB STX

F'ss: R BE B7FF LDX

FB5E 9F DA STX

FB60 17 FF06 LBSR

FB63 CC FOOO GO LDD

FB66 DD 31 STD

FB68 1FDDE GETR LBSR

FB6B Cl 4A CMPB

FB6C 26 F9 BNE

FB6F - —r 1 / FEE4 LBSR

FB72 27 m BEQ

FB 7A BE BOO2 SADDAT LDX

FB77 9F 43 STX

FB79 20 EB BRA

0 ERROR ( S ) DETECTED

SYMBOL TABLEJ

END

BL-GDm • BO 10 BEGIN FOOO CLRBUF

GETR FB68 GO FB63 IN I TAD

I NT [ ME FBOO KB INCH F9-9 RES

SAUECK

TB'.'FMD

FBFO

07DA

SAUFLG

TBUFST

070

07DB

SAUSTO

©BEGDAT

STARID SAUE POINTER TO DATA AREA

TBUFST CLEAR CTOS MEM*

»BEGDAT+$7EF

TBUFND

CLRBUF

©BEGIN

RUNFLG POINT TO PROGRAM ENTRY

KB INCH

»$4A

GETR IF CHARACTER NOT R LOOP

CMDR

STARTUP TRY AGAIN* IF ERROR

SAUSTO GET NEXT DATA LOCATION

STARTD STORE IN POINTER

GO

FA69 CMDR FA56 FRQINZ FADE

F843 INITDA FB9D INITKP F93C:

FCOO RUNFLG 0731 SAUDAT FB74

8002 STARTD 0743 STARTU FB1F

46
t******************************##**#*****^*****

PGMSAUE

* I^ 1 !, 50IJTINE WILL DISABLE and enable access * TO ;• HE CMOS MEMORY WHILE THE PORTABLE UNIT"

* IS POWERED UP* TO RETAIN MEMORY DURING

* “'OWER Oi- F . THE SALE BUTTON MUST BE DEPRESSED

a**********#########*#####

* SYSTEM EQUATES

DE2A ORB EQU $DE2A

FB7D ORG SFB7D

FB7D CC 7F0H PGMSAU LDD tt$ 7F0H

F BB0 7F DE2B CLR ORB+ 1 FBB3 FD DE2A STD Oh'B

FBB6 86 3F LDA #$3F

FBBB B7 DE2A STA ORB

FBBB 39 RTS

FBBC: B6 7F UNSAVE LDA #$7F

FEBE B7 DE2A STA ORB

FB91 39 RTS

FB92 CC 3F0H EXT LDD ^$3F0H FB95 7F DE2B CLR ORB+1

FB9B FD DE2A STD ORB

FB9B 39 RTS

END

DA I A REGISTER PI A B SIDE

DISABLE CMOS MEMORY

CLEAR CONTROL REGISTER B

SEi B SIDE BIT 7- INS RE3T-0U

SET BIT 6 LO

SET BIT 6 HI

RETURN TO EXTERNAL CONTRQi

CLEAR CONTROL REGISTER B

SET B SIDE 2- IN 6- OUT

0 ERROR (S) DETECTED

SYMBOL TABLE:

FB92 ORB DE2A PGMSAU FB7D UNSALE FBBC

47
*«**#**###***«*#**# #»#** #*##** *###***#*#######*

* UN/PACK

* THIS ROUTINE PACKS FOUR 6 BIT CHARACTERS (ASCI I)

* INTO THREE 3 BIT BYTES* OR UNPACKS THREE EIGHT

* BIT BYTES INTO FOUR BYTES* RECONVERSION TO ASCII

* IS ALSO DONE. ON ENTRY*

* FOR PACKING* X POINTS TO THE START OF DATA

* Y POINTS TO THE START OF STORAGE

* D CONTAINS THE NUMBER OF A CHAR BLOCKS

* FOR UNPACK * #

*

X CONTAINS THE START OF STORAGE

Y CONTAINS THE START OF CHAR* STORAGE

D CONTAINS THE NUMBER OF A CHAR BLOCKS

**###*#-****###*###**##***•****####*'#*##***###*##*#**###

FB9C ORG SFB9C

FB9C HC PACKS INCA ADJUST COUNT OF MS BYTE

F39D 3A 06 PSHS D PUT COUNT ON THE STACK

FB9F 8D OA PAC1 BSR PACK PACK A INTO 3

FBA1 6A 6DEC 1 *

LS COUNT

FBA3 26 FA BNE PAC1

FBA5 6A EA DEC 0*3 MS BYTE

FBA7 L6 F6 BNE PAC1

FBA9 '-s rr* OO 86 PULS D * PC CLEAN UP STACK* RETURN

FBAB EC 81 PACK LDD X + + GET FIRST TWO CHARACTERS

FBAO 58 ASLB

F8AE 58 ASLB

FBAF 3 y ASLB

FBBO 49 ROLA

FBB! 58 ASLB

FBB2 H9 ROLA

* ACCA IS NOW PACKED AND ACCB CONTAINS A BITS

* LEF7 JUST IF I ED

FBB3 A7 AO STA Y + STORE FIRST PACKED BYTE

FBB5 A6 BO LDA X + GET THIRD CHAR*

FBB 7 A A LSRA

FBB8 AA LSRA

FBB? BA OF ANDA #$0F CLEAN UP MS NYBBLE

* ACCA HAS MS NYBBLE AND ACCB HAS LS NYBBLE

FBBB 3 A &A PSHS B PUT B IN TEMP STORAGE

FBBD A A EU ORA s+ PUT CHAR TOGETHER* CLEAN

FBBF A7 A0 STA Y + STORE SECOND PACKED BYTE

FBC1 EC 81 LDD X + + GET LAST TWO CHAR*

* PICK UP 2 L3B FROM A AS 2 MSB IN B

53 ASLB

58 ASLB

FBC3

FBCS

48
> 44 LSRA

FBC 6 56 RORB

F 3C 7 44 LSRA

FBCB 56 RORB

FBC

E7 AO STB Y + STORE THIRD PACKED BYTE

FBCB 39 RTS

a***###*#####*#####**#*####******##*#***##***###

FBCC 34 20 UNF'AKS PSHS Y FBCE 4C INCA ADJUST COUNTER MS BYTE

FBCF 34 06 PSHS D PUT COUNT ON THE STACK

F 3D1 8D OA IJNP1 BSR UNPACK UNPACK 3 INTO 4

FBD3 6 A 61 DEC 1 t o LS COUNT

3D5 26 FA BNE UN PI

FBI) 7 6 A E4 DEC S MS COUNT

FBD9 26 F6 BNE UNPI

FBDB 35 A6 PULS D * V * PC CLEANSTACK* RETURN

* UNPACK RETURNS FOUR RIGHT- JUSTIFIED 6-BIT

* CHARACTERS FRON THREE PACKED 8-BIT BYTES

FBDD 34 06 UNPACK PSHS D SAUE D REGISTER

FBDF EC 30 LDD X + FBE1 44 LSRA 4

4 FBE2 56 RORB : 16-BIT SHIFT# TWO PLACE

F :E3 44 LSRA 4 FBE-i 56 RORB 4

4

* ACCA IS NOW UNPACKED

FBE5 54 LSRB

FBE6 54 LSRB

* ACCB IS NOW UNPACKED

FBE7 ED Ai STD Y + + STORE 1ST AND 2ND CHARS

FBE9 EC BO LDD X + GET 2ND AND THIRD BYTES

FBEB 58 ASLB 4

4 FBEC 49 ROLA : ANOTHER SHIFT t TWO PLAC

FBED 58 ASLB 4

4 FBEE .49 ROLA 4

4 FBEF 84 3F ANDA #$3F CLEAR TOP 2 BITS

* ACCA IS NOW UNPACKED

FBF

T~ L CO 80 LDB X + GET 3RD BYTE AGAIN

FBF3 3F ANDB »$3F

* BOTH ARE NOW UNPACKED

FBF5 ED Al STD Y + + STORE THIRD AND FOURTH Cr

FBF7 d-J 86 PULS Dt PC RECOUER D> RETURN

END

49
& ERROR (S) DETECTED

SYMBOL TABLE:

PAC 1 FB9F PACK FBAB

UNPAK3 FBCC

PACKS FB9C IJNP1 FBD1 UNPACK FBDD

50
N BS-1

4A 'REv. 2 -ac) U.3. DEPT. OF COMM.

BIBLIOGRAPHIC DATA

SHEET (See instructions)

1. PUBLICATION OR

REPORT NO.

NBSIR 84-2853

2. Performing Organ. Report No. 3. Publication Date

April 1984

4. TITLE AND SUBTITLE

Measuring the Rate of Corrosion of Reinforcing Steel in Concrete

5. AUTHOR(S)

E. Escalante, M. Cohen, and A. H. Kahn

6. PERFORMING ORGANIZATION (If joint or other than NBS. see instructions

NATIONAL BUREAU OF STANDARDS

DEPARTMENT OF COMMERCE

WASHINGTON, D.C. 20234

7. Contract/Grant No. PO-8-3-01 1

8 . Type of Report & Period Covered

Interim 1980 - 1983

9.

SPONSORING ORGANIZATION NAME AND COMPLETE ADDRESS (Street. City. State. ZIP)

Federal Highway Administration

Paving and Structural Materials Group, HRS-22

Washington, DC 20590

10.

supplementary notes

FHWA Contract Manager: Y. P. Virmani

| | Document describes a computer program; SF-185, FIPS Software Summary, is attached.

11.

ABSTRACT (A 200-word or less factual summary of most significant information. If document includes a significant

bi bl iography or literature survey, mention it here) The progress on a research program directed at developing a nondestructive

method for measuring the corrosion of steel in concrete as related to bridge deck

deterioration is reported. This report summarizes the past work and describes the

new developments on this project. The five phases described are: 1) a literature

review, 2) preliminary studies, 3) measurements in concrete, 4) field measurements,

and 5) development of a microprocessor system.

12. KEY WORDS (Six to twelve entries; alphabetical order; capitalize only proper names; and separate key words ov semi coicn Bridge deck corrosion; corrosion in concrete; corrosion of steel, polarization techni

rebar corrosion.

13. AVAILABILITY 14. NO. OF

PRINTED PAGES

|X 1 Unlimited

|

1 For Official Distribution. Do Not Release to NTIS 86

1 Order From Superintendent of Documents, U.S. Government Printing Office, Washington, D.C.

20402. 15. Price

[y~l Order From National Technical Information Service (NTIS), Springfield, VA. 22161 $ 1 1 . 50

UiCOuu-OC ,r>4)-»»0
i ' J5 2

' »• 'fen •~T<oSn ’

. 8>rn ;m

(

.