XEROXPALO ALTO RESEARCH CENTER3333 Coyote Hill RoadPalo Alto California 94304Jasmine Scanner ManualBY Joe MalesonVersion of August 11, 1980[IVY]Docs>JasmineManual.PRESSThis is the manual for Jasmine, a low-cost experimental optical scanner which operates at amaximum resolution of 96 8-bit samples per inch. It is intended to contain all the informationnecessary to build hardware and software interfaces, and to understand the scanner electronics. eN?;99A>BHKMLGCA?9?66@[a_XRSPLQQ^gqthXKINWODDFLIBIA:>0-424//4/-%.HNQFED>IINSMPXMT`S>WWSUSbSX[^MVVPWQCb`VZRTKKcSaZSHUXORe\YUOKFIPKGIIF@B?C5;C5437414-.164:="$.&(4<@CIRJLFCHEA=9<8NPPQG=FDOJHGB?;=>A<7MVTJJ@BJHFNVZXMRSDFX`T\RVNV__NNVTTVJjYSW]PDHcYa]YRSSW`fVVTECMESNGLE3;E3167;321/.22123Kſo$(+#$59CJLKKB@GDBA=@;6OU\OIBJLGIO]S`JRUKCSXNYP\P^^ePV\]_\]nb^aW\UXjUb_MHVZ^]m\WQA?RGZVDHEC:CA9=8095A@7540/89039AȾŽc#0,).27HNNPPBHEEEDBA82INXKKFKKNLMXWZQXXIJURMWZ^SacbMZ^ao^dmbccX_NQkSi^UHUPa^bZUWDCJKZN>GLF5HB7G:250=:992)-86228=[%2(&-8;UQMJHDBCA?C==<8KOQLKMOJIFFXTYIORMUWSJVWWL_\dTW`fthjebdcZ^OMbU^[URNZ_Zd[ZYGGRITP?HNI4CH>H<372?=77404:83.9C\˼Q$/*'/?DNIKMKDAFC?CA:82EIRMABKOFKGZRQIRHDHIRLQXRS`Y_QWa`m_ccc`_WXML]TbcRIPT[XaUUZLAJEPO6>II7@DGL--54<84:5/686,)1;DĻG#-*#35;GIFFA?@<<=;978=>@JK?8JMA@@QNLGKN?DHPDDSLJZXXKP][j`a]V]UT]IM\RUYSDPQTUZWIK<0+2.?:570/.7.&$+3;ſ<#%$#237:?GHGG@=7=8675-?EJL>8NP:STWe\\WQ_UN^HI\W[XGCHMQYXQKJAA??LM6<:B3A:H<+3.,876/6015,#'-&2e¿ò2&)(%096A@>>:<985752:40DKJJ>CNQG@FT\K@OOAGOT?JTQBQRQHSQTdYXQNbQPZCO]ZXYOCHITSSUMJ?;B=DG::=E:B9552<=75:646320/)03($+*.548@=AAA><:9944657JRKCHXZXRMLSXZHMUFPLVBRZWFPO[GVYT\TNLb^VV\U_WZZ]RBLMTQWWQMC?GGQN?@DN:@A=?@8;8BB;;:=EGV^ly¿),..0=86>=;:8;675:MQN;UW[VYNFS^YKIOFRO\FJUZFUNVO\[SZRK[b\XU]P]V\YZUDMKZYT[VPGAF=NPUY]XWRKO`XLOO>POUDOOSBTOZEW]PNGPa[ZVW]QWOYY]RJUKXW[ZVSGA@DNL?EIMB<;>;61-GFK>KNZSUJOEVMGHQ>>:@CLJGBE;SFC@M9HGD=@DHHD:@GE=FMR8@LCJHNLCKCGE@E=EFKRU\eyzg`R@4-05<Ľƾw!(&")+*/,1412631-0/,*(&7;12:A=7=>>2@?=8<27=<5GIOT[fnxþĿ0=ȿüm!"!#&%*'*)'*)'(&$14&45@4:5=95;;96800mB"+:H}eO?/(! *0}RxB)7@|n`VF9+&(%&!!!"$#*CP{7(4;¾rcSI>0.)'$#!#%" (!  #T`Ľ3 %$)+)#&'!%/7¿ĽÿNB70,.*%)&'* ! !!"E!SǨO¿/ "#"#" &+6þ!*(&""#! /.M÷¾)"!$(/¸# ';¿"5D !'2žǼ!!  9þ#$- +9B!#$$#""!2ÿ"! baaýýĶ$$$&" " %;j`c^Ŀǿ*!!# %6M\%(&-24ZWR0 $6DOYýAEGKKOYY[aahmpvu[`\Y(#'%$"! "")8BEASļ}wpd[KBZaeſ"'%%$!" 0:E?-# 3gkjd]VUROE820& SQTQ$(+&! ##  (:FFGILTeÿ¾ʹs]G5$!\YVģ)*&%!"!#-9@KOGEJFU[b½ýe^ar)+(&!!!! # !"$#)..,,,222AJMNKAA==CECV_ [[XkƾüC0.'##$"!$')%"*/33469:;;87;66;=C?7485:96/2K ^_\]761442533:?84769:9:=;562//*,298/&,.243+&)6Za  jhmh{ĿĶ}PSRTSMHLKGG@?89:411.+-+'('(-22*##(+.'!"#(2T(otprm¹¹faa`aZVULF@;987730310.-+(*131.+,(-./$ #')4Tþ½!$!!!$$" {z~}w͹ǢV[ZVOHHED;887872/1..*/('+.13,*&+5.(# "%!&,3X¾½V #$(+)(*69=;=<6/43,#%ÇMTYTLJHGF?=J\rڱEJLIFE??<=9;>879:410.3872203450*)(),-*%%-1@Jdֿ˨4416@PSUOMSYau~Ͷ݁FIKKFDA;:8=9;95533469851643751./,+/,.*,',:DMj׼֟EIITmz֓ǼKFGEGA;786:67454969751277<210*++(")'*/>EVch^XvټʍLW϶|up˽ۿڙAIE:53174-537963+/9FNQXTTF>5)%%*4f۸yBJ՜uDKӽlFB;A:;88Nkwii˹T9:=:7369;24KqѠ2=69=IU`c`UJ<*" !""#  # #,rպAPk׻\>bi{yt\__YOC2*%%(()! #!$#!# "! !  "!!0yоʿ6StӽhK?>:JضE++$$!&%,%#$'# %!!"##"! !&!!! !"$.к+i~םQ@CicvnY_ԤC**%&$%#&$'!%$ $$% ! "$-̪8TR˘qZ^MCABE\ɍD#%%# $%("&"!#!"$ 'ǡPT@Qy`<jǿpd_W<3*TǹٹY/.)1(&)/',')$$'%$$$(/*$&"'#$#$'1BQl~rnmeZE:5ÿվ[//()%,+(('*'%$&&&)$"##"&-AQoľxtmeYNE?DŸ~¢[--)'$*&('%&)#"%!!-1B[vȸpmrrz{uwofZUWu׿ŧ]*,(%%'&($&+2EaxȷfI-!3K\lwi]SиЫg.'*)4K]vmS9- !")7Bb|zpjѿt\70ɽΪȑpnP8+$#").5?NXluv}z}qeZaϹqaO;, !ǻˤȹ\>.!"4FWmyoqqmlcwcL7)"(4DLQ__VΦǷ|`J2# # (4DWatytgb># '1:DYdjmqmrqurkɧĭ}bP9*)()2;H[es|xskdYamvzvzx{|vtsʥȵiO=($/3AQYh|{ǧóxX?'$&'5L]yɩȿxYH6'&.7M[tùvu_P;)))/BVkz|o]H7E0&!"&(,AO`l|jP=5%#&,)s{}IPZs{yhTC-! #.-0.,/4!ĵl\D5)!$()-/*/0(# #lZ@1&,(++$/-.0,&*"&,)( !"v_L9,""*06;;716,%-&&+!)%'('#!#!ŶmX;-'&$,1846;91,)$# &,*))$")23,# ~pfyúv^F6'"'(19861+.,-)) $,042(!!""./3.)##),"!ĻeW@5,,5,35/4670%,#"#'"()0+(*$'2661*##+,154363-ſpZJ@./115?><;A6251(+'"#--**)&!(6<@<:3("**0167755+' p)WXq)`Fr)`r)`fs `0r \q ;\ r X2t S&u J?u5mJu I Cu7I u GuGMuHGvAsvA v@v@6v?v?bv>v>v>%v=v=Qvmu>mu2<u<u2;eu;e u29u9"q 6u251u517u23u3u22)u2)&q .u2-zu-zu2+u+u2*ru(*r u2(u((u2'iu('i q $>u2"u(" u2!6u(!6u2u(u2.u(.u2u(u2&u(& u2u(u2(q u2nu(nu2u(q u2 ;u( ;TVm$vΚtΰν΄z(JasmineBravo.PRESS(JasmineManual.PRESS(JManCover.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual31. IntroductionThis document describes Jasmine, a low-cost experimental scanner. Jasmine moves an originaldocument past a linear detector array to produce a gray-level image which can be displayedimmediately on a CRT, stored on a file, or transmitted to a printer for hardcopy. It operates at amaximum resolution of 96 8-bit samples per inch, and moves paper at a maximum speed of 2inches per second. It communicates through a simple computer interface which allows it to connectto an unmodified AltoII or D0. The scanner speed and resolution closely matches the Alto/D0capabilities: neither machine can accept data at paper speeds above 2"/sec; doubling the resolutionwould produce about 4Mbits/page which is unrealistic for the Alto/D0 storage capacities.The scanner hardware consists of two printed circuit boards containing about 40 TTL chips, twopower supplies (+5V and -12V), a modified TC200 telecopier paper transport driven by a smallstepper motor, an f4.0 28mm lens, a front-surface mirror, and a light bar containing ten 48V ACbulbs. The unit is packaged for desktop use in a sheet metal box measuring 15 3/4" x 19" x 4";the paper transport housing rises about 3" above the top of the box, and lifts on hinges for clearingdocuments. The on/off button is mounted on the transport top. Four screws attach the metalcover of the scanner box to the base. On the rear plate are a female AC plug, a 3/4 amp fuse, anda female 25 pin connector.The electronics consists of a simple state machine which drives an A/D converter and feeds the 8-bit output values into a FIFO. In addition, per-pixel correction is provided in order to produce auniform digital output range for each element in the detector array. There are 6 bits of offsetcorrection and 6 bits of gain correction for each element, held in three 1024x4 static RAMs. Theoutput variance among elements when no light is incident is called dark current leakage, andproduces a DC offset which must be corrected. The gain correction takes care of the light responsevariation among elements.PeopleThe Jasmine scanner represents a joint effort between the Computer Science Lab and the OpticalSciences Lab at Xerox PARC. The analog electronics were designed by Ed McCreight (CSL), theoriginal mechanical and optical design were done by Gary Starkweather (OSL) and the digitalelectronics and software were produced by Joe Maleson (CSL). Fabrication and test of initial buildof 25 units was carried out by Terry Haney, Frank Vest, and John Henning (Garage). u fuGfXq%bu ] u]Ou \2u-m\(u Zcu YuaY@u W+u&W7u UuU>u TyuzTyNu RXu OSuAO u Ni\u LXuBLu Ka1u*zKa.u I uqI\u HY>u4HYu Fu^FGu EQu BIuBIFu @auGI@u ?A4u,?A-u =Ou<=u <8Cw8D<8w:<8uE/<8u :.u(:5u 90w 6(u 3 u3 @u 18u0t1$u 0u0Du .5u-..u -RXu + TVm$[ΚtΰνX΄z(JasmineBravo.PRESS(JasmineManual.PRESS(JManCover.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual42.External InterfaceJasmine connects to an external computer through an 8-bit input and 8-bit output bus. Datatransfer from Jasmine requires an additional input and output control bit.2.1Jasmine ControlThe command byte from the controlling computer to the scanner is functionally divided into:Enable[0], Command[1-3], and Data[4-7]. To avoid hardware transition states, the command byte isfirst sent with Enable low (0), then high (1), and finally low (0). For commands which do notrequire any data, the state of the four Data bits is not important.The Jasmine logic package is controlled by a state machine (sequencer), implemented with a ROM.There are four possible sequencer states: Wait, Scan, Load, and Init. When Jasmine is powered up,this sequencer will be in some random state. The sequencer is moved from any state to its Waitstate by a LOAD command followed by a START command. From the Wait state, a STARTcommand moves the sequencer into Scan state, in which it produces the next scan line of samples.From the Wait state, a LOAD command moves the sequencer into Load state, in which it loads thecorrection RAMs with data received from the external computer. The Init state is entered wheneither 1) the sequencer is Scanning, and a LOAD command is received, or 2) the sequencer isLoading, and a START command is recived. The sequencer moves from Init to Wait on the fallingedge of the START command line. 2.2CommandsSTART (111)The start command begins a new Scan cycle. In this cycle, the detector array first receivesa pulse which causes it to begin clocking out samples, and then a uniform train of clockpulses is generated. The amount of time that light is integrated on a particular detectorelement is exactly the interval between output clocks for that element. The timing intervalbetween start pulses is entirely regulated by the controlling computer. Variations in theduration of this interval will cause variations in the output levels of the samples.In addition, the 4 bit Data field of the start command specifies the number of samples toskip after a sample has been digitized. This feature enables a scanner with 1024 elementsto deliver either 1024, 512, 340, 256, 204, ..., or 64 [=1024/(skipCount+1)] digitizedsamples per scan line. LOAD (110)The load command begins a new Load cycle, and sets the internal address counters toreceive the correction values for the first detector. Each successive load command causesthe address counters to increment by one. When the last element has been corrected, orwhen a start command is received, the sequencer enters its Wait state.MOTORCTL (101)This command controls the stepper motor which moves the paper. Taking advantage of themotor's short duty cycle, increased torque is obtained by supplying high current for shortperiods (< 60 seconds). Current is cut off from the motor by asserting data bit 2 (x1xx).Leaving the motor on for extended periods will cause overheating and possible damage. Themotor is turned by applying power to two coils according to the two low order data bits.The motor moves forward one step for each value in the sequence {3,2,0,1}, and in reversefor {1,0,2,3}.WE1 (011)WE2 (010)WE3 (001)These three commands load the 4 bit Data field into the top, middle, or low 4 bit fields ofthe currently selected 12 bit word of the correction RAMs. The top 6 bits of this wordcorrespond to the offset correction, and the low 6 bits are the gain correction.u fuGfq#bXq&bu _?u5_u ]Jw Zw2Zu WuWFu U(u$U9u TyHu8gTyu RCu OuONu Ni*w$Niu'Niw(Niu+oNiw,JNiu/LNiw2Niu5Niu LSuAJLwELu Ka%u&Kaw;+Kau> Kau I!w":Iu%I;u HYudHYwHYuHY0w4HYu7HYu Fu4F5w8Fu:Fu EQu7EQwEQu}EQV]u\u \=uZ'u(lZ5uYDu< YuWw Tyw2Ty u Qq&u%Qq7u OuODu NiuuNiBu L/u(L5u KauKaNu ItFt@FXtE0t(&EBtD}(t%&D}HtC@/t(C@:tBSt?Bt@Tt>J-t)>J;t= gbAtAbAtDbAt a t _ t ]Kt]Kt8]Ktc]Kt]Kt]Kt!]Kt%]Kt(:]Kt+e]Kt.]Kt1]Kt4]Kt8]Kt;<]Kt>g]KtA]KtD]Kt [t[t8[tc[t[t[t![t%[t(:[Xu+e[t+[u.[t.[u1[t2[u4[t5>[u8[t8i[u;<[t;[u>g[t>[FtA[tD[t ZftZft8ZftcZftZftZft!Zft%Zft(:ZfXu+eZft+Zfu.Zft.Zfu1Zft2Zfu4Zft5>Zfu8Zft8iZfu;gZft>ZfFtAZftDZft XtXt8XtcXtXtXt!Xt%Xt(:XXu+eXt+Xu.Xt.Xu1Xt2Xu4Xt5>Xu8Xt8iXu;gXt>XFtAXtDXt W^tW^t8W^tcW^tW^tW^t!W^t%W^t(:W^Xu+eW^t+W^u.W^t.W^u1W^t2W^u4W^t5>W^u8W^t8iW^u;gW^t>W^FtAW^tDW^t UtUt8UtcUtUtUt!Ut%Ut(:UXu+eUt+Uu.Ut.Uu1Ut2Uu4Ut5>Uu8Ut8iUu;gUt>UFtAUtDUt TVtTVt8TVtcTVtTVtTVt!TVt%TVt(:TVXu+eTVt+TVu.TVt.TVu1TVt2TVu4TVt5>TVu8TVt8iTVu;gTVt>TVFtATVtDTVt RtRt8RtcRtRtRt!Rt%Rt(:RXu+eRt+Ru.Rt.Ru1Rt2Ru4Rt5>Ru8Rt8iRu;gRt>RFtARtDRt QNtQNt8QNtcQNtQNtQNt!QNt%QNt(:QNXu+eQNt+QNu.QNt.QNu1QNt2QNu4QNt5>QNu8QNt8iQNu;gQNt>QNFtAQNtDQNt OtOt8OtcOtOtOt!Ot%Ot(:OXu+eOt+Ou.Ot.Ou1Ot2Ou4Ot5>Ou8Ot8iOu;gOt>OFtAOtDOt NFtNFt8NFtcNFtNFtNFt!NFt%NFt(:NFXu+eNFt+NFu.NFt.NFu1NFt2NFu4NFt5>NFu8NFt8iNFu;gNFt>NFFtANFtDNFt LtLt8LtcLtLtLt!Lt%Lt(:LXu+eLt+Lu.Lt.Lu1Lt2Lu4Lt5>Lu8Lt8iLu;gLt>LFtALtDLt K>tK>t8K>tcK>tK>tK>t!K>t%K>t(:K>Xu+eK>t+K>u.K>t.K>u1K>t2K>u4K>t5>K>u8K>t8iK>u;t;K>u>gK>t>K>FtAK>tDK>t ItIt8ItcItItIt!It%It(:IXu+eIt+Iu.It.Iu1It2Iu4It5>Iu8It8iIu;gIt>IuAItAIFtDIt H6tH6t8H6tcH6tH6tH6t!H6t%H6t(:H6Xu+eH6t+H6u.H6t.H6u1H6t2H6u4H6t5>H6u8H6t8iH6u;gH6t>H6uAH6tAH6FtDH6t FtFt8FtcFtFtFt!Ft%Ft(:FXu+eFt+Fu.Ft.Fu1Ft2Fu4Ft5>Fu8Ft8iFu;gFt>FuAFtAFFtDFXuCQTVm$Κ6tΰνX΄z(JasmineBravo.PRESS(JasmineManual.PRESS(JManCover.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual73.Analog ElectronicsThe analog electronics converts the detector array outputs to 8-bit digital values, individuallycorrected for gain and offset variations. A separate analog board is used due to packagingconstraints. For noise reduction, some of the analog components are in a shielded area formed by asolid ground plane and the metal lens shroud. A single point ground connection is used betweenthe analog and digital electronics.3.1Detector ArrayThe Reticon RL1024G detector array uses photodiodes to discharge capacitors. The chargeremoved from each capacitor is proportional to the light incident on the associated photodiode.Each detector cell is connected to the video line by a MOS switch. The switches are sequentiallyclosed for one clock period, during which time the residual charge must be sensed, and then thecapacitor must be recharged.The differential video buffer outputs are common source amplifiers, and are connected to +5vthrough a 10K pot. The pot is adjusted to provide balanced inputs to the LM733 video amplifier.The buffer outputs operate with an offset voltage near +5V, and the zener/capacitor/resistor circuitis designed to provide -2.3 volts to the video recharge lines so as to maintain a common modevoltage at the LM733 differential inputs midway between the amplifier reference voltages of 0V and+5V. The end of scan signal is not used, and is tied high to avoid introducing noise. The rechargegate is normally held high (off) by a 10k resistor to +5v, and is turned on (connected to -10v)when the LM339 comparator's negative input rises above TTL threshold (~1.5v). 3.2Video SignalThe LM733 differential video amplifier provides a linear voltage gain of ~100 to boost the ~25mvdetector array output to the 2.5v range. A CD4053 analog multiplexor is switched for 1msec toallow charge sharing between the .01mf capacitor and a 220pf capacitor connected to the holdamplifier. When the switch is opened, the detector cell is recharged and a DC restore is performed,while the analog sample is digitized. During the recharge operation, the video buffer outputs are attheir fully charged (black) state.DC restore is accomplished by connecting the analog multiplexor input to ground, thereby makingthe voltage drop across the .01mf capacitor equal to the difference between Vblack and ground.When the next sample is presented, the LM733 output voltage will increase to Vsample; themultiplexor input voltage must increase by the same amount, and since it was originally at ground,it is now at Vsample-Vblack, the sample voltage with the DC component removed. When themultiplexor is switched for charge sharing between the capacitors, the hold capacitor will move tothis level. Note that the previous voltage difference across the hold capacitor will have a very small effect on the finalvoltage, typically ~1%. This slight blurring between adjacent sample levels is equivalent to shifting the input image by.0001". The hold amplifier is implemented with a CA3140 Op Amp, providing a final voltage gain setting.The exact gain is the ratio of the feedback resistor (marked 5.1K, but typically 820 ohms) and theresistor to ground (1.1k). To avoid clipping problems near black level in the A-D conversion, anoffset bias is added by a large resistor to +5v (marked 80K, but typically 1M); decreasing the valueof this resistor will increase the offset bias. On the output of the hold amplifier is a 1k biasbalancing resistor. 3.3A-D ConversionThe A-D converter is implemented with a NE5008 multiplying DAC, a comparator, and asuccessive approximation register. The SAR provides an 8-bit input value to the DAC, with themost significant unknown bit set to 1, and the other unkown bits set to 0. The DAC produces anoutput between 0 and 2.55 volts (~.01 volts/bit). This voltage is compared to the output of thehold amplifier; if it is higher, the most significant unknown bit is set to 0, and if lower 1. The SARu fuGfq"bXq&\bu ^B=u3t^B#u \[u [:"u[:Au YuYIu X2#w U*w2U*u R"QuCR"u P8u/P'u OuOOu M;u0M$u Lu I \u GOu>vGu F\uDZFu D}XuDD}u B[uCBu Au[uCAu u ?u?Xu >mNw ;ew2;e u 8]Qu=8]u 6!u V66xD6uD6u 5U$x#5Uu$`5Uu$5U6u 3&u#+3>u 2LbuF2Lu 0"u -uv-Eu ,<x,<u j,<u/,<t=+u@;,< u *rNtB)uEU*ru (bu '#tb&u'#t%&u'#3t@'#uBP'#u %XBu4j%X u # t#!t!#Pt "s-t!"sLt ! u!t!u Q_u "u 4@u ItIuBIu!I=u Ou;u AEu6Au tuw w2u uLu )Cu6q)u *u% 5u Nu= u )u# >TVm$lΚA tΰν΄z(JasmineBravo.PRESS(JasmineManual.PRESS(JManCover.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual8then provides a new 8-bit input value, using the known high order bits, and a 1 in the mostsignificant unknown position. After 8 clocks (2msecs), all 8 bits are known, and the SAR's EOC'goes low, indicating that the digital approximation is complete.The per-pixel gain correction is implemented by using an ADC-MC8BC DAC to vary the NE5008negative reference voltage. The scale DAC reference output is connected through a unity gainbuffer amp to provide a high impedence positive reference for the NE5008. 15pf to -10?3.4Noise FilteringThe low level analog outputs of the detector array make it important to reduce electrical noise.This is the motivation for the shielded analog section, the various capacitors on the analog board,and the standard pi filters on the power supplies.u fuGfu b0u+b+u `u`x)_`u*>`/u _@u \Yu Z;u2FZ"u YIt>Yw Uw2Uu RNu>tRu Qq;u/Qq(u O2(TVm$ΚL tΰν΄z(JasmineBravo.PRESS(JasmineManual.PRESS(JManCover.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual94.Digital ElectronicsThe digital electronics provide the control signals for image sampling, handling the correctionRAMs, A/D conversion, and stepper motor control. The user's view of the digital functionality wascovered in section 2: External Interface. This section discusses the internal operation in more detail.4.1Finite State MachineDigital control is based on a small finite state machine (FSM) with 32 states, built out of two ROMsand two latches. The FSM operates on a 250 nsec clock. The 512x8 State ROM produces the nextstate number based on the current state and the values of four input signals: the START andLOAD signals from the controlling processor, and the Sample and ScanDone signals from thesequencing logic. The 32x8 Control ROM produces 7 output signals based on the current statenumber. The ROM outputs are loaded into the latches at every clock cycle. Five signals(VirScanClk, AnalogOn, DCRestore, and ScanStart) are concerned with the analog sampling logic.One signal (ResetAD) controls the successive approximation register used for A/D conversion. Thelast signal (ResetCtrs) controls various registers in the sequencing logic. A complete code listing forthe state machine is included as Appendix 2.2. 4.2Sequencing LogicThe sequencing logic consists of three counters: the Delay counter, the Sample counter, and theScan counters. The Delay counter is provided for control flow, as described in section 2 on Timing.The Sample counter provides another level of bandwidth control: reducing the number of inputsamples per scan line allows the controlling processor to accept more scan lines per unit time, andwill also reduce the storage necessary for holding an image. The Sample counter is loaded on eachexternal START pulse with the four data bits, as described in section 2.2.The Scan counters are three four-bit counters which cycle through the RAM addresses. They areinitialized with a constant value (-1025, based on the array size of 1024 elements) at every externalSTART pulse. The Scan counters increment once per scan clock. The high order carry-out bit isthe input signal ScanDone to the FSM, and causes the FSM to return to its Wait state.4.3Stepper Motor ControlThe stepper motor is made up of two coils, each with two windings. The motor turns when currentis applied in proper sequence to each winding. The two windings of each coil are always inopposite states, so that when current is flowing through one winding no current is flowing throughthe other. Each winding is connected to -12V through a TIP 122 Darlington pair. An LM339comparator is used to produce a 0V or -12V input at the TIP 122 base from the TTL output of aNAND gate. Each NAND gate has one input from the RunMotor signal, and one input fromeither StepControlA, StepControlB, StepControlA', or StepControlB'. These three signals are heldin a latch which is set by the external MotorCtl command. The RunMotor signal should normallybe FALSE, in order to avoid motor overheating. See Appendix 1.4 for the electronics schematic. u fuGfq"bXq&gbu ^B7u.^B(u \u=\Iu [:/u'[[:9w X2w2X2u U*0u'!U*4u SBu5Su R">u4R"u P0u+P)u OGu;qOu M(u)[M0u L>u4L u JHu8KJu I Lu7yI u G0w D}w2D}u AuNu=Auu ??u2 ?%u >mWuD>mu < u߀LBH@2222 DEN)>@33*Object ( Document Plane)Flange3.2 mmshFigure 5.1Optical Path Distancesu fuG?fq!bXq$bw ]w2]u ZuZ@u YKu;NYu WuWOu U<u2U$u T]uDTuEsTuGlTu R^uECRu Q#u#xQ9u OXu M:u JGu9Ju IsuIsWu G5u,?G.u FkXuCpFk u Du!D<u Cc+u'Cc5u A9w >w2>u ;Eu;I;u :K=u0:K'u 88u.8)u 7BYu 5w 2w22 u /D3u-/u.X/DuA/D u -u-Bu ,<t2*Y qyq$yq4y q0yq.yqy q6y z zA  & 0   B !!200 2 /))))//))))/2 !!2 !!0! !!uq4]q8G 8z2 z/ , !!2 !!u u |TVm$-ΚW tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual115.4Lens Alignment/Focus/MagnificationThe scanner must be set up so that each scan line from the document falls across the detector arrayin focus and at the appropriate magnification. Any skew present in the detector array due toinexact bonding is corrected by adjusting the position of the analog board in its mounting assembly.Minor adjustments to the angle of the lens are made with the top alignment screw so that the scanline hits the entire detector array. Focus is set by changing the distance between the lens and thedetector. This can be accomplished by inserting a test pattern into the scanner, and rotating thelens in the lens mount until optimal focus is reached. Magnification is determined by the distancefrom the lens to the document. The lens assembly and circuit boards are moved as a unit until thedesired magnification is reached. For additional set-up instructions, see Chapter 7: Check-out Procedures.u fuG?fw bXw2b"u _'u$^_<u ]u/]Ju \u\Ru Z3u,Z.u Y2u(Y2u W0u* W2u U-u' U6u TyXuBTy u R#t"RHTVm$Κa tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual126. User Software6.1User level interface: Scan.BCD, Scan.RUN[IVY]Scan.BCD is a Mesa 6 system for driving the Jasmine scanner. It runs on either D0s orAltoIIs. It will display input pages on the screen, allows zooming, enables a user to set various of theJasmine device parameters, and writes output files. The output files have an AIS header, and a PRESStrailer, and can be used as input to systems expecting either AIS or PRESS format files. Scan4.BCDprovides the same interface, but with output to the D0 4-bit per point display. A similar package existsin BCPL for AltoIIs as Scan.RUN.In specifying to a page position, the term Jasmine coordinate is used: this refers to the basic Jasminepixel resolution of 1/96". In addition to the hardware state maintained in the scanner, there is somestate maintained in the software. The current window refers to a rectangle on the page in Jasminecoordinates; when a new page is inserted, the current window is set to (xstart: 0,xlength: 1024,ystart:0,ylength: 1024). Any of the four coordinates can be changed using the XS, XL, YS, or YL commands.All four coordinates will be updated by the Zoom command. The current scan length refers to thenumber of output dots per scan line to be displayed on the screen. Normally, the scan length is set to608 (full screen width), but the user may desire a narrower length in order to display a narrow, tallimage. The current scan length is also used in creating an output file.The user interface to Scan consists of a key letter interpreter. Each command is initiated by typing thefirst (and sometimes second) characters of the command. Unrecognized letters are ignored.The key letters in the following list of commands are capitalized.?: The question mark causes the current settings of black, white, xstart, xlength, ystart, and ylength to beprinted out.Black: Prompts the user for a decimal number to be used by the halftoning routine; any pixels less thanor equal to this number will be printed as black.Calibrate: The scanner has a separate correction value for each pixel. The calibrate command promptsthe user to "Insert sheet of white paper" and to "Press any key when ready." Best results will beobtained from an opaque, flat white sheet such as photographic paper. Any irregularities in thecalibration sheet will cause uneven calibration. When the user presses a key to indicate that thecalibration sheet is in place, the scanner will average a number of white lines, and set the correctionvalues so that each pixel produces the same white response. This is not an optimal calibration scheme: itsearches iteratively for the best solution. After each iteration it prints out the minimum and maximum value for the line,and the cumulative difference of the 1024 elements from the desired value. This routine does not incorporate darkcorrection, so that while a light image will be fairly uniform, a dark image will contain streaks. John Warnock is currentlyworking on a better procedure. u fuG?fXq%Jbw _w2_(u XuXKu VbuGdVu UMJu9 UMu S$u"S?u QRu>Qu PW u J+w&Ju2JuBJu HOu=:Hu G?'w%G?u.GG?u>G?u EuEKu COu=zCu BI9u2BIw7aBIuC'BIu @u@Ru >ug>Uu =SHu 7^uD7 u 5Zu 0Bq ,u Q,u,fu1+" q 'u'5u1'-u1&,1q " u" u'" Ku1 b7u0 b+u1Ju?u1Iu<*u1l*u&l=u1;t3n t:L"t1A7t(jADt1mtHt1tdt1u TVm$Κd tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSJasmine Scanner Manual13Delay: Prompts the user for a decimal number from 0 to 15 to be used as the delay (in microcoseconds)between pixels delivered from the Jasmine. This control is mainly for hardware debugging. Incorrectsettings will cause the scanner to stop working, and all settings in the correct range will cause identicaloutput. The Scan program will automatically set the delay correctly.Erase: Erases the user screen.Forward: Prompts the user for a decimal number ("nSteps"). The paper will be moved forward thismany steps. (1 step = 1 Jasmine coordinate = 1/96")Halftone: The scanner will read in pixels from the current window and halftone them onto the screenusing the current scan length. Pressing any key will terminate the halfonte command.Initialize: The correction values in the scanner will all be initialized to a constant value. This commandis useful for determining how well the calibration routines are working.Length of scan: Prompts the user for a decimal number to be used as the current scan length.New page: This command ejects the current page, and prompts the user to "Press any key when ready";the user should insert the new page, and press a key. This command sets the current window to(xstart: 0,xlength: 1024,ystart: 0,ylength: 1024). Quit: Ejects the current page, and returns to the Executive.Reverse: Prompts the user for a decimal number ("nSteps"). The paper will be moved in reverse thismany steps. (1 step = 1 Jasmine coordinate = 1/96").Skip count: Prompts the user for a decimal number from 0 to 15 to be used by the scanner as a "skipcount": that many pixels will be skipped for each pixel delivered. The software will use the sameskip count to drop out scan lines. This command is useful for reducing the storage required for alow resolution image. Note that the image produced by skipping pixels is undersampled, which may cause severealiasing and other problems. A better way to create the lower resolution image would be by averaging the pixels insteadof throwing them away. The hardware does not support this function.Time for integration: Prompts the user for a decimal number to be used as the integration time in 38.08microsecond "ticks". This setting defaults to 656 ticks, or about 1/40 second. For dark documents,it is possible to get more dynamic range by increasing the integration time. Reducing the integrationtime may create impossible timing constraints. If the integration time is less than the time required toread in a scan line, the scanner will stop working.White: Prompts the user for a decimal number to be used by the halftoning routine; any pixels greaterthan or equal to this number will be printed as white.XStart: Prompts the user for a decimal number from 0 to 1023 which will be used as the current windowhorizontal start in Jasmine coordinates.XLen: Prompts the user for a decimal number which will be used as the current window length inJasmine coordinates. If XStart+XLen is greater than 1024, XLen will be set to 1024-XStart.YStart: Prompts the user for a decimal number which will be used as the current window vertical start inJasmine coordinates.u fuG?fq bu%bBu9.bu1`v,w)|`vw2 `v*w1^kw1](Du;k](q YuYq VuVYu1T4q QuQ&u)Qw,EQu5dQ"u1O w,Ou!rOq!Ou#O5q L uLSuALu1JHq GuG'u1VGw?@GuKfGq DZuDZuDZMu1B;u4(Bw@BuIBu1A 2q,zA q =uj=8q :nuO:n3u1M:n)u185q 5x uF5xFu?5xu13u|3Ju12) uK2)Uu10uW0t03y870 t>0t1.8t*.@t1-zCu6-zq *+u*+u&*+;u1(u(Pu1&Fu8&w=&w1%5/w*/%5:w1#2u/#q ?uQ ?-u, ?3u16q IuIIu=Iu1(q SuS u$SQu1qu$u5X!q ]u]'u(~];u1 RTVm$Κl tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual14YLen: Prompts the user for a decimal number which will be used as the current window height inJasmine coordinates.Zoom: The zoom command waits for a new window to be indicated by the mouse. Pressing the leftmouse button indicates the corner of the window. Holding down the left mouse button will allowthe user to stretch the rectangle indicating the current window from the window origin to the mouse.Holding down the middle mouse button allows the user to reposition the window origin. When theappropriate window has been selected, hitting the right mouse button will terminate the zoomcommand, and the new window will be scanned in and displayed. Note that in the BCPL version, norectangle is displayed, and the new window is indicated by depressing the left mouse button at onewindow corner, holding the button down as you move the mouse to the second corner, and thenreleasing the button.6.2Procedural interfaceThe interface to the Jasmine scanner is implemented in both MESA and BCPL. The MESA syntaxis used in this document, but the transformation to BCPL syntax is straightforward. The interfacedescribed here handles the scanner data as an input stream. For speed, a number of buffers arepre-filled with input data; typically the calling routine will not have to wait for additional inputfrom the scanner, because at least one of the buffers will already be full. The following routines aresufficient for most scanner operations.JasmineInit: PROCEDURE;Loads the device microcode, sets up appropriate Debugger and Finish processes, and gets thescanner into the Wait state with a reasonable delay setting. This routine must be called exactlyonce, before any of the other routines.JasmineScanInit: PROCEDURE[block: POINTER,nWords: CARDINAL] RETURNS [scanStream:POINTER];This routine initializes the nWords of memory beginning at address block for use as a ring ofinput buffers. It moves the paper so that the first scan line of the current window is imaged onthe detector array. The routine returns a pointer which must be passed to subsequentprocedures.JasmineReadLine: PROCEDURE [scanStream: POINTER] RETURNS [data: POINTER TOPACKED ARRAY OF [0..377B]];This routine returns a pointer to the next scan line of data. The number of bytes in the scanline is determined by the current window setting, which defaults to the entire scan line, and thecurrent resolution (setting of the Sample counter). Because of the input buffering, the data willonly be valid until the next call to JasmineReadLine.JasmineScanClose: PROCEDURE [scanStream: POINTER];This routine should be called before the next call to JasmineScanInit. It ensures that everythingis left in a clean state.JasmineSetWindow: PROCEDURE [xStart,xLen: CARDINAL, yStart: CARDINAL _ 0,yLen:CARDINAL _ 1400];Sets the input window for the reading routines. After changing the input window,JasmineScanInit must be called before any additional calls to JasmineReadLine.JasmineSetReadMode: PROCEDURE [readMode: [1..3]];There are three modes of running JasmineReadLine: when readMode = 1, the current scan lineis read without moving the paper; for readMode = 2, the line is read and the paper is moved(this is the default setting); for readMode = 3, the scan line is read, the paper is moved, and adelay of one integration time is inserted. On the Alto, when the display is running, the currentmicrocode often "misses" clock ticks when reading a scan line (this is seen in the jittery motion of the cursor). Byadding a delay cycle, two desirable effects are achieved: there will be no paper motion during the integration time,and the integration time of the line being digitized will not vary since that integration time was calculated when themicrocode was not reading, and therefore not missing clocks.The following low level routines allow the user to set various scanning parameters. Somecombinations of parameters are impossible (i.e. integration time too short for digitizing the requiredsamples, or delay time too short to allow the controlling processor to acquire the data); not all ofu fuG?fq bub-u-b-u1`vq ](u/](@u;](u1[ u[Su1YVuBYu1X2u"VX2Bu1VSuDV u1T#u'"Tt9FT!t1S< u'S< u(S<5u1QVuHkQu1Ow Lw2Lu IOu?I u HY8u/HY*u FGu8Fu EQ%u!EQ?u C&u"CAu BI'q ?A u?A u@=8u2=#u@<8 u<8Uu@:'q 90u90,u890u@7 u@6(w6(u#u6( w86(u;6(u>6(u@4u4Eu@3 @u:3 u@1 q 0%u400&u=0 u@.u@-!u"E-=u@+]uF1+u@*Cu6u*u@(5q 'u'"u@%|2u,%|0u@#q "suQ"s>u@ %u@k?&u;,ku@Nq cucu@u(w2~u8Iu@[&w&#[u+['uC[u@#w!u'Pu*1u@S*u(ESt+]S5t@at>t@ntEt@w^t<wt@;u03u *u'0u Ju8F u ]uD TVm$Κu tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBJasmine Scanner Manual15the impossible combinations are checked for, so that the programmer should invoke the follwoingroutines with caution.JasmineSetDelay: PROCEDURE [delay: [0..15]];Sets the delay in microseconds/sample.JasmineSetResolution: PROCEDURE [nSkips: [0..15]];Sets the number of samples to be skipped for each sample digitized. The software will alsoskip nSkips scan lines between each digitized line. Resolution defaults to 0 (1024 elements).JasmineSetTime: PROCEDURE [ticks: CARDINAL];This routine sets the integration time per scan line in 38.08 microsecond ticks. Because there isAC variation in illuminator brightness at 120Hz, the integration time should be set to closemultiples of 218.84 ticks (=1/120 second).JasmineLoadRam: PROCEDURE [array: POINTER,len: CARDINAL];A low level interface used to set the Gain/Offset RAMs. This routine is called by thecalibration routine, and is of limited use to the casual programmer.JasmineStep: PROCEDURE [nSteps: CARDINAL,forward: BOOLEAN];A low level routine which moves the stepper motor forward and back. Moving the motor maycause the current page position to be lost.JasmineCoord: PROCEDURE [coord: CARDINAL] RETURNS[nSamples: CARDINAL];Converts scanning resolution coordinates (~250 microns) to pixel coordinates based on thecurrent resolution setting. This routine will return the number of pixels on a scan line whencoord=1024.JasmineNewPage: PROCEDURE;Feeds the new sheet of paper up to the document window, and resets the internal line counter.JasmineEject: PROCEDURE;Ejects the current page.JasmineMotorOff: PROCEDURE;Sets the RunMode line to FALSE, thereby cutting off current to the stepper motor.6.3Microcode Interface and ImplementationThe microcode uses three fixed locations in low memory. Location 526B contains the integrationtime in 38.08 microsecond ticks. Location 736B is a pointer to a linked list of control blocks.Location 737B contains the data bits for the START command. The Alto microcode runs as part ofthe Memory Refresh Task, which is activated every 38.08 microseconds. A counter is initialized tothe contents of 526B (ScanTime), and is decremented once per MRT activation. Normally, whenthe counter reaches zero the command at 737B (StartCommand) is issued, and location 736B(ScanCBHead) is examined: if it is non-zero, the command it points to is performed. If, however, acurrent command block is still being processed when the integration time counter reaches zero, thestatus of that command block is set to "StatusDATALATE," and ScanCBHead is set to zero.The data types for a command block are:ScanCommand: TYPE = CARDINAL;CommandREAD: ScanCommand = 0CommandDELAY: ScanCommand = 1CommandFORWARD: ScanCommand = 2CommandBACK: ScanCommand = 3ScanStatus: TYPE = CARDINAL;StatusINUSE: ScanStatus = 1//in general, all positive numbers are "in use" flagsStatusFREE: ScanStatus = 0StatusDONE: ScanStatus = -1StatusDATALATE: ScanStatus = -2ScanCB: TYPE = RECORD [link:POINTER TO ScanCB,command: ScanCommand,status: ScanStatus,buffer: POINTER ];CommandREAD interprets the status field as the number of bytes to be read. If buffer=NIL (0)the input data is discarded. The high level read commands implement a horizontal window by inserting two readu fuG?fu b_u `q ]u]u@\&q ZuZu@YCu9yYu@WwSWuIWBu=Wq UuUu@TyPu=Tyu@RuRMu@Qq*q OuJO+u@NiHu?+Niu@LDq Ka u5Ka0u@ICu9KIu@HY+q F u%F:u@EQ:u4EQu@C^w@BIunBIq @u@ u@?Au"^?A>q = u= u@<8q :uU: u@90Qw 4w24&u 17u/i1(u 0?u30"u .\uF.u -u`-Pu +w+u+>u *.w,* u4*u7@*u (w 0( u&(u(Gu 'Hu8'u %|u%|Au "s't2!tttZtt2tt" t$1tdt'tt2t2ntnt(nt?n t1ttt2xu *u' 3u tm =t?  TVm$!Κ tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual16commands on the command block chain, with the first block containing a NIL buffer pointer. When the currentread command is completed, the status field is set to StatusDONE, and the next command on thechain is immediately interpreted. The other three commands cause command block execution tostop until the integration counter reaches zero. In addition to waiting for the next line time,CommandFORWARD and CommandBACK issue the appropriate output signals to move the paperin the desired direction.u fuG?ft bFt1bu=bu `Au5'`u _YuF_u ]0u)]0u \KuBO\ u ZTVm$]Κ tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS (OPD.PRESS.PRESSdFFBootMesa.Scratch.These images are printed using gray level fonts. If you have access to a full PRESS printer, the real images are contained in[IVY]Docs>CheckOut.PRESS.     "                                                                                                                                                                                           ,/798ADEEJGSUZZXW`aeficmqsvz~|{vxqqzyw~m}vu{j/&q{x~|qvzvsmj^hc_^`[)#uxxrrqlpqirpqpc[cdifkcljokhcnnfk^`oejnfq|xogc^`ZVQRSQP"qgjhjag`d\][efii_X]b_ae_ecfmfcki`dU\cb`h\kxzhf^ZRSMNNEJHG#jWb`cddlaa_fjjzigdagexdlonsl}vtplodpvptuqs|yjwhe]\]Z^X_*&vyw{|}v00ĹùļWM*˿ٴR̅g@ʼ{ygmklb]`#*ZTXXVNXPRKJNPMRUCEFDMKGGMIRMKJJICIBFKGKPJQZeb\RNNPMNKKE@==G%s|VRIKLMIMKQTEFCBGCGCFHHGEBCA?E<>D?FHEGMVQMKFC?@>4310*N=>}.,.(*,.&..$$'#(&')&'(*'-)+&(# (((-)(2741-*+)+'' (?6Ba#&"#$"!)''  !!!"#!$!!!" $"" &0*(& c{wQQ !+#"#! P#'!06  '_}yhNJ7:168;9=D?5RO_oke[gedOTQ>BHTYWMReow}r2))), tĽϽԼϷzskmjjd`\<+7                                                                                                                                  !%         "                                                                                                               "!$ "% & !""$*&$&%*%''*',,),'$$$'# $! 1!#'').*2,'*,*3.+1-10.124273933126.,/(#"88?:?@CAB@@EABA@BACOECHJTZWVRIKJGGDAD@ADCDBEAIGDE@:@>757/#!ľϾQсpqposxuxryukqz~~P*(479;:9?:@B;?AEGDEECMLVOThupfbZ[[ZYUTXVWWVWXXSZSWVPKPNLHL:&|^(%%,(,')*)(..-2487@A<9;@><@B=?=C>A8986755pk<+36/03q"% $$""!'&%'&'0/065;BB<;5744552304445224420-*+&8=BHTNG=5520,1,++()('*'%&"#"$!$$(3>=41+,,05427899<@BD>AB?>=;:?<7:.                                                                                                                                    -      "'             "                                                                      "   "" ((" # " #"!!!!"&!#() &%")$'&#)1(''+)).'(+.'(,+$)(#*!$!! !&"" #$'#"*''*&*))/+&*,)/*3.,5::2.5488138665563/88>1-3.1/(-%%##&&))--.-.,0*/-)36086190<93?@JF69;9=789:97755:=B:7(.+6E,.)*!Huqzxyxvzkonv{z}s||w}smlc\\Y]`YYTWYWTIC?FN_DB)#'*@?ILUUaó{y{|~t~jrmdJE%%&)**-&,E\vɽzŴs? " #!!!%'&+*,.(-+-,--..35*9964573+/&()(#9?:(" '%&&"*,*./+.*52,5624/1,-,+$%)&%%$!&# "&# *$$%"-*&.-+,,23*5225,--,,(&'$,$%!%$ !#!"&%)&*("++$(&'$$#$""!"# ##)&%&!%)! #!&"* &&+($--)/)/.*36-0/,'&+$%#"!! !#   #"  !                                                                                                   ,                                                          $        Jasmine Scanner Manual177. Check-out Procedures7.1Adjusting the Output LevelThe value of the 10K pot on the analog board is set to provide balanced input to the LM733 videoamplifier. With your scope set at 2mV/division, sync on the ScanStart signal (pin #3B-10). Placea white strip of paper on the document window and examine the output of the video amplifier (pin#IC2-7). When the pot is below the minimum allowable value, the output is a constant high value(~4V). Turning the pot clockwise will cause the output signal to move through the correct settingrange (Figure 7.1) to a point above the maximum allowable value, where the output will be aconstant low value (~2V). The optimum setting is where high light level produces an output valuejust above the bottom constant line, and zero light level produces an output value just below thetop line.Figure 7.1: output at #IC2-7 with low, optimum, and high settings of potWith the pot set to its optimum position, examine pin #IC8-3. The signal here should varybetween 0V (black) and about -2.2V (white). If the signal goes below -2.5V, reduce the value of thefinal gain resistor #R10 until the maximum value falls into the permissable range. If the signalgoes much above -2V, increase the value. (Levels below -2.5V will cause the A/D system to wraparound so that high light levels read as "black", and levels above -2.5V will reduce the maximumrange of output values. Setting the gain for a nominal value of -2.2V reduces output range onlyslightly, and guarantees no wrap-around).7.2Optical AssemblyFasten the analog board to the lens mount assembly. There is play in the board position due tooversized mounting holes: this allows corrections for minor variations in the position of thedetector array elements. Fasten the lens mount assembly to the chassis at the midpoint of theadjustment slots. Thread the lens into the mounting collar as far as it will go. Set the lens apertureto f4 (full open).The three optical adjustment steps are performed with an alternating pattern of broad black andwhite stripes in the transport; this allows easy identification of the image window for alignment andprovides the appropriate patterns for magnification and focus adjustment. There is a small amountof interdependence in the adjustment steps: changing the focus may alter the alignment slightly.7.2.1 AlignmentThe lens axis must be positioned so that the image of the document window reflected by the mirrorfalls across the detector elements. Small variations in the tilt of the lens to achieve this goal areFt K~t Jj"v6H>v6H2>v6G>v6G^>v6F>v6F>v6F >v6E>v6EM>v6D>v6Dy>v6D>v6C>v6C<>v6B>v6Bh>v6A>v6A>v6A*>v6@>v6@W>v6?>v6?>v6?>v6>>v6>F>v6=>v6=r>v6=>v6<>v6<4>v6;>v6;a>v6:>v6:>v6:#>v69>v69P>v68>v68|>v68>v67>vHFF\u Mu<w Lu D(u$) D9u Du3 "(TVm$Κ tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS(Jasmine17.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual18controlled by the 2" lens mount adjusting screw. A rough setting can be performed by visuallychecking that the image is correctly aligned. Fine adjustment is performed by watching the scanneroutput on the Alto screen, and ajusting for the best image.7.2.2FocusThe image is focused by varying the distance from the lens to the detector array. This is achievedby turning the lens in the mounting threads until the edges of the stripe pattern are as sharp aspossible. When the mounting bracket is under tension from the adjusting screw, the resultingpressure on the lens threads will hold the lens securely. For final focus, insert a text page into thescanner, and use the software to zoom in on a small (~100x100 pixel) area. Rescan the area whileadjusting the focus for an optimal image. While adjusting focus, it is easy to change the lens aperture, therebycutting down the brightness of the image. Make sure the aperture is always fully open.7.2.3MagnificationThe image magnification is determined by the distance from the lens mount assembly to thedocument window. Moving the assembly away from the document window increases themagnification. u fuG?fu bupbEu `[uC`u _;w \w\u Y,u'nY7u WQu>Wu U:u2U#u TyuTyXu RuRDu QquJQqt&5QqFt OWw LwL u I,u)I-u HY/u/HY"u FTVm$Κ tΰν΄(JasmineBravo.PRESS(JasmineManual.PRESS(Jasmine17.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix19Appendix 1. SchematicsA1.1Analog Board2121211414131211654315XEROXFileProjectDesignerRevDatePageParc CSLMcCreight01GHRRT+-TRTRTRGND1VCC1ANALOGTTREFoREFiCTRSELCLK'RESET'RRRADC-MC8BClsbRRRRRRRRD0D1D2D3D4D5D6D7RRRmsbScale.0Scale.1Scale.2Scale.3Scale.4Scale.5GHRRT+-TRhdhdhdhdLM360CA3140GNDGNDTRhdnCA3140jasmana.silJasmineAnalog sectionGHRRiT+-TDD'D0D1D2D3D4D5D6D7RRRRRRRRV+V-REF+REF-COMPII'RRRRRTTTGND*msblsbTRGNDSAR.0SAR.1SAR.2SAR.3SAR.4SAR.5SAR.6SAR.7TREOC'Q0Q1Q2Q3Q4Q5Q6Q7lsbmsbCLKQ7'RES'E'DTTTTTTTTTTRRRRNextBitGND.DM2503GNDTRScaleCorr15pf1k1k1k.hdhdhdTR.GHRRiT+-TDD'LM733nCYXTSSYTRTTRRRRRRRRRTREOSRecGateDRecVRecVBufDBufBufSupGND*STARTCLKV-V2+V1+nGNDScanStartCD4053GND*RV+V-RRE'RG2BG2AG1BG1ARRRRRRV-V+CD4053LM733hdGND*RRRV-V+Clock-Pwr+PwrRRGND-10v-10v+5v+5v+5vGND+5v-10v-5v+5v+5vCA3140LM360NE5008RL1024GDCRestoreAnalogOn'.01uf8.2k-10v220pfTRTRTRnhdhdPi filterPi filterhdhdnTRTRTRVCC+5v-10vNegSupplyGND*RRRV-V+nTR-5vnPower SupplyGHRRT+-TRTRTRnVCChdhdhd1.5k3.9kLM339Scale DACScannerVideo AmplifierSample/Hold/Restore SwitchHold AmplifierSuccessive approx.DACComparator+5v+5v-10vCA3140-Pwr+PwrRRRechargeTRhd1.1kRefD3D2RRRRRRRRTTTTSD1D0E0E1E2E3H0H1H2H3COTCID3D2RRRRRRRRTTTTSD1D0E0E1E2E3H0H1H2H3COTCIOffset.5Offset.4Offset.3Offset.2Offset.1Successiveapprox.registernOffset adderLS283LS283.SAR.0SAR.1SAR.2SAR.3SAR.4SAR.5SAR.6SAR.7* adjust for proper gainData.0Data.1Data.2Data.3Data.4Data.5Data.6Data.7-10v#aa61-Pwr+PwrRRVCCLM339#bb34hdruA7905312652315141112101314796523151411121013147921742121214521231221212121748541051112436716861617118212791312101187121211091722121162415141313121110987657623212123614162431151385679121110212121236hdhd1221ScanClk'ResetAD'22uf+10k6.8uf6.8uf6.8uf6.8uf++++3.9uH3.9uH6.8ufiGHRTLS04SampleDoneTRTRnTR-5v22ufzener300 ohmshdhdhdTrue5.1k*n12nhd1kTR..**adjust for proper offset80k**7/19/79n.01ufTRTRTRn.1uf.1ufBOffset.0Truenn#C3#C2#1A#1B#IC4#IC6#IC3#IC1#IC2#IC2#IC1#IC8#IC8#IC5#IC9#IC7#IC7#IC6#IC3#2B21#C5#R10#R11#R12#R13#C6ADD#C12#R15#R16#R14#C9#R22#D6#C11#R17#R19#R18#C10#C7#H1#H2#C8#C13#C1512131411note: C2,C3 polarityis mismarked on PC board+5v+5v(#R21b)k#R20a#R21aSee modification listnrevGbrevGbu fuG?fXq#5bw _w_ { 1P{A1P{ 4{A4{ 6P{A6P{ 3{653{64{62{61{60{6/{6.{6-l{6,P|y}(2Gr} }3}?X}B}KKGrBGr>Gr'sGr GrOGSXGOtGGr}|4; |M<~(H~(H~(H~(FY~+Gv{)J {)K5J$d1PJr$1PJ$d1PKN$~5Gv~0Gv+K&$5K&r$"I{$dlI{r$lI{$dlJN$~"FY~FY#J $,M$d(lMr$(lM$d(lO-N$~,J~(JK&V$LBV$M_V$N{V$OV$ P$ P$QV${+W{+X5{O~Lv~X{%\{+\{+S4{+TQ{+Um~ VO~ VP~ VR{Y H$ H +$I$ ]| $}dI~ VS~ VX~ VN!~ VT~ VFY~ VGv~ VH~ VI{+I{+J{+K{+M{+N4{+OQ{+Pm{+Q~ VM~ VK~ VJ}dQx{O{N{M{L{Km{JQ~Z~Z~Z~X~"sY{\_{^ ^9$"M$dlMr$lM$dlO-N$~"J~J-N{$.KJ$U{5JQ{-M{#I4{#M{H;N$97_9${7^Q{7]5{7\{7Z{7Y{7X{7W{7V~6tZ~6tY~6tX~6tW~6tVv~6tUZ~6tT=~6tS!{7T{7S{7P{7O{:R{<]5{<\~6tQv~6tPZ~6tO=~6tM~6tLv~>;Y~>;X~>;O={7R}9;^Q}9;VGY $dCY r$CY $dCZJN$~GU~CUHY9$@tLB$0W^$0W]|$0W\_$0W[C$0WZ&$0WY $0WW$0WV$2U&$2T $2R${2S4{0W^{0W]{0W\{0W[{0WZn{0WYQ{0WX5{0WWFR_$dBR_r$BR_$dBSN$~FO=~BO=>;Rr$GR$:Y${36P{4,{4-{4/{403{41P{42l{43{44/;79$6t*$ V/;*^]$/;*^$ y}2,}24{//{4;+{/-{/03{/2l~6t2~6t1<~6t0 ~6t/~6t-~6t,~6t+~6t*~6t)u~6t(X~./~.,~.+~.*{HL(0z9${(0~6t(X{0W*{R,,\$d'\r$'\$d'^.N$~,,Y~'sY"s]|$,t]|$.Qf$ 9.QC${/Pm }C;Q@tLf$}DX5})\}2I~GGv{,t\{HX{GR(/^$(.A9$%]$d]r$]$dN$~%;~l;~ X~ d~ d~ ;~ X~ ;~s;{ { ~ X{ { { V~IS r9$VU${{!{!3~"~ X{ ~"lr$"$l$l$$~;l$~1~2~-Y~/~0 ~2Y~4~5 ~6~7~9~5 ~: {8{0{2l{3{6P{53{5{:4{7l{8{;P{V$6$V$ r,$U"]$($~(l:{${: 8$ 7$x{ 7 {#l{2~sr$"s$$$@{{~s ~s {O~s{ 2{O{{~ ~ ~ ~ ~X~t{{ $  $ $ rAr${#{ {l{DEP~C@~CA~CC{DD4{DFmDXB$$DXB$HB$DXGr$x{(/{ { 2 $$+ $$ $~ A~ A{>E=D{$=$V<$V<9${;{1tTQ{2Um{>F{>;$y${]$A${{{>D{X{ k{:{IXD4{9N{V/sV$ $x{O3 :$x{: }}V?6 r${6P}H8$d4r$4$d4HN$~8~4;x3A$d/Ar$/A$d/N$~3~/;=A$d9Ar$9A$d9N$~=~9;x-$-9$?$>;$x*; $9;$x6td$~5{9;x{4;}5W }5W x{4; {9;x~5 6t+$*;] $>;$?$x-9$-$=$d9r$9$d9HN$~= ~9; x3$d/r$/$d/HN$~3 ~/; 8$d4r$4$d4N$~8 ~4; x{*{?{?Xx{* Gr{F2~Et ~Et~Et{F{FOF$$F$Jt$Fr$9;] $~B tC;y$C;$J-]$dE]r$E]$dEN$~J-;~Et;C]$C$$C9${HC9$~LJt9$L$|C; ] ~ )u~ )u~ )u~ '<~(X{ :*{ :,',$ '$&z$dl&zr$l&z$dl'N$~#X~#X'$$A$dO$Ar$O$A$dO%N$~!~!$A$d k$Ar$ k$A$d k%N$~!~ !$$$r$$$$e$~ x{%{#{#{&3*$',$'V$:$$9-%$}#l} #l{ V+3|sT |9<|]|A|)E |AU|C;T |BH_ WJ 9${'O{ { k{W{3{32$$+ $$$~]~]x{-l$y9$$]$]$$ ry9$ r$"K$dlKr$lK$dlLN$~"H~HWI$U#LB$#N{$%:Lf$9{#Km}J ^ $ \$ \_9${\P& :$^$$]$\_V$\$x{C_4{C_6P~B/~B0~B1~B2~B4~B5 ~B6<~B7YC1$C=$~H6~H4~H2Y~H0 ~E-Y{C_8{C_:{C_9{C_7l{C_53{C_2{G:{G7{G5{G3e{F{O9{<{;{:{9{7{6P{4{2{1P{O6{O5{sO{3{ O{3{3{,]{' ]{-.{.B/{.B0{.B2{76{GfS4{AS4{H_Y{BY{>S4{>\{>]{5{Pm{5{Q{6 S4{6 TQ{5{Um{5{W{5{X5{5{YQ{6 Zn{6 [{6 \{6 ]{6 ^{GL{GKm{C_L{C_Km{"Y{Y{#IN{N{%^{%\{#]{3Pm{3\{ S{ T{ U{ W{ ]\{ ]R{ X{ JQ{ Km{ L{ M{ ]P{ ]O{ ]N{-IN{'N{#IJQ{JQ{6-Km{0{Km{'L{'JQ{,tKm{>; {>;{8{>{>{8x{ 9N{$x{(.}X5|W}%x}0Wk}:Xk}:X 2x}0W 2|.$|>;x|4; |9; }5W3}4}Fx~;P;~;<~;<~:;~?;{<?48?{$86$x?X?{${A? , 9$ d5{$d5{r$5{$d6N$~ d2Y~2Y d3B$d3Br$3B$d4N$~ d0 ~0 6 @$3e$3@$~/ 6 9$:, $$:1 $ d0z$d0zr$0z$d1N$~ d-Y~-Y1 ${1P 1 ]$}4}2l}/{ 53{ 2{ 03 1,$ 39$ 2$:3y$:2$5{$8$x{9 r ]A$"s!$V!zA$})M`C$JQW$9~D>;\_9$@tY$>;]|$JQ[f$9{B]{H_]~IW{H\}D\H]|9$G\$dC\r$C\$dC^.N$~GY~CY~s ~s s$%:$-#z]$ $  yr$}E}M|C;  $~r+$$@$} $dr$$dN$~ t~t y$ $=fGB$d9GBr$9GB$d9HN$~=fD ~8D =fC$d9Cr$9C$d9E-N$~=f@~8@7D{$7C$~6t? }:XC>;F$>;F$=G$8G$8E$98E 9$}:XFm|?@t8$9x<6${<6{<;P~7 8+$8d$~78$x4;9$4;9$8$x{0WO{0W{IX1P{IX!{s{?X?{9?{I{)N4{N4{K{2J{:XD4|9GB}C;R{DX]5{DYQ{(]5{YQ{V0{3{5{${ ${&{F{:X{5WO{5W{:XO{{{#l{#l{3{|- |- {N{C ~@=B${sD4{s@PsC$@:E ]$:D$sC$sA&$$s?$:?{]$:?{$@|VA~  |A|D{# $#pTVm$}Κtΰν(JasmineABravo.PRESS(JasmineManual.PRESSJasmine Scanner Manual Appendix20A1.2Finite State Machine21211119413512546914101245671531311291410124567153131121516123547910111213141514129719181716542316811131519614715123459101214151113XEROXFileProjectDesignerRevDatePageMalesonCSLJASMINEFINITE STATE MACHINEState.1State.2State.3State.4Q7Q6Q5Q4Q3Q2Q1Q0TTTTTTTTRRRSRRA0A1A2A3A4CS'State.0State.0State.4State.3State.2State.1CL'CKSSRRRRRRD0D1D2D3D4D5TTTTTTQ0Q1Q2Q3Q4Q5State.0State.1State.2State.3State.4ClockSeq.SampleSeq.ScanDoneSQ7Q6Q5Q4TTTTRA8A7A6A5A4A3A2A1A0CS'RRQ3Q2Q1Q0RRRRRRTTTTnn82S147LS174HM7603....fsm.silESRRRSSTTTTTTTTE'E'S1S2S4Q0'Q1'Q2'Q3'Q4'Q5'Q6'Q7'LS138Alto.9'Alto.10'Alto.11'Decode.Start'Decode.Load'Decode.WE1'Decode.WE3'Decode.WE2'Decode.Start'Decode.Load'Alto.8'Alto.8'SE'SBSB3D3B2D2B1D1B0RRRRRRRRD0TTTTQ0Q1Q2Q3XBus.8XBus.9XBus.10XBus.11XBus.12XBus.13XBus.14XBus.15Output section: data to Alto either from 64x8 FIFO orhigh order bits of Init register (describes sensor array)Input decode: 3 bit command, 1 bitfor "command ready"Finite State Machine, controls scan cycle andRAM initialization cycleRechargeDCRestoreAnalogOn'SampleDoneLS257SB=0 selects DSB=1 selects BTrueVGGRMR'SOIRORSISQ3Q2Q1Q0TTTD0RRRRRRD1D2D3TTTVGGRMR'SOIRORSISQ3Q2Q1Q0TTTD0RRRRRRD1D2D3TTTData.0Data.1Data.2Data.3Data.4Data.5Data.6Data.7SampleDoneFIFOReadyiRRTBAFIFOReadynDecode.Load'02..XBus.Read'ppppppppXBus.Read'XBus.A0'XBus.0XBus.8XBus.9XBus.10XBus.11XBus.12XBus.13XBus.14XBus.15pppppppppppAlto.9'Alto.10'Alto.11'Alto.12'Alto.13'Alto.14'Alto.15'pnCable connectionsClockResetCtrs'ResetCtrs'LS00iCDRRTiLS00XBus.0pNegSupplypCL'CKSSRRRRRRD0D1D2D3D4D5TTTTTTQ0Q1Q2Q3Q4Q5TrueClockTrueF3341F3341NegSupplyNegSupplyLS174VirScanClk'Decode.SetDelay'ResetAD'S'R'RTTRSQQQ'DCXBus.A0'iGHRTFIFOReadyTrue.TRTRn200 ohmspVCChdhd.Decode.MotorCtl'4 Mhz XtalK1100ATRFout8TRVCCTrue1kTrueCL'CKSSRRRRRRD0D1D2D3D4D5TTTTTTQ0Q1Q2Q3Q4Q5LS1741210131191Stepper Motor Control..Decode.MotorCtl'Alto.13'Alto.14'Alto.15'....RunMotorStepControlAStepControlB7/19/79GNDGNDGNDTrueSerial No. 1returned onLoad cmdB470 pfn#7A#7A#4A#6A#3A#2C#6B#1B#2B#4B#3B#5B#5A#3C11 3 413121052ScanStartResetCtrs' 6 31411 7215104614 357152891014131110 2 3 5 6129471012111389891142153164175186197208219221013,2511,231224#R1#C176S74LS74's won't workLS14Note: the inverter must beS'R'RTTRSQQQ'DCS74#1BClock(#3B9)32True(#1B14)Alto.8'(#6B5)5414True(#1B4)Synchronizer modification(blue wires).Alto.8'RAWAlto.8'RAW(C19)an LS14 for noise immunityThe flop must be an S74:u fuG?fw bwb{d53{ 53{d7{ 7{,R{,C{H{{&3{"{ &3{ ^"{A<{A:{F;{04L{4^OQ{4^T{4^W{-%X5{-%W{-%U{-%T{,Pm{-%OQ{4^X5{4^U{4Pm{04<{4^?{4^EP{4^G{-%H{-%G{-%Fm{-%EP{,@{-%?{4^H{4^Fm{4@{FJ@{D@{HB{ F{ I4{ Km{+B{dB{EP{Fm{G{H{I{J{K{M{O{{:{:{ { { { {+2{+O{+{+k{+{:{:{{k{ O{$e k{", k{ { : 2{&{&z 2{'O{&3{%{#{"{{ V%{ V#l{ V!3{{ V${ V"O|y}(2Gr} }3}?X}B}KKGrBGr>Gr'sGrGr GrOGSXGOtGGr|4}| ] $ $ $ $ $ y $|s{{{{ {{ {!3{"O{#l{${%{&$ @$O$ (r$~O#X~O"<~O!~O ~O~O~O~O~s!~su~s<~X~s ~sX{$${$#{$"{$!{$ {{2 ${%{!3{"O{#l{$ $" $#% $$A $%^ $${H {z ~~)Ar$ $ r$ ~:#X~:"<~:!~: ~:~:{&{%{${#l{"O{!3~ #X~ "<~ !~  ~ ~ {&{%{${#{"s{!Vy $] $A $$ $ $&Wy$&W]$&WA$&W$$&W${({({({(k{(O# $W ${W s'$s%$s$$s#$s"${k {O  $$ $$$$$~3{ {{{%~ t~ ~~~{k {k+{kH{kd{k{k{k{k{k{ k~t~{%2{%O{%k{% G$ $$$~X~;~ ~ ~ ~ ~~~ ~ WV$~;~:${{!{'~s~~~|)A $$ $s!z${C~? ~ C~ E=~ Gv~? ~? ~zAY~zBv~zC~zD~zE~zF~zH~zI!{C{C{OFI{OH{OJN{r$zC$ C_$C_$ @{L{Km{JQ{I4{H{F{E{D{sMK& $H $F $VL V$VK V$VJ V$VH_ V$VGB V$VF& V${Km{I4{F{M {K {H {Fm {G { { AI$A& $${Am:?$r{?4$W $$$V $$$U $$$T $${.@P{3@P{2?4{.B?4~09{2mD{2mE{2mF{2mH~3;~3AY~3C{.BH-J$3=$ -=$-=$ ~-D~-C~-Bv~-AY~-<~-;{.BF{.BE{.BD~3D~3Bv~3<{.Q~-N{04M{.O{3O{2N{.BN~0I!{2mTQ{2mUm{2mV{2mW~3KZ~3P~3S!{.BW-Z&$3M$ -M_$-M_$ ~-T=~-S!~-R~-P~-Lv~-KZ{.BV{.BUm{.BTQ~3T=~3R~3Lv{$X5{$W{$U{$T{$H{$G{$Fm{$EP$H_ r$$GB r$$F& r$$E r${$OQ {9;OQ ~<9~87~8: ~=9~9;:~9;:2;9${2; ~G:3?{$6t=$6t=$0K$$K $$; $0;$Et?${;t?4 <> $|M~3<"sP& $~3Lv{r7 $?{ $~A2~A1~A0~A/~A.u~A-Y~A,<~A+ 86y$85{y$84^y$83By$82%y$81 y$8/y$8.y${86 {85{84{83{82l{81P{803{8/{8-{8,{8+~A'~A(~A*8-y$8,V$8+zy$~Et+ ~Et,<~Et-Y~Et.u~Et/~Et0~Et1~Et2H<6 $H<5{ $H<4^ $$H<3B $H<2% $$H<1 $H;8B{X$U~M<%7( ${7( ~A% :'$ :%$ :$$ :#$ :"$ :!z$! @${$e {" ~%~"!r$&3 d$ r! @$ ~!W~!W ~!W ~!W t~!W W~!W ;{",2{",{",{",{", {", ~&3~&3 ~&3 ~&3 t~&3 W~&3 ;{$V{$9{${${$ {$  $r $&W $%:$Wy ${WH$s%${sl,$s${sOs ]r${/;S4{/;C$R_ ${$R {$B $B${(l{!'O VE V${EP{!"{;-{5~A4~3u~6~A7Y~31<~38R{,:W{6{:{{7I<%U$5$5{y$5{$ ; ${ ;P~4~H5 ~H5 ~s4~4V7U$W1,$r 1 ${ 1P W<%$=${>~3u"s:$"s@ $:{$> ]$7%$d 7%r$ 7%$d 8eN$~4~ 44^$d 4^r$ 4^$d 5N$~1<~ 1<r7$V5$4]$4]$~V.u2$9} 6P~A#7' ${7'{4{67U$~VE{J} :Z { YQ VC$ ZJ$~T Vf$Vf${sX5{3XX|$T$d 3Tr$ 3T$d 3UN$~Qv~ QvU&$U&${VUm{Um}sS{5W 5W @$C; d$?${BfO{@O~C ~@ ?zr$D4+$ r?$ ~?X~?Xt~?XX~?X;~?X ~?X {@-{@-{@-{@-{@-{@-k~D4~D4t~D4X~D4;~D4 ~D4 {B{B{B{B{B{B{?5W ] $A $DX $DX$ $DXA ${D{{D{2{>;{>;2{@- 2{Bf 2|;t5WA $5W$ $5W $$~> ~> {5W {5W{5Wk{5WO~>;~DX;~DX ~DX {H{Fk {FO |C;{{>k{>;O{>;{D{{D{k{D{O{D{=<{8f;{8>{BK{BJ{BI{BH{BG{BFm{BEP{BD4{IKm{II4{IF{ID{Gr'sGrGr GrOGSXGOtGGr|4| |y}(2Gr} }3}?X}B}KKGrBGr>Gr'sGrGr GrOGSXGOtGGr|4| {+~ $$~O ~O ~O; $ @ $O +$ {O{k{{{+O{+k{+~ V;~ V ~ V ~ V~ V~3~ V ~OX{ O~O {+ O{ { {~{ OOGOtGGrOGOtGGrOGOtGGr{+ ~X #$~O~O~O $ @ $O$ {{{ {!3{+{+{+!3~ V~ V~ Vt~ V;~ V~3X~ V~O{~Ot{+{{d{"O~X{{+/~# 3B$~O+ ~O,<~O-Y (%$ @ (%$O(H$ {-l{.{/{0{+-l{+.{+0~ V-Y~ V,<~ V*~ V'~ V&~3#~ V+ ~O.u{(l~O*{+(l{+{){1~#{(l1 ]$!z]$ ]$ A$ %$]$ $ $s"${{*&$9$9$9V$$UVd$UV$U ]]$ @]$$s- $s. $s!z$s ]$sA$s%$s9$s9$&WA$&W$$&W$&W$&W$&W$&W$&W y$&W ]$&W @${57l{553{52{50{5%{5#l{5!3{5{5{5{5k{5 227%V$24V$22V$20zV$2%^V$2#%V$2 V$2V$3$3]$3$$3 ${&W{&Wk{&WO{&W2{&W{&W{&W{&W {&W {&W s2% ${&WO{&Wl{&W{&W {&W!{&W"{&W#{&W%{&W&3{&W'O&W@$&W%@$&WA@$&W ]@$&W!z@$&W"@$&W#@$&W$@$&W%@$&W'@$&W5{@$&W4^@$&W3B@$&W2%@$&W1 @$&W/@$&W.@${&W9{&W6{&W5{&W4{&W3{&W2l{&W1P{&W03{&W/.+$%* $%$ $.H$.$%] ${:Um~;PI:4Y $~?P~?R~?S!:4M$ @:4M$?N$ {>_S4{>_TQ{>_Um{>_V{:S4{:TQ{:V~9S!~9R~9O~9M~9Lv~>I~9P~?T={>N4~?O{:N4{:{P{:{O{=W~^|E |B|A&|?{|=|<%|:{ |F Ky$I{y$|s|( 1tQC $1tP& ${/{-{!{ {{l{:2{:{:{:{"{:O{2l {K { :[ }s9$s9$~?S!~?R~?P~?O~(N~(M~-N~-M/$-$~F8u~K8u~Jt8u~G9~G9~I7|IX:4$~F5 ~K5 ~Jt5 ~G6<~G6<~I4'IX6$~F1~K1~Jt1~G2~G2~I0IX3$~G"<~L"<~K"<~H<#X~H<#X~J-!CJt#$~G%~L%~K%~H<&~H<&~J-$Jt'O$~F.u~K.u~Jt.u~G/~G/~I-|IX03$@t<%$@t8$@t5{$@t2%$A)A]$A%]$K<%$K8$K5{$K2%$L)A9$L%9${NX~>~s>~s;~>~;~3<[CV$A$V@$ ?$9 ?{U$~2 ;~2 t~2 ~2~.~,~,~, ~, ~, ~, ~,;~,X- $- $2 +$ -${1 O{1-{1 {1 ~0~,~,t{0W O{-I{-I{-I{-I{-I{-Ik{-IO{-I 2{-I {-I {- O~2,~2/~21<~23u~.(X~,+ ~,,<~,-Y~,.u~,/~,0~,1~,2-,$-,$2,$ -:{${1 6{1-4{1 2I{1 0~0(X~,5 ~,4{0W,{-I8{-I7l{-I6P{-I53{-I4{-I2{-I1{-I0{-I.{-I/{-,~2~2<~2u~2!~.~,X~,t~,~,~,~,~, ~,!-$-$2$ -(${1 %{1-"{1 {1 H~0~,#X~,"<{0W{-I&{-I%{-I${-I#l{-I"O{-I!3{-I {-I{-I{-I{-~0W0$90)$~0W&0$9|M{KO{H<3{H<{H<{H< 2{G;{G8{G53{G1{H<({H<%{H<"O{H<{@Lz${"sW{"sU{"sT{"sS{@tJ$y N{$sN{$@{ N {EtUm{=E{N4M ${+ {3 { .$+z$*^$${&3 { { IXU r${LU {4;G {1tQ C; $A"9$L"9${1tPm{L {4Km ~8u~H9~H9~8u~,8u9<%y${9Gr'sGrGr GrOGSXGOtGGr{| |?||3]|4@ |C|) ~M~M~M~KZ~Lv{:O {:P~F~F~F~D~E{:H_{:J ~6<~6<~6<~4~5 {:7{:9^~/~/~/~-Y~.u{:1 {:2{${&3#$#$+'$$#$~"~!sH_]$sO ]${sOQ {sH {I P& V$I{ V$8 V$&Q$d"PQr$"PQ$d"PSN$~&N~!N{&Q}#P&R_$~)M)Qf$ R_$ PJ$9 I$9 K$)J$~)F&K$}#JQ{&J&K&$d"PK&r$"PK&$d"PLfN$~&H~!H&:{$d"P:{r$"P:{$d"P;N$~&7Y~!7Y{&:4}#9&; $~)6<):$ ; $ 8$9 2I$9 4^$)3e$~)/&4^$}#2{&3&3$d"P3r$"P3$d"P5N$~&0~!02% V$@-P$d;Pr$;P$d;QN$~@-M~;tM{@tPm}<O@tQC$@tJ$}<I4{@tI@-J $d;J r$;J $d;KJN$~@-F~;tFC;J$C;MU$F6$V{Mr$A:$=9$=9${=;{:B{:Am{:@P{5BB{5A&{9;I4{9;H{;tR_{;tQC{4R_{4QCsL$sK$eK$sN${Ls@$@$sE 2${B7G$4F$4F$4J${5H{5GK$Kr$#IK$2N${LBPJBNBKBIBGfBE-BBBO-BLBJBHBFIBDBAB@s@$rI0z$L/$I/^$I/^$@I2%$L1,$I1 $I1 $@{Jt1P{Jt/D]$FJ$D9$FJ,$D]${D{DO#K$#K$$K$'sK$%K$'sK$'sN{@$(K$K$K$K$N{@$A&$WAI$A&$A&$C@$s>^@$;$s;$s;$<$<$:<$?{@$>^@$;$;$;$4;$@4;$7;$4<$4; $7:$49$49$@9;;$@9;;$<;$9;<$9;; $<:$9;9$9;9$@>>$A?$A$>?$@ $<@t$?@t$>A$>B$AA$D%9$B,$B$C$B@$D,$Bf,$D$$@$V$$$V$$$@$e$$$e$$$@$@$"$$$"$d$$@($($+$($($+$($($+$'A$0WA$@0WA$3d$0W]${Bl{BO{{s{ {)e{{s{ {)e{1-{#%@$"O$"O$"s$$$$ ]@${{]@$$$$'$'$'$*^@${"{{{({#M_{&M_{'M_#N{${3fM{B{HB{=B{,M_{%K%N{$&K$%K@$)K$)N{${)eM_*;K$)K${'sK{)KWC$sAI$WA&@${3L{8Q{=G{5WE{5W;{5W:4{WAm{Am{s;{#K{e>^{'{,LB{=I{=C{=f@{9;{9:4{<{=B{<%{?XA{?X?4{O {EP{O {&E {5U{5WK&{5D{9K&{9D{;U{k{Vk{k{(k$F$E$E$E$@>$@>$?$@ ${E{?4K$J$J$J$@{J4LB$@4LB$7Lf$4M_${5WL|(%{G {G {G {G TVm$ Κtΰν(JasmineABravo.PRESS(JasmineManual.PRESS(PCLayout.PRESSSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix24A1.6Power WiringPageDateRevDesignerProjectFileXEROX1CSLGAVESTtyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUIa34bSWITCHPLUGWHITEBLACKBLACKBLACKWHITEWHITE-12 VOLT POWER SUPPLY+5 VOLT POWER SUPPLYSCANNER BASIC WIRINGSCANNER.SILFUSE 3/4 AMPLNELENSMIRRORB1B2A1A2YELLOWYELLOWGREYGREYGROUNDSTEPPERMOTORINTERNAL CABLEANALOG BOARDDIGITAL BOARDJ-1BLACK+12 VOLTS (YELLOW)GROUND (BLACK)GROUND +12 VOLTS (YELLOW)GROUND (BLACK)PIN #25PIN # 24PIN #23+5 VOLTS (ORANGE)+5 VOLTS (ORANGE)GROUND GROUND COMMON4/8/80u fuG?fw bwb GrOtGSXG GrGr'sGr>GrBGrKGr{K{B{?X{3{ 2Gr{(|OtG|L|| |?X{32{+WH< d$Q  @>^$  @$Q8^9$:]$8]|]$8]|$@8]|U$;tVf$98VCy$8VC$]8T$8T9$:T$9;U$:XUJ$9;U&@$9;U&$7[r=]|$CZJ$U=Z&$y>YkU@tYkUBYkU>Y.$<Y $<Y $9KJ$ @tW$@tW_$FW_$:LU$>;FI$:F&y$:F&$;tF&9$=E$;tE]$;tE$9K&$>;K&$?$+9)A V$G$ 9 y$9$ 9 V$G$ 9 y$9$ @?X ]$@t$?X@$?X$A$A@$B$A ]$Et$$@Et$$FH$EtA$BH$B$U$?$ ?$Et$Et$F$8 y$5$$4?{r$9;=f$94=B$4=B$]5?{$8?{$E$UE$U"sE$U)E$U/E$UsH!V$sE$y%BB$]BB $Bf$93C_$@/C_U$/C$,tC_$@)C_U$)C$"sC_$@C_U$C$sC_$@C_U$C$C_$@sC_U$sC$E$sE$E$GB$$%E$%GB$,tE$,tGB$3E$2D{G2EtG2I{<M{;tD4{5W>=M$=N{$?KJ$U=Z&$;tP&U$>;P&$BP&$ BY$B$$5B$A$B $Be${=Pm{<W{6tR{4/8/80SCANNERSCANNERCABLE.SILCABLE FOR ALTO 2123456141516171878910192021222412ALL GROUNDS TIETO A COMMON POINT21201918149876161525119751121086NOTES:1. CABLE IS 10 FT. LONG2. CABLE IS 19 TWISTED PAIRS3. ALL PLUGS ARE AMP. P/N 205208-1u fuG?fw bwbGrOtGSXG GrGr'sGr>GrBGrKGr{K{B{?X{3{ 2Gr{(|OtG|L|| |?X{32{+W{B2{s{(2{s{sX5{sU{sS{sQ{sOQ{sM{sJ{sH{sFm{sD4{sA{s?{s={s;P{s9{s6{s4{s2l{s03:W*:$X|-$VC-$:U*:$:S|*:$T -$Q-$:QC*:$:O *:$O-$M_-$:L*:$:J*:$K&-$H-$:H_*:$:6*:$7%-$9^-$:8*:$:; *:$;-$=-$:=B*:$:?{*:$BB-$:A*:$:C*:$D{-$F-$:F&*:$:4^*:$4-$2-$:2%*:$:/*:$0z-$+$.*]$*$.Y9$:?$s{s-{s+@ -$-k,Pk{-l{,PBA$BA9$DXA$B[C]$B-$rB-9$DX-$BA&]$@QAmk@Ydk@t.k@t.k{B?{B={B;P{B9{B-{B6{B4{B2l{B03{BY{BX5{BU{BS{BQ{BOQ{BM{BJ{BH{BFm{BD4{BA|'s|'s%|'sz|'s":,PkO:?ksRTVm$Κtΰν(JasmineABravo.PRESS(JasmineManual.PRESS(ScannerCable.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix26A1.8 TC200 Paper Transport ModificationsXEROXFileProjectDesignerRevDatePageParc CSLJasmineTransport modsMalesonA1/2/80leading edge ofcutouts to bebeveled to matchtrailing edge bevelto be removedrear sectionthree descendingtabs to beremovedTransportMods.SIL08Red areas indicate sections to be modified on TC200 Transport assemblyu fuG?fw b( ZJ+Wr!W7U% U- r!A!G"G,&77H7s66 ]7s7,k7,k7mHk7&k6k6t!3k6P!k ]k@k@Hk@k@lkk@%kksk@k@kk@skkG!W9 kk!Vkk!kk!3kkEr:Er!Er(Er/;Er!W$F&r$F&$]H_$FI$9:F&$]:H_r$FI$9:F&$!FI$9!F&r$&WF&$]!H_$(FI$9(F&r$-F&$](H_$/;FI$9/;F&r$3F&$]/;H_$;tH$ I$ Q$O$9Or$O$]Q9$:O$9:Or$O$]Q9$!O$9!Or$&WO$]&WQ9$(O$9(Or$-O$]-Q9$/;O$9/;Or$3O$]3Q$:XQ$y2U&$2T-$0WT ]$0WT $$+U&$+T-$)T ]$)T $$%:U&$%:T-$#T ]$#T $$U&$T-$WT ]$WT $$U&$T-$T ]$T $$ U& $ Q$UT-$WT-$#T-$)T-$0WT-$ Z&$ ^+W$9;ZJ$r9;Z&9$;tU$r;tU$BH$ V;tH_$;t;-$ V&W; A$&W; $%>$%>$"sEy$"s;-$ "s; $#7$U!W7$!W7$y; y$; $] =B]$ 6$ 6@$ 6$@V7y$V7$ $VAU$ 7I$ ;tAU$>7$ ;t7y$;t7$yBD$rAC$AC$]@tF&@$@tF&$] Qf$ QC$ :Bf$ BB$$ :QC$ AI$ BB$ V=$r :=@$ :=$@tT-$@tT $AJ-$ @tJ @$@tI$=Hy$=H$@<J $ $<T $=T $@=U&U$<J $;tGf$r :QC$ Y @$:XU&$:XY $:XQf$:XQC$ :W.$ :X|.$ Z&$$X|$$Z&$%:X$sX|$sZ&$X$8X|$8Z&$8X$ 8eG 8GG 8GG 8$$ H8$$ H8B$$ 8B$$ @$$ H@$$ HA&$$ A&$$ @GG A&GG @G ?4G ?{GG >GG ?{$$ H?{$$ H?$$ ?$$<@G!z$y>"$ V%+W$ V&z+W$&$%$W&$%$#&$%:&$)&$+&$0W&$2&$1t $U- ]$- ]$y0{!3$k0W!Vk$&W $U% ]$% ]$y#!$9"s$!W@$&W#$ $r$!W%^$##$%$$%#$&W#$#$A$##$&W"$1t"$,k,k,k,k#,k(,k2,k#"$$k$k$k$k#$ek($k-$k2$k7$k z@$ $ $ z$ V$"${r}(2Gr} }3}?X}B}KKGrBGr>Gr'sGr GrOGSXGOtGGr}r{ Gr{:{4;{?{C;-,kU$k$k$k $k $k s$k ^$k :H$k 3$!$k!3]$k!$kA!3$ke $k ]$k"$k"s$k"$k#H$k#$$#l$$A#%$$#H$$e#$$"$$"$$"$$"s$$ "O$$ ^"$$ :",$$ !$$ !$$ !z$$ !$$!3!3$$"$!W!$r6#H$k6"$k7"$k6"s$k7&!$k7I!3$k7 ]$k7m $k7$k83$k8$k8$k8s$k8$k8BH$k7$k7$k9$k9;]$k9$k9_$k9$k9$k:$k9H$k:4s$k8f$k:#G$:X$ 9:{$$#H$k"$kA"s$kd"$k!3$k $k!$kk$k$$$$HA$ $k z$k V$k $kO$k ]$k$k+3$k$ks$ks$kH$k s$k $k 3H$k ]$k$$kH$k $ V!z$V$#O$"s!z$!W$k $!!V$${CG{CE {CD4{CB{C\ {C] {DX{DX {DX3!W${({M<{kFlTVm$ Κ tΰν(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix27Appendix 2. PROM MicrocodeA2.1PROM Blowing ProcedureBoth PROMs are blown with the Prolog PROM blower. The Harris HM7603 32x8 PROM requiresthe PM9039 Personality Module, the PA16-2 Adaptor, and the 32x8(H) Configurator. The TexasInstruments 74S472 512x8 PROM requires the PM9046 Personality Module, the PA20-1 Adapter,and the 512x8(L) Configurator.The easist way to blow a set of PROMs is to copy an existing PROM. If you need to blow PROMsfrom scratch, you will need:[IVY]JasProm.MB[???]PNew.RUN.The command lines for the 74S472 and HM7603 respectively are:PNew jasprom.mb/f 22/t StateMem/m 0/c 0/b 0/a 0/sPNew jasprom.mb/f 7/t ControlMem/m 0,1,2,3,4/p 0/c 0/b 0/a 0/s.u fuG?fXq!bw _w_u \Du;3\u Z)u'|Z2u Y1u.FY(u Wu TyJu:Tyu Ru2Qqu2Ou Ni=u2L1u2Ka?TVm$zΚ-tΰνJasmine Scanner Manual Appendix28A2.2Microcode ListingTo produce JasProm.MB from the following source code, you will need:[MAXC]BCPL.RUN[???]RomDef.RUN.The command lines necessary are:BCPL.RUN JasminePromGen.BCPL//produces JasminePromGen.BRRomDef.RUN JasProm.MB JasminePromGen.BR.//J A S M I N E P R O M G E N//// generate PROMs for Jasmine scanner//RomDef jasprom.mb jasminepromgen.br//pnew jasprom.mb/f 22/t StateMem/m 0/c 0/b 0/a 0/s//pnew jasprom.mb/f 7/t ControlMem/m 0,1,2,3,4/p 0/c 0/b 0/a 0/s//12/13/78: first try//12/21/78: modify control mem to fix inverted signals//12/28/78: modify state mem for additional recharge cycle//(useless)//1/25/79: modify control mem to fix initialization sequence//1/27/79: modify control mem for inverted sample/delay clocks//modify state mem to remove additional cycle on recharge//4/30/79: fix Load sequence to access first, last locations//1/24/80: hold DCRestore high while A/D conversion is taking//place because there seems to be charge leaking into the//analog switch when DCRestore is low, even though the//AnalogOn' signal is high (shouldn't happen but does)//3/10/80: four cycle Recharge////The Alto supplies 8 data bits, and receives 8 data bits + ready flag from Jasmine//Data bits: 3 bits are decoded into 8 states://{Start',Load',Forward',Back',WE1',WE2',WE3',unused'}//1 bit enables the decode chip, and 4 bits are data//Forward',Back' are stepper motor drive signals//WE1',WE2',WE3' are write enables to the three 4x1024 RAMs//Input bits: two locations are used (both reading from XBUS)//one is "SafeLoc" (no state change caused by access)//the other is "StepLoc" (reading causes the FIFO to shift out)//PROM initialization//The PROM has 4 possible places it may be looping at startup://,,,//To go from to , do://pulse Load', then pulse Start'//causing the following state transitions// currentState Load' 0 Start' 0 Start' 1//--------------|---------|---------|---------// | | | // | | | // | | | // | | | // | | | //To load the scale/offset ROMs, Pulse LoadPrime to advance the address counters,//and then each 4-bit nybble is written by the appropriate WE signal and data//To Scan, pulse StartPrime//let count=0//until count eq nSamplesPerScanLine do// [ data!count=@SafeLoc repeatuntil data!count ls 0// [ count=count+1// data!count=@StepLoc// ] repeatuntil data!count ge 0// ]////outgoing proceduresexternal [ RomDefu fuG?fw bwbu _Du2]u2\u Z u2Yu'Y u-Yu2W(Ft Tt S_t R"%t O%t Ni3t M,@t Jt Is6t H6:t Ft(F t Et C@t(C@7t BJt(>J4t = t(= 4t ;t :t 9TSt 8.t 6t264t 54t 4^t24^.t 3 t23 9t 1=t 0t203t /ht2/h=t ,t +>t *rt*rt )4&t 't't &)t %|-t $>.t #-t !-t -t H-t  -t Qt RMt t  t \'t 4t t2t t2t ft2ft )t t pt 3 <TVm$Κ/tΰνF(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSJasmine Scanner Manual Appendix29 ]//incoming proceduresexternal [ WriteMem ]//internal manifest and structure declarationsstructure [ blankbit 7StartPrimebitLoadPrimebitSamplebitScanDonebitStatebit 5 ]structure [ blankbytebyteScanClkPrimebitRechargebitAnalogOnPrimebitDCRestorebitResetADPrimebitResetCtrsPrimebitScanStartbitblankbit ]//manifest names for state numbersmanifest [ WAIT=0SCAN1=1SCAN2=2SCAN3=3SCAN4=4SCAN5=5SCAN6=6SCANLOOP1=7SCANLOOP2=8SCANLOOP3=9SCANLOOP4=10SAMPLE1=11SAMPLE2=12SAMPLE3=13SAMPLE4=14SAMPLE5=15SAMPLE6=16SAMPLE7=17SAMPLE8=18SAMPLE9=19SAMPLE10=20SAMPLE11=21SAMPLE12=22FREESTATE=23LOAD1=24LOAD2=25LOADLOOP1=26LOADLOOP2=27LOADLOOP3=28LOADLOOP4=29INIT1=30INIT2=31 ]let RomDef() be [ let S147Mem=vec 512//Signetics 512x8 PROMlet HM7603Mem=vec 32//Harris 32x8 PROM//input variables are: StartPrime,LoadPrime,Sample,ScanDonefor State=0 to 31 do for Start=0 to 1 do for Load=0 to 1 dou fuG?fFt(bAt _t ^t(]Kt Z.t Y t XUtXUt2W tWt2U tUt2TtTt2S_tS_t2R"tR"t Pt Ni t M, tM,t2K tKt2JtJt2Is tIst2H6 tH6t2F tFt2EtEt2D} tD}t2C@tC@t Bt ?"t >Jt = t2;t2:t29Tt28t26t25t24^ t23 t21 t20 t2/h t2.* t2, t2+ t2*r t2)4 t2' t2& t2%| t2$> t2# t2! r2 t2Ht2 t2 t2 t2R t2 t2t2t \t t tt2ftft2 ;t2 t2 pt2 3TVm$Κ6tΰνF(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix30for Sample=0 to 1 do for ScanDone=0 to 1 do [ //set up Signetics PROM addresslet Saddr=StateSaddr<Jt2>J t = t2= t(#yX#"t! r!t t(Hr IHt(Ht( r I t( t(yot t&tR trCt$ trt){ tt(\yo\,t rtt(yo%tfrCft$f t)r)t')y)) t t( y) t p r 3TVm$"Κ:tΰνF(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix31if Load then nextState=INIT1endcase case SAMPLE1: //Grab output voltage in hold registerAnalogOn=1if Load then nextState=INIT1endcase case SAMPLE2:AnalogOn=1if Load then nextState=INIT1endcase case SAMPLE3:AnalogOn=1if Load then nextState=INIT1endcase case SAMPLE4:AnalogOn=1if Load then nextState=INIT1endcase case SAMPLE5://reset presented to SARResetAD=1if Load then nextState=INIT1endcase case SAMPLE6://Q7 low, Q6-Q0 highRecharge=1DCRestore=1if Load then nextState=INIT1endcase case SAMPLE7://Q7 correct,Q6 low, Q5-Q0 highAnalogOn=1Recharge=1//3/10/80DCRestore=1if Load then nextState=INIT1endcase case SAMPLE8://Q7-Q6 correct,Q5 low, Q4-Q0 highAnalogOn=1Recharge=1//3/10/80DCRestore=1if Load then nextState=INIT1endcase case SAMPLE9://Q7-Q5 correct,Q4 low, Q3-Q0 highAnalogOn=1Recharge=1//3/10/80DCRestore=1if Load then nextState=INIT1endcase case SAMPLE10://Q7-Q4 correct,Q3 low, Q2-Q0 highAnalogOn=1DCRestore=1if Load then nextState=INIT1endcase case SAMPLE11://Q7-Q3 correct,Q2 low, Q1-Q0 highDCRestore=1if Load then nextState=INIT1endcase case SAMPLE12://Q7-Q2 correct, Q1 low, Q0 highDCRestore=1//1/24/80if Load then nextState=INIT1nextState=SCANLOOP1//finish AD while reading next sampleendcase case LOAD1: //load scale/offset RAMSResetCtrs=1ScanClk=1if Start then nextState=INIT2endcase case LOAD2: //counter load on clock rising edgeResetCtrs=1//wait here until Load goes low (to access 0th location) [4/30]if Load do nextState=LOAD2if Start then nextState=INIT2endcase case LOADLOOP1: //step counter on every Load pulseu fuG?fFtbA rbAtat(_y_$t^ t]K r]Kt\t(ZtY tXU rXUtWt(UtT tS_ rS_tR"t(PtO tNi rNitM,t(KtKy.KtJ tIs rIstH6t(FtFy.FtE tD} tC@ rC@tBt(@t@y.@t? t>J t>J t= t; r;t:t(9Tt9Ty.9T t8 t6 t6 t5 t4^ r4^t3 t(1t1y.1 t0 t/h t/h t.* t, r,t+t(*rt*ry.*r t)4 t' t& r&t%|t($>t$>y.$> t# t! r!t t(HtHy.Ht t t rrt$y%#tRt(yt t\ trztt(y!tf r )?r t rz t pt( 3y 3 0TVm$ΚAtΰνF(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix32if Start then [ nextState=INIT2;endcase]unless Load do nextState=LOADLOOP1endcase case LOADLOOP2:ScanClk=1if Start then nextState=INIT2endcase case LOADLOOP3:if Start then [ nextState=INIT2;endcase]if Load then nextState=LOADLOOP3endcase case LOADLOOP4:if Start then [ nextState=INIT2;endcase]//we miss the last location with this here code [4/30]if ScanDone then nextState=WAITnextState=LOADLOOP1endcase case INIT1: //wait for Startif Start then [ nextState=INIT2;endcase]nextState=INIT1endcase case INIT2: //wait for Start to fallif Start then [ nextState=INIT2;endcase]nextState=WAITendcase default: nextState=WAITendcase]let Scommand=0Scommand<Jt(= "t(;t(:$t(9Tt(8"t(6&t(5t(4^t(3 t1t20"t2/h%t .*"TVm$"ΚGtΰνF(JasmineABravo.PRESS(JasmineManual.PRESS(TransportMods.PRESSdFFBootMesa.Scratch.Jasmine Scanner Manual Appendix33Appendix 3. RevisionsA3.1REV Gb: modifications to original PC boardsAnalog BoardConnect IC4 pin 21 to 22Cut trace to IC2 pin 5 (was connected to -5V)Connect IC2 pin 5 to C14 (GND)(C14 is now useless with both legs connected to GND)Add .1uF cap on IC8 from pin 5 to 8Add .01uF cap on IC5 from pin 1 to 13Remove resistors R20 and R21Add 10K pot with adjusting screw at top as follows:top leg to top hole of R21middle leg to bottom hole of R21bottom leg to top hole of R20(no connection to bottom hole of R20)initial setting is about 5KSubstitute 1M resistor for R12 (marked 80K)Substitute 820 ohm resistor for R10 (marked 5.1K)(NOTE: this resistor is the final gain set. Increasing theresistance will increase the output values)Digital Boardreverse both 6.8uF caps (pc artwork is backwards)Cut the etch from Cable connection 19 to #6B pin 5Add wire from #1B pin 5 to #6B pin 5Add wire from #1B pin 1 to #1B pin 4Add wire from #1B pin 4 to #1B pin 14Add wire from #1B pin 3 to #3B pin 9Add wire from #1B pin 2 to Cable connection 19D0 NOTE: The D0 provides TTL termination on its printer port,but the F3341 FIFO is a MOS device. For proper D0 operation,replace the F3341 with the pin-compatible MMI67401 TTL FIFO.The MMI67401 will work on Altos, but costs ten times as much.NOTE: #1B Must be an S74, not LS as indicated#6B may want to be an S138, although the twisted pair cable andsynchronizer modifications should allow the LS138 to work.Light BarRemove center two bulbsAdd foam tape to front of light bar base, to elevate lightsu fuG?fXq#bu _w_+w Y u2Uu2Ty-u2RuQq4u2O#u2Ni%u2Lu2Ka3uIuHY uFuEQ%uCu2BI+u2@1u?A;u=+Xw 7 u241u23 2u21$u20$u2.%u2-$u2+.u2(=u2'=u2%|