PASS 1
PASS 2
00:000 000000   # The Gill Test
00:000 000000   
00:000 000000   # Copyright Tom Jennings 1999-2002, tomj@wps.com
00:000 000000   
00:000 000000   # A measure of the arithmetic speed of an automatic computer. It is
00:000 000000   # defined as the time in milliseconds required for a computer to:
00:000 000000   
00:000 000000   #
00:000 000000   # A + B = C {Store C} C + D + E = F {Store F} G x H = K {Store K} 
00:000 000000   
00:000 000000   # when all access is to the fastest internal storage used in the computer
00:000 000000   # in question. For a one-address computer only with one constant storage
00:000 000000   # access storage device {such as magnetic cores}, a gill is equal to
00:000 000000   # ten times the average operation time.
00:000 000000   
00:000 000000   # {Named after Stanley Gill of Cambridge University} 
00:000 000000   #
00:000 000000   # In this age of Whetstones and Drystones and 500 MHz chips this measure
00:000 000000   # in m-sec is not very significant, but back in 1960 it was a valid
00:000 000000   # speed test.
00:000 000000   
00:000 000000   	track 0
00:000 000000   
00:000 000000   	sector 0	# OPTIMIZED 64x5
00:000 000000   
00:000 270047   	ldm a		# A
00:001 240050   	addm b		# + B
00:002 320051   	sto cc		# = C
00:003 240052   	addm d		# + D
00:004 240053   	addm e		# + E
00:005 320054   	sto f		# = F
00:006 300010   	lda C+2
00:007 000000   #	jump mult
00:007 010000   	halt 0
00:010 000000   
00:010 000000   # Multiply MCAND by MPER and leave the 
00:010 000000   # single-precision result in MQ 
00:010 000000   
00:012 000012   	sector 10
00:012 310035   mult:	sta multr
00:013 170000   	and 0
00:014 320070   	sto MQ
00:015 210001   	ld 1
00:016 320067   	sto mtest	# m'per digit tester
00:017 000000   
00:017 270066   mult1:	ldm MPER
00:020 250067   	andm mtest	# test m'per digit
00:021 040000   	snz		# (carry is clear)
00:022 220026   	jump mult2	# add in MCAND if 1
00:023 270071   	ldm MCAND	# MCAND lo
00:024 240070   	addm MQ		# + MQ lo
00:025 320070   	sto MQ		# = MQ lo
00:026 000000   
00:026 270071   mult2:	ldm MCAND
00:027 070000   	rlc		# shift multiplicand
00:030 320071   	sto MCAND	# MCAND * 2
00:031 270067   	ldm mtest
00:032 200000   	or 0		# clear carry
00:033 070000   	rlc
00:034 040000   	snz		# if no more bits
00:035 220000   multr:	jump 0		# done.
00:036 320067   	sto mtest
00:037 220017   	jump mult1
00:040 000000   # 33
00:040 000000   
00:047 000047   	sector 39
00:047 361100   a:	123456
00:050 361100   b:	123456
00:051 361100   cc:	123456
00:052 361100   d:	123456
00:053 361100   e:	123456
00:054 361100   f:	123456
00:055 361100   g:	123456
00:056 361100   h:	123456
00:057 361100   k:	123456
00:060 000000   
00:060 000000   
00:066 000066   	sector 54	# OPTIMIZED 64x5
00:066 525252   MPER:	174762		# 525252, 9 1's, 9 0's
00:067 000000   Mtest:	0
00:070 000000   MQ:	0
00:071 000000   MCAND:	0

SYMBOLS
       A=000047       39=000047        B=000050       40=000050        D=000052 
      42=000052        E=000053       43=000053        F=000054       44=000054 
       G=000055       45=000055     MULT=000012       10=000012        H=000056 
      46=000056        K=000057       47=000057       MQ=000070       56=000070 
   MCAND=000071       57=000071    MULT1=000017       15=000017    MULT2=000026 
      22=000026    MTEST=000067       55=000067     MPER=000066       54=000066 
      CC=000051       41=000051    MULTR=000035       29=000035 