Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
XEROXPALO ALTO RESEARCH CENTER3333 Coyote Hill RoadPalo Alto California 94304
Jasmine Scanner ManualBY Joe Maleson
Version of August 11, 1980
[IVY]<Jasmine>Docs>JasmineManual.PRESS
This 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.
������ ⁄⁄£§¤“«££§¤§“‹°fl°fl“«–‡¤§“fl‹‹««–°fl‡–‹°µ·‡„·fl••‰‰»‚µfi'“§‹›§���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=<IELNKPQOOWNJPSRYY[MW^\KPWTUXEiaU\^UKLeTe[NNUXYYh\ZPGFF@SJEMM@CJ7A6;7455?:50&&1/108�`´¨É˙˝Ñ˛Éɯ¯˘˚¯´¾…¶w�"(&%3<>FDOJHGB?;=>A<7MVTJJ@BJHFNVZXMRSDFX‘T\RVNV__NNVTTVJjYSW]PDHcYa]YRSSW‘fVVTECMESNGLE<?D=98<3234?361+(0,922v¾ˆ˚˙˘¨—˝¸Ì¸¯˘É˜`»”‚j�",&"26@EEMJEBD@=;?;76OOZRKDFJKRP\SZKQTFQY[V^S_RW]_LUZVX\UsfZ]‘ROQiVeeYQTOYZfURUE=C?OIFOJD:@>3;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<<??LR8?GK0A@H>0+2.?:570/.7.&$+3;�ÓÕØÔÕÔÒÓÒÑ—˙Ì̯¿•<#%$#237:?GHGG@=7=8675-?EJL>8NP:<FSVOEGP=DOP?HPIEONP>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:B<B8152078518//41//107D—ÙÜÚÛ—ˆ˚˚˙˚Ò˙˜´…'/%’$#-48<6::=;=996720,*CHKA;BLSNLBMZRAJNCLKP:D[QBTIPEOLO\PWCX^ONUFWWSUTNCKIPLPRKJA9ABIF8;CI8;==>9552<=75:646320/)03“×ÝÝÞ˘`˚¸˝Ñˇ˙˜`‰£($+*.548@=AAA><:9944657JRKCHXZXRMLSXZHMUFPLVBRZWFPO[GVYT\TNLb^VV\U_WZZ]RBLMTQWWQMC?GGQN?@DN:@A=?@8;8BB;;:=EGV^ly���‹¸ßàÆˇÉÉ˙ÌÓ˝˚˙´¿�),..0=86<?EB>>=;:8;675:MQN;UW[VYNFS^YKIOFRO\FJUZFUNVO\[SZRK[b\XU]P]V\YZUDMKZYT[VPGAF=NP<EIK:BA:;88Wq��¤'–¾ÉÌ—ÑѸ˜ˆ¶”˛ßàßÒ×ÓÕØÒÌ˝˝É˙�)-/(+288;@?<?CA;<9<:754MNP>UY]XWRKO‘XLOO>POUDOOSBTOZEW]PNGPa[ZVW]QWOYY]RJUKXW[ZVSGA@DNL?EIMB<C;G:O…àåªÞßÜÆÜÞÝ×Ñѯ¯„`¸×ÙÑÛÆÕ×ÚÕÙÕ—˚É�’-/)/;97;=:C<@<><;>;61-GFK>KNZSUJOEVMGHQ<KPUIIRSFRVYERQJHH\[VUN]TISNXWYVDMGUVWRTLFEB@KJ<AFH95><A8kÚªäÜÖˇßØÓÞÚÔÙˇ˜``¾‰ˇØÑ˛Ì—ÔÕÖÔ˝˝˝É�’).)03599==@<;67:;74722>>>:@CLJGBE;SFC@M9HGD=@DH<HML<JQDCGPWIRCSIAOHPMRK@ACKKJAGA:=759:18@B84:9;<�—Õ—ˇ—¨˛¸É˛ÑÒÑ˚´‰·¶†˜—¸¾ˆ˙¸˝Éɾ`»„~"+’ ..3026;65:36672-/,/@E75=JIJEE?6LFC:B;>HD:@GE=FMR8@LCJHNLCKCGE@E=EFKRU\ey����'‡µ·«��zg‘R@4-05<�˚˝˝¸¸˙¯ˆÀ˙É˙¯É˜‰…‚·»˘˘¾…˜¯˜˜¯´À„µw!(&")+*/,1412631-0/,*(&7;12:A=7=>>2@?=8<27=<5<A<4=CB98C>GIOT[fnx����§‹‚ˆ¾˘˘˚˚˘˙¨Ì¸˜˜¿…»¿˘˘À»–¥�0=“˘˘˙˜¨¨¿„`˜¯``¯`‰””––`…»‰¿¿¿ˆ…»”•·m�!"�!�#&%*’*)’*)�’(&$��14&45@4:5=95;;96800<B8GQV]lv~��� ¤‡µ»…ˆˆ´¿´¾‰„‚¾‰`ˆÀ˜`ˆ`……¿˜˜´˜À¯˜¿`‰»‚‹%9·¯˜`À…¾»”¯¨˜À´¯¯ˆ”…”µ¾`À…¾‰…”¾¿„·†e� ����!## &"$#� ������/4+226274DKKT_hp|���⁄ƒƒ§§‹fi›««fl†‡‡¶”–»…ˆ´`À„‚•‚‰´¾ˆˆ`À‰¾¾”¾ÀÀ¿¿ÀˆˆÀ¾…¾¾¶’;µ¿˜˜¿…»……¿‰‰`˜´¾`”‚‚·”¿…”„„µ‚•”•–fiY���������!%$ ���� ""���&5*//00<~¥'‹‹§«¤¤§�£“§ƒ�⁄¤ƒ¤''''°–††«‚‚‰‰‰”·†·‚„‚‰‚„••”»”‚•‚”•‚»…»‰»•··†-I‡µ„‚µ‚•„¶¶¶¶”…‰”»”·‡flfiµ†•‚µ·»‚•‡›‹T���!&""#($)’%!’"��"����+-*-&+-4�⁄“flfi««'›fl›°flflflfi†«‹°‡¶‡‡¶µ¶„‚”»»„„µ·¶‚µ•¶¶‚‚µ¶„•µµ•¶µ···‚””»·¶·†8U·‡†‚¶‡¶‚¶»¶”‰…„„µ”·¶–‹µ¶µ••••„”·“«K��� "�� ) #"% �$�������+.+/47BLy““‡‡›“““†‡‡¶‡µ‚”¶¶µflfifl‡µ¶•»•µ¶»¶¶¶„µ¶‚·µµ••††•†«¡��vr •„fi ��‡·‡>m–‡µ„µ‡µ¶„…‚”„‚µ‡µ¶‡µ‡†‡•‚”„¶µ•¶‡fi'B���������"�������������+:H«fl°††ƒ”…‚¶··†•»”»„·¾¿‰„‚†°·‡µ„»À…‚‚»‰…‰»‰„…¶fl'��}eO?/(! �*0�…¾«��}‡””Rx'·…¾”µ·‚…¿¾”»”‚»‰”‚„•»·”„‚•„‚‚•··°B�����������������������)7@«•··‡‚„»””†·µ…¾…‰…¶…»¶”¾·„„•”»¶»””†“��|n‘VF9+&(%&!��!!"$#*C•¿¾�P{�·¿`«��›‚‰À”„‰´À‰»•»•»””•·…‚·‡•°·‚„‰µµ‡¤7�����������������������(4;¡¾…”‰…¾ˆ˜´¾¿´ˆÀ¯`‰•”¾`À¿”fl¡��rcSI>0.)’$#!#%" (! ���� #TÀ`¿¡‘»·fi……‰”ƒ§–•‰»„¾˜˜‰‰¶„‚‰„„•»””•¶·‡¶‚¿…‚‚¶‹3��� %$)+)#&’!����������%/7�fi»¿´¿˜‰`¯˜˙˙˜˜ˆ¿‰»‰¾§NB70,.*%)&’* ! �����!!"E�����������!S¨Ì˙¤O⁄�¥…¾”„‰‡“‡µ‚µ”¾……¿¿…¾»»”˜`´¿¾»¶·•„‰¿”•”µ/��� "#"#" �������������&+6�¥»‰…¿¯À…¾´˘ˆˆ¾À‰¶„»‰�!*(&""#�! /.������������������������M˜˜ˆ•���‡»‰„¶»¾•fi‹››†‰¿‰…¾ÀˆÀ¿¿˘´¾`¾…¶–‡·•»•¶•–)�����"�!���������������$(/��·…À¾¾…‚”‰‰À„À´‚·µ•µ��# �����’�������������������������;‚¾¿»»”„µ‚•¶†·”„µ ��‹‡¿¾¿¿À‰¿…»´¿‚»‚„¶‡†µ‡„‚•µfl"��5�D� ���������������!’2��›`¯¾¿…``ÀÀ‰À´˙…‰”…»��!! �� �����������������������������9„ˆÀ…»¾‚¶‡„fl·¶”„•µ£�ƒ·À˜ˆˆ˜˜´À¾ˆ¾…¿‰À¿‚‡‚·»‰¶¶“��#$-�������������������+9B�£“•¾¿¾ÀÀ»‚¾¿¿¾¿¿`‰…¾ !#$$#""!����������������������������2£¿¿¾»„¶††·µ‡¶•‚‚”‡£�¤»`ÀÀ`ˆˆ¿ÀÀ¿”‰”»»‚µ¶„„•‡·'��"!��� ����������������baa�£«–ˆ¯˘˙ˆ‰…À¯¨˙˘¯ˆ‰´˜¶$$$&" " ����������������������������%;j⁄˙¯`¾‚µ…¿••„‰ˆˆ`•¥�¶¿´˘¯¨ÉÌ˚¨˘˙¯Àˆ´`”¾„¿„¶µ“������������������������‘c^�¥›‹†‰¾`˜¿`À˜˜˘˙˜ˆ´˙¿»*!!#�� �����������������������������%6M\⁄…””•µ”„¶‡µµ„”‰·‡fi‡„‰¿˜˘`ˆ˘ˆ´`À¿¾¾”µ‚µ·µ¶µ'������������������%(&-24ZWR�£‹§›‰‚„”„»»¾´´`´`À¿»‚0� ��������������������������������$6DOY�”‚µ·¶‚‚¶µ¶·•¶••¶¶·µ·”¾¿Àˆ‰…„”„µ…»•µ–'¥›† AEGKKOYY[aahmpvu��������[‘\�£†°‡˙¯˘˙´¯˙˙Ì˝ÌÉ˙˘˘À¾Y(#’%$"! ""�������������������������)8BEAS�…‰´À´˜…À`‰‰¾`‰”¿»”µ»˜˙˛É¯´`¾˜´˜À°¤¢��} –«fi°fifl–‡›°fiƒfi'�����wpd[KBZae�§††‡”˚˚¸¯¿ˆ¯˚˝Ó˚˚É˙`˙À�"’%%$!" ��������������������������0:E?<G^§¿À´´˙¯˙˜ˆ‰‰À¯˘Àˆ¾„‰`˜˚̘´¿À…fi¡�lV>-# 3gkjd]VUROE820&����������SQT�“«°––ˆÉ—˝Ìˇ¨Ì—ˇ¸Ñɸ¨¸É´Q$(+&! ## ��������� ������������(:FFGILTe‡ˆÉÉ̸˚˘ˆ¿¾ˆ˝˙´É´¾…À¯˚„�s]G5$!���������������������������������\YV�§'“«'·˜¸¨˛˛Õ¨Ñ¸É˛É¯˙˙¯˜£)*&%��!"��������������������!#-9@KOGEJFU[b«´¯¯˘ˆ´‰‰¾``´`ˆ‰¿…¾¿À¶����������������������������������������e^a�¥¤ƒ'“–`¨˚˛É̯˚˝¸¸˙```‰»”r)+(&!!!! ��#� ��!"$#)..,,,222AJMNKAA==CECV¡¿`À`À‰…‰”¾”„»»‰¾…”””_��������������������������������������[[Xk¡¡ƒ§«‡…¯¨¨¯˚˘¾˙˘˘ˆ…‚‚…¶»fiC0.’##$"!$’)%"*/33469:;;87;66;=C?7485:96/2K«…‚„•„‚„„»••·¶„„•¶¶‡£��������������������������������������^_\]�⁄¥¢“›†À˜À¾»‰¶¶¶µ¶µµµ•¶‚¶�761442533:?84769:9:=;562//*,298/&,.243+&)6Z'•†–µ”‚·•·•·µµ•·‡µ‡–a������������������������������������jhmh{‹¤'“fi·……˜¿‰˜˜¶•‚»¾”…„‰¶»„}PSRTSMHLKGG@?89:411.+-+’(’(-22*##(+.’!"#(2Tƒ¶··¶„¶µ·‚•‚„”‚”¶‡†'(�������������������������������������otprm£fi§'›·‚˘˚˚ÉÌÌ´„ˆˆ˘˚—¨˘´˘´„faa‘aZVULF@;987730310.-+(*131.+,(-./$� #’)4T'`”‚…`ˆ¾˜ˆÌ¨˚˚¨´‰·†�����������!$!!!���$$����"�����������{z~}w�·flfl†‚‰´¸Ì¸˚˛˝„˘¨¯˚Ѩ˙˜ˆ˙˙¢V[ZVOHHED;887872/1..*/(’+.13,*&+5.(# "%!&,3X£´¾¾¯É¯¯É˛˛¸¸Ì˙´‰‰‚V� #$(+)(*69=;=<6/43,���#%�����������������fi„”‚¾´˘Ò׸˚×Ù˘`Ò˛ÕÞÒ˝Ô˝Ì˝ˆ�MTYTLJHGF?=<A;7:64234..467360243.)(%)’$’*/<]flÌɸɡ˛—Ñ×ÑӸɯ¸˚´„m’205:GKPVUROF;:3250/!!#*1&%%26KZr���������`¨˙˝¸Ì˛Ù—ÓÝÝÚ˚ÝÙÆäÆÝÆÛØÒ×˚ZHOTIECA?::<=?<;:456414593537482+’+)1++++.6Gf”ˇˇÔÛàÛ×ÞÚÜØÑ˝Ì˝¨¨˜|:??BIDGJLGJJJPCE??;<>J\r���''‹¤£������ ��•`˚Ì˝Ñ˛ÖÓ×ØÜâßÖäâäåäääâÜÙÚ–EJLIFE??<=9;>879:410.3872203450*)(),-*%%-1@Jd„ÒˇÒÜàÚÚØßÖÖ¿˝ˇ˙˚¸¤4416@PSUOMSYau~��›”ˆ¨˝¶»‰fl·°fi ¡«����������¨ÉÉ—ÝÛÞÆßààâª˚âàâæååäâÞÞÞÝ�FIKKFDA;:8=9;95533469851643751./,+/,.*,’,:DMj†ÔÞÆßÞàßàÝ×…ÙÑÌÑÖ�EIITmz��ƒ•¾˙˝˛Ö��…ÕÉ˝˘˙…°„fl¢¤ ��������¢���¿ÌÑÓÜÝßßääåÆàÛ¯ßàÆæªàßÞÜÛÜÌKFGEGA;786:67454969751277<210*++(")’*/>EVch^XvÒÜÜÝÝÝààÜÙ…ÛÚш˚�LW�˚ÖÚÚÒÒÝÜÕÕˇ¶|up‚¸‰fl¿°§‡fl£“ƒ⁄›����������«˚ÔÖÙÜÞßÆÝÜÛÝÛ¿×ÙÛßàÜÜÛØÙÙÚ�AIE<D<=;<79<9>:53174-537963+/9FNQXTTF>5)%%*4fÓØÙÜÙÙÙÙÛÛ‚ÚÙˇ`˜yBJ�¸ÙÚÚÚ×ÚØØÑÕ�uDK�¡§¾¾”†‡«‹« ¡�¥ ���������ÌÓÕÖØÝÚÚÜÛÜÙØÓ‰ÜØÛÛÙ×ÔÖÕÚØÑlFB;A:;88<B;8010/.2-/;HPVSVPKD7-"�#$ & #&$’3cÕ××ÖÖÕØÖÖׄÕÕÑ—˝e>N�fl˙É×Ø×Û×Ù×Ø˙kw��ii¥¸„'‡fi'⁄'£������������·—ÒÑÓØÔÖÚÚ×ÖØØ´ÔßÜÚÔÕÖ×Ñ××Ò¨T9:=:7369;24<JZ]]WWMC:*%���#$ ! $��##"!"#%-lÔÒÕ×ÖÓÔÓÕÑ„ÑÓÒÒ˜XU_£¢ƒ‡˛ÕÕ×ÑÒÒÕ��^EB>Kq ›¶flfi•°–“fi£�����������˚—ÒÒÕÕÖÖÜÙÛÞÚÓ`àÞÜÖÒÕØÕÚØÕÑ 2=69=IU‘c‘UJ<*" ����!"����"#� ��� #� ��#,r—ÒÕÛØÚÙ×ÒÕ”ÑÓˇÑ¯APk�� «¾ÔÕ×ÙÙØ×»\>bi{�yt�¶°›£µ§�‹¡�����������‡˝Ñ×ÓÙÖÚÛÛÜÜÖÒÀ×àÞßÛÚÙØÞÛÚÕ¯\__YOC2*%%(()! #!�$#!# ��"! !������ � "!!0y˛˝ØÜÙÝÝØÔ—¾˛Ô˝˚¿6St����flÔÝÙÜÙÖØÓ‰¡�hK?>:J���°·–·¶«§�����������ˇ—ÖÖ×ÖÓØØÕÓÕÕضÝÝÜÞ×ØÛÞÛØ×˝E++$$!&%,%#$’# %!!"##"! �!&!!!����� ��!"$.�×ÖÙÙÜßÞÖÖˇ´ˇÒÒ—”+i~����›ÔÙÒÙÛ××ÓÖ×�Q@CicvnY_�–‹¡¢�������������¾É˛ˇ˛˝ˇÖÕÒÑÔØÔ⁄ÔÕØÒÓÓ×ØÙÕɈC**%&$%#&$’!%$� $���$% ���! �"����������$-�ÒÓÔÕ×ØÒ¸˝¨ÀÉ—˛Ì“8TR����¥¸Ó˛—ÒÕÔÒÔ¸��qZ^MCABE\“¥�‹“¡�����������⁄˙¨˘¨Ì—˝—Ñ˝Ì¸É�`¨˚˛¸¯ÌÒÖ˚˜´D#%%# $%("&"!#��!������"���������������$ ’�ˇ˝—Ó×ˇÌˇˇ¨ˆ˙˝¯˙¡PT@Q���§˘Ó—ÓÓÖÙÚÙ˛y‘<<?JVg{��»˜‚‰ƒ�������������‰¯˘É—Õ—˝Ñ˚¨ÉÉ�‚˘ÌÑÉ˙˙˛ˇ¨˙ˆF’%%$!$%&$& "" ����� !!���� ����������$%-�ÔÖÑÌÕ˛˘˚˙¨¯˚¸˚¨�PH?,y��“ÌÒÔÒÓÔÛÙÛÕ˜��£–ÀÌˇ—Õ˚̸˘‚��������������⁄˚˝¸˝Úס˛¨¸˛Ò¢•˝Ì—ˇÒÓÑǪ́˜K)((#$&&&$%" !! � !�"""� ��!$!�� ���� ""’3�ÖÛÙÕÔ¸˙ˆ˘—˝˛˛˝¨�[YP/;��«˜˝ÑØÕˇÒÕÙÖÌÑ˝ÌÔÖÓÕ××Ò˜˜´‚‡°�������������¨——ÖÜÜÓ˝˘ÌÒÙ⁄‰ÙÌÕ×ÖÔ×Ù˛˙˙P/(&$!#&’!"’"#"�� $"�# � ��"# ���� !!�$%%/�ÖÜÙ×ÙÕÔ…„˙ˇ—¸ÒÉ�bdR2%g�–ÌÑ—ÙÕÒ˝——˝ˇÓÙÙÜÙÔ×ÖÓѸ˚¯¾•‡������� �¢¡¡�›ˇÓ×ÙÜÕ—˜˚Ú׋‚Ö˛ÝÜÔÓÔÙˇ˘˘V*)’$%**%’&-$! ��#"$!+!" #$!�$#$####$�$#’0£ÓÝÚÙØÖ×´À˙¸˝˝ˇ˙ub[P:63�µ˘˝˛˛ˇ—˝—ˇ˝—Ô×ÛÞØÑˇ˚˚˙¾¶·fl���������£¥§§¢��É—ÔØ×Õ˝˜˝ÔÓ–‡ÖÓÕÙˇ˛—ÒÓÉ˙V-+’%+&’%’**%$# "$""&+%!!� "#%#!"&"�#�#%>j`—ØÚÚÛÚÖ˙¿¯¨˚˚¨˙pd_W<3*T‚¸˝Ù˛˛˚˝Ó——ÓÕÔÕˇ˙„·††‡fi‹‹“��������£⁄'¤ƒ“ �”Ñ—ÙÙÙ¨¨ÔÛÙ„°ÖÔˇÕÓÑÔÔØÒ˝Y/.)1(&)/’,’)$$’%$$$(/*$&"’#$#$’1BQl~�›‡‰¨˝ÑÜÙ×ØÓÔ˚˚É˘Ì´À˘rnmeZE:5�Ñ˝ÓÌÒ¸¸¯Àˆ¿‰…•••fl›flfifi¤“‹ƒ������¡��¡¡⁄¥£���¨ÌÙÔ˛˙¨ÒÔÕ¾'ÑˇÔÕÕ˛ÑÓ×Ô¨[//()%,+((’*’%$&&&)$"##"&-AQo��†À˙˛˛˛˙˙˜¯É˚ÒÓÙÝÚÑÔѸ˙˘˜¾¾µxtmeYNE?D¾Ì¸˝Õ˜„¾‚¾¯`´‚‚°flflfi‹›“ƒ¥£�����~�����������„˝ÒĮ̀¨¸Ó˛´¢˝¸ÔÕ˛¸—˛ÛÑ˘[--)’$*&(’%&)#"%!!-1B[v�›…¯¸¸É´Ì——Ô˝ˇ˝É¨˙ÌÑÒ˛ÕÜÜÕÕ˛¨‚�pmrrz{uwofZUWuˆÉ¸×¿µ¶‰‚ÀÀÀ……¶·††°'ƒ§⁄¢������������������˝ÌÌ˝˙¯¯Ìѯ§˝ÕÞÚÑÓˇˇÓÌ˘]*,(%%’&($&+2Eax��¶˘ˆ˙—Ñˇ¸—˛˚˘˙¸˝Óײ˛¨¨˘˘˚—ˇÓ˝¨•��fI-!3K\l������wi]S�Ñˇ—‚„‚µ‚¾„…À•¶···'“''‹ƒ¡����������� �� ��¿¸ˇÓ¯ˆ¨—Õ—«ÓÒ×ÚÕ×Õ˝¸¸¸g.’*)4K]v�§¿˚Ó××ÖˇÖ×ÖÔÖ×˝˝Ó¸˝Éɢ˙˛˛˝Ñ˚À…–��mS9- �!")7Bb|����������zpj†ÑÑ¿¿…µÀ„„¾…•¶·¶†›'��t\70�����������������˙ˆÉ‰‰˘—Ó˛“—˛ˇÑÓÌÔÑ˚ɨ�p��fi…¨ˇˇ—×ÙÕÖÒÕÙÔ×ÙÝÜÙÙÔÑÔˇÌ—˙˜`†��nP8+$#").5?NXluv}z���¡��£ ���}qeZa¶ˇ„”‰¶•¶»·¥�qaO;, �!������������� �����„¯˙»”¿¸¸¸⁄˝˝É¨É˝ÓÑ—˙É˝˙˘˙˘À˘˙Ì˝ÓÔÓÓÑ—ÒÑˇÓÜÙÒÒÑˇ¨„¥�\>.!����"4FWm��������������¢¢¡¤��yoqqmlcwÀ‡‡›�cL7)�����"(4DLQ__V�����������������¥˚̯¯˘Ìˇ˛ƒ¸¨˙¸˝¸ÒÒ—ÕÓ—˝˚˜¨¨˝˛ˇˇ×ØÖÙ×ÙÓÕÖÑ˙• |‘J2# # (4DWat������������������� ⁄¢���������ytgb>#���� ’1:DYdjmqmrqurk�������� ¢'¤⁄⁄£ ��É˝É˙˙¨Éɧ¨¨˙¸˚˚—ˇ—ÙÙÕˇÓÉ˚˘¯˚ÒÔÙÙј›�}bP9*)()2;H[es��� �����£⁄¡ §ƒ � ���ƒ£����¡⁄¥¥¢�������|xskdYamv���zvzx����{|vts��������¢��� ¢¢£��¶ÔˇÉˆ˝—˚¥˙˝˚Ì—Ì—¨¸ÖÜ×ÚÕ˝˙¨µ«��iO=($/3AQYh|���¥§‹fl“¥������¡££§¢� �¢⁄§����������¡����������������������������������{�������������£fi“¡��ÑÑ˝˙˙˚˙§´ˇ¨˝ÔÓÒÉÌ—Òˆ‡�xX?’$&’5L]y�� £‹¥‹µ‡„fi«��¡¤fl¤flfifi‹›£�� �¢“¥£⁄§⁄�� ⁄ƒ¤›⁄¡£¢¤§§¢¡¡⁄������������������������������������“§¢�⁄¢¢���‰—¸É˛¸É'ˆ˚˙˚¨¿fl�xYH6’&.7M[t��“¥fi„•`¿µµfi§�¡§“§«‡«£⁄�⁄›‹–µ††•µ””…‡‹¤«⁄��£ƒ“§'¥¥ ¡¥⁄¥������ƒ �������������������������������������������˛ˆ„…£�v�u_P;)))/BVkz�����fi‡•‰‚…„fl–fi¥¥“ƒ¡�¡¤§§‹››“–‚„„„µ–«fi•‡°†‡›‹‡–·flfl°ƒ§¤ƒƒ¤�£ƒ¥¢¢¡£���⁄§� ⁄��������������|o]H7���������������������E0&!"&(,AO‘l|��¤fi–†‡‹“'¢ƒƒ¥¥'›†•µ„‡°‹¥§§°†•‡·°“¤§'¤§‹fl‹'«'ƒ«‹°fi¤§fi¤ƒ ƒ§§‹›fi'¡ ¢¡¡¥¥£���¥¤ �¥ �¢¡⁄���jP=5%#&,)���s{������ƒ¢ƒ⁄¡⁄ ƒ��}IPZs{����¥›fi–†‡°–µ›¥¥����£“fl††”``”‚»·› §‹–‚»„°'‹⁄����¥''§������ ·•°›¤¤¢¢¡�ƒ“ «“¤“⁄����¡¢'¤§ƒ��yhTC-! #.-0.,/4!��������������������������������«¤'§'fi·„”°¥�� £›•‰‰»Àˆ˜µfifl¤§ƒ¢¥�����£¡� �������£ƒ¥‹°†°–‡§£§‹“«§§''�ƒƒ¥''«¥¥¡���l\D5)!�$()-/*/0(#� #������������� ¡ ��������������“·†„µ†§⁄''«†›¤¤¤fi†'«–‡›°fl‡¥� ���¢ƒ �§‹¥���¡��¢¡'“§ƒ £¤‹°fl”•fi�¢§'¤'«†°“«¤'¥��lZ@1&,(++$/-.0,&*"�&,)( !"��������������������ƒ¥“¤‹‹›“§£§ƒ��£ƒ†›«••„“§¢¡¢���££�¡§–•›°«›'⁄����‹⁄ ƒfi'£���¥¥“›°fl›°‡–‡›†fl•¶‡•µfl¥�v_L9,""*06;;716,%-&&+!)%’(’#!���#!������������ ¡¥§'–¾`•‡°ƒƒ��¢�‹“'ƒ§¢⁄¡¡ƒ‹·†“ ����ƒ·À¾À´¯¶¢ ���£¢›¤fl†«�£££§««¥¤›fi¶„†µ¾…¶„µ‡°«��mX;-’&$�,1846;91,)$# &,*))$"����)23,#���~pfy�������¥¤·¤›·¶–fi›¢�¢¢����£§›¤'«¢¥°'›«fi–fl°›fi°‡–«¤�¡ 'flfi“'ƒ⁄'¢¤›‹¤‹§¤›«‹flfl¶‚¿ˆ”„¶“¡�v^F6’"’(19861+.,-)) $,042(!!��""./3.)#���#),"!������������¡¤���⁄⁄¤¥¡¥ ⁄¤¤⁄§¡£“flfi†fiµ˜»·–ƒƒ¥��¥'†·‡¶¶·°«‹¡⁄“››‡«†fl‡“¢'fi°†°‚°–§��eW@5,,5,35/4670%,#"#’"()0+(*��$’2661*#��#+,154363-��������������¢ƒ¥“¤›'‹ƒ¤“'¡¡⁄ƒfl›fl›†¶‡°µµ''⁄�ƒ'fl›¶·¾‰¶„˜`¯¿À…‡‹°fifi'°flfl–‹«§��pZJ@./115?><;A6251(+’"#--**)&�!(6<@<:3(��"**0167755+’ �����
Jasmine Scanner Manual 2
Contents
1. Introduction
2. External Interface2.1 Jasmine Control2.2 Commands2.3 Data Transfer2.4 Timing
3. Analog Electronics3.1 Detector Array3.2 Video Signal3.3 A-D Conversion3.4 Noise Filtering
4. Digital Electronics4.1 Finite State Machine4.2 Sequencing Logic4.3 Stepper Motor Control
5. Mechano-Optical Design5.1 Paper Transport5.2 Document Illumination5.3 Optical Path5.4 Lens Alignment/Focus/Magnification
6. User Software6.1 User level interfaces: Jasmine.RUN, Scan.RUN, Scope.RUN6.2 Procedural interface6.3 Microcode Interface and Implementation
7. Check-out Procedures7.1 Adjusting the Output Level7.2 Optical Assembly7.2.1 Alignment7.2.2 Focus7.2.3 Magnification
Appendix 1. SchematicsA1.1 Analog BoardA1.2 Finite State MachineA1.3 Sequencing LogicA1.4 Stepper Motor DriversA1.5 PC board layoutA1.6 Power WiringA1.7 External CableA1.8 TC200 Paper Transport Modifications
Appendix 2. PROM MicrocodeA2.1 PROM Blowing ProcedureA2.2 Microcode Listing
Appendix 3. RevisionsA3.1 Rev Gb
Jasmine Scanner Manual 3
1. Introduction
This 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.
People
The 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).
Jasmine Scanner Manual 4
2. External Interface
Jasmine 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.1 Jasmine Control
The 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 Scan ning, and a LOAD command is received, or 2) the sequencer isLoad ing, and a START command is recived. The sequencer moves from Init to Wait on the fallingedge of the START command line.
2.2 Commands
START (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.
Jasmine Scanner Manual 5
SETDELAY (000)
The potentially large bandwidth required to transfer samples from the Jasmine FIFO to theexternal computer is a problem in some applications where the computer cannot keep upwith the transfer rate. A delay counter is implemented which provides additional delaybetween digitized samples in units of 1 microsecond. The 4 bit Data field thus specifies upto 15 microseconds of additional delay between output samples. (see also section 2.4 fortiming details).
2.3 Data Transfer
A 64x8 FIFO buffers data bytes between Jasmine and the external computer. An output bit fromthe scanner (XBus.0) is high when the FIFO is ready with a data word. Two control bits from thecomputer are used to shift a data word out of the FIFO: the falling edge of XBus.Read’ sendsXBus.A0’ on the FIFO shift-out line. After the FIFO receives the shift signal, the output ready bitwill stay low until the next data byte is ready. This will take more than a microsecond for someFIFOs.
On the Alto, the XBus provides the input path from the scanner. Each time the XBus is read, two addressbits are available on the connector, and a third bit indicates that the read is taking place. For convenience andspeed, the "XBus read" signal is used to clock a flip-flop, with one of the address bits used as the input data.Thus, two XBus addresses are "safe," causing no change to the FIFO, and two XBus addresses cause the FIFOto shift out. For computers with other I/O interfaces, both the clock and data can be driven fromcomplementary versions of the same output bit (clock low, data high causes a shift).
Note that the XBus read signal goes high when any XBus address fetch is issued, so in order to shift theFIFO, a non-XBus address must be stored into the Alto MAR.
The FIFO is reset at every START pulse, so that any data not read out at that time will be lost.Because the inter-sample timing is critical, it is impossible to do anything if a new data byte is readyand the FIFO is full: in this case, either the new data byte, or the first data byte in the FIFO,must be discarded. It is up to the external computer to ensure that the combination of integrationtime, skip count, and delay setting will not cause data to be lost. On the other hand, if the onlypurpose of the START pulse is to maintain constant integration time, there is no error signalgenerated if none of the data bytes are read out. 2.4 Timing The maximum speed of the Reticon chip used as the detector array is 1MHz. Each sample which isskipped thus produces a minimum of 1 microsecond of delay. The A to D converter implementedfor Jasmine provides a bit every clock time. Currently, Jasmine runs on a 250 nsec clock;including overhead for other control functions, Jasmine will deliver a digitized value every 15 clocks(3.75 microseconds). Thus, the time between digitized samples is (3.75+skipCount+delayCount)microseconds. The minimum time per scan line for the various values of skipCount anddelayCount are given in Table 1.
Jasmine Scanner Manual 6
delayCount 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15skipCount(nSamples)
0 (1024) 3.84 4.86 5.89 6.91 7.94 8.96 9.98 11.01 12.03 13.06 14.08 15.10 16.13 17.15 18.18 19.201 ( 512) 2.43 2.94 3.46 3.97 4.48 4.99 5.50 6.02 6.53 7.04 7.55 8.06 8.58 9.09 9.60 10.112 ( 340) 1.96 2.30 2.64 2.98 3.33 3.67 4.01 4.35 4.69 5.03 5.37 5.71 6.05 6.39 6.74 7.083 ( 256) 1.73 1.98 2.24 2.50 2.75 3.01 3.26 3.52 3.78 4.03 4.29 4.54 4.80 5.06 5.31 5.574 ( 204) 1.58 1.79 1.99 2.19 2.40 2.60 2.81 3.01 3.21 3.42 3.62 3.83 4.03 4.23 4.44 4.645 ( 170) 1.49 1.66 1.83 2.00 2.17 2.34 2.51 2.68 2.85 3.02 3.19 3.36 3.53 3.70 3.87 4.046 ( 146) 1.42 1.57 1.72 1.86 2.01 2.15 2.30 2.45 2.59 2.74 2.88 3.03 3.18 3.32 3.47 3.617 ( 128) 1.38 1.50 1.63 1.76 1.89 2.02 2.14 2.27 2.40 2.53 2.66 2.78 2.91 3.04 3.17 3.308 ( 113) 1.33 1.44 1.55 1.67 1.78 1.89 2.01 2.12 2.23 2.35 2.46 2.57 2.68 2.80 2.91 3.029 ( 102) 1.30 1.40 1.51 1.61 1.71 1.81 1.91 2.02 2.12 2.22 2.32 2.42 2.53 2.63 2.73 2.8310 ( 93) 1.28 1.37 1.47 1.56 1.65 1.74 1.84 1.93 2.02 2.12 2.21 2.30 2.40 2.49 2.58 2.6711 ( 85) 1.25 1.34 1.42 1.51 1.59 1.68 1.76 1.85 1.93 2.02 2.10 2.19 2.27 2.36 2.44 2.5312 ( 78) 1.23 1.31 1.39 1.46 1.54 1.62 1.70 1.78 1.85 1.93 2.01 2.09 2.17 2.24 2.32 2.4013 ( 73) 1.22 1.30 1.37 1.44 1.52 1.59 1.66 1.73 1.81 1.88 1.95 2.03 2.10 2.17 2.25 2.3214 ( 68) 1.21 1.28 1.34 1.41 1.48 1.55 1.62 1.68 1.75 1.82 1.89 1.96 2.02 2.09 2.16 2.2315 ( 64) 1.20 1.26 1.33 1.39 1.46 1.52 1.58 1.65 1.71 1.78 1.84 1.90 1.97 2.03 2.10 2.16
Table 1. Scan line time in milliseconds for various sample resolutions and rates
Jasmine Scanner Manual 7
3. Analog Electronics
The 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.1 Detector Array
The 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.2 Video Signal
The 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 1 msec toallow charge sharing between the .01 mf 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 .01 mf capacitor equal to the difference between V black and ground.When the next sample is presented, the LM733 output voltage will increase to V sample ; themultiplexor input voltage must increase by the same amount, and since it was originally at ground,it is now at V sample -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.3 A-D Conversion
The 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 SAR
Jasmine Scanner Manual 8
then provides a new 8-bit input value, using the known high order bits, and a 1 in the mostsignificant unknown position. After 8 clocks (2 msecs), 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.4 Noise Filtering
The 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.
Jasmine Scanner Manual 9
4. Digital Electronics
The 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.1 Finite State Machine
Digital 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.2 Sequencing Logic
The 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.3 Stepper Motor Control
The 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.
Jasmine Scanner Manual 10
5. Mechano-Optical Design
5.1 Paper Transport
The Jasmine scanner uses a modified Xerox TC-200 telecopier paper transport. TC-200 partsremoved include: DC motor assembly, illuminator bar, LED and light sensor, automatic paper feedwheel, and plastic cover. The base casting is somewhat modified (see Appendix 2.8). A new coverand a release bar extender are added. After the paper moves through the transport, it exits the
scanner housing through a rectangular rear aperture, and is turned up to an angle of about 60 o by acurved metal platform. The final paper turner allows the Jasmine unit to be placed close to a wall,and will generally handle documents as stiff as photographic paper. For installations whereexcessively heavy input material commonly causes jamming problems at the paper turner, amodified platform with smaller curvature should be used.
One turn of the paper drive gear results in 2" of paper movement. A 48 step/revolution steppermotor turns a 12 tooth pulley, connected by a drive belt to the transport’s 48 tooth gear, resulting in96 steps/inch. The stepper motor typically generates 6 oz-inches of torque, and so the 4:1 gearingprovides 24 oz-inches at the paper. The torque decreases as paper speed increases above .4"/sec.Jamming problems may be caused by attempting to move thick documents at high speed. (Thestandard software positions the document by moving the paper at 2"/sec; there should be a "thickdocument" setting which slows down the positioning rate).
5.2 Document Illumination
Illumination is provided by a strip of 48V incandescent bulbs. This causes non-uniformillumination, which is brightest in the center, and falls off at either side. In order to partiallycompensate for this non-uniformity, the center two bulbs are removed. The remaining variation iscorrected by the Gain RAMs, in the same way that non-uniform detector element response ishandled.
5.3 Optical Path
A scan line from the document is reflected off a 45 o mirror and imaged through a SchneiderComponon f4.0 28mm lens onto the detector array. The optical path measurements for figure 5.1are derived as follows:
array length = 1.008"; (8.5" x 96pixels/inch)x1.008" = .803"magnification m = 8.5"/.803" = 10.585F = effective focal length = 29.4 mmO = F(1+m) = 339.44mm = 13.363"P = F(1+1/m) = 32.17mm = 1.267"D = object to image = O+P+(N1-N2) = 368.41mm = 14.504"Allowing for + or - 1% focal length variations,
364.75mm = 14.36" < D typical < 14.65" = 372.16mm
and image plane variation is +/-0.32mm
Image PlaneFront Conjugate = O
Rear Conj = P
N1
N2
O = F(1+m)
P=F(1+1/m)
s
h
Object ( Document Plane) Flange
3.2 mmsh
Figure 5.1 Optical Path Distances
Jasmine Scanner Manual 11
5.4 Lens Alignment/Focus/Magnification
The 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.
Jasmine Scanner Manual 12
6. User Software
6.1 User level interface: Scan.BCD, Scan.RUN
[IVY]<Jasmine>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.
Jasmine Scanner Manual 13
Delay: 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.
Jasmine Scanner Manual 14
YLen: 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, no
rectangle 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.2 Procedural interface
The 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 of
Jasmine Scanner Manual 15
the 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.3 Microcode Interface and Implementation
The 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 = 3
ScanStatus: TYPE = CARDINAL;StatusINUSE: ScanStatus = 1 //in general, all positive numbers are "in use" flagsStatusFREE: ScanStatus = 0StatusDONE: ScanStatus = -1StatusDATALATE: ScanStatus = -2
ScanCB: 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 read
Jasmine Scanner Manual 16
commands 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.
These images are printed using gray level fonts. If you have access to a full PRESS printer, the real images are contained in[IVY]<Jasmine>Docs>CheckOut.PRESS.
��������������������������"� ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,/798ADEEJGSUZZXW‘aeficmqsvz~|{vxqqzy��w��‹ƒ£�����~m�}vu{j/&�«����������������q{����x����~���|�qv����z��££���vsmj^hc_^‘[)#��uxx�rrqlpqirpqpc[cdifkcljokhcnnfk^‘oejnfq|���xogc^‘ZVQRSQP"��qgjhjag‘d\][efii_X]b_ae_ecfmfcki‘dU\cb‘h\kx��zhf^ZRSMNNEJHG#��jWb‘cddlaa_fjjzigdagexdlonsl}vtplodpvptuqs����|yjwhe]\]Z^X_*&������������������v����������������y�������¥fi“'������w��{|}v00�°§'ƒfl‹·fl‹–‹¢†fl¶«ƒ««‹†‡‡fi»¾¾¾¾‡˜˜„¿'¿´À˙ˆ„É¸Ìˇ˝˘¸˜…˜À¶¿`¾…À‰WM*ÛÑˇ—×ÌÑˇÌ¸˝ˆ˝˚¸¸¿´´˜¸˘Ì˘É˚˝˝˝˝Ñ˛ÉÉÀˆ˝˚—ˇ¸Ñ×ÕÙݡˇ—ÛÓ—˛ÑÔÑÒÖÙ·�RŁßßÞªÝåäÞÝß×ÚÖÚÓ˚˛ÉÉÒˇÑˇÑ—ÓÓÕØÕØÑÓ˚˝ÔÒÖÖÓÓÕÕÜàÚÕÔÓÓ—¨—ÓÒ˝˛Ì�g@Ó˙˜¨˚…À„•–†¥°''¤����������¡¡������{�������£fl§¥�����ygmklb]‘#*�ZTXXVNXPRKJNPMRUCEFDMKGGMIRMKJJICIBFKGKPJQZeb\RNNPMNKKE@==G�%�s|���VRIKLMIMKQTEFCBGCGCFHHGEBCA?E<>D?FHEGMVQMKFC?@>4310*N�=>�‰fl��§}.,.(*,.&..$$’#(&’)&’(*’-)+&(# (((-)(2741-*+)+’’ (?6B���������a#�&"#$"!)’�’ � !!!"��#!$!!�!��" $"" &0*(&� �����c{wQ����������Q���������������������� ���������!���+#"#�������!������������¥�P#���������������������������������’��!������06�������������’_��}yhNJ7:168;9=D?5RO_oke[gedOTQ>BHTYWMReow�}r2))),��t�¡ƒ¥�¥¢����‚¿¸É˜‰¨ˆ˛—ˇ‰˘˘Ô…‡¢⁄¤£'��¢fl–‡°ˆÌÛÔˇ•fi��zskmjjd‘\<+�7�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!%�������������������������������������������
�����������������������"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������"���������������������������������������������!��$ "% & !""$*&$&%*%’’*’,,),’$$$’# $!������������������� ��1!#’’).*2,’*,*3.+1-10.124273933126.,/(#�"88?:?@CAB@@EABA@BACOECHJTZWVRIKJGGDAD@ADCDBEAIGDE@:@>757/#!•×Ó˛—˛Ì—̸¨˙˜`˜¾À¨É¨¨¯É¨˘˛—˝˛¨´ÉÌÌ—ÔˇÕÖÕÖÕÔ˛ÑÒÓˇ—É—ÌÕˇˇÌˇ¾�QŁääàÚÚÝÛÖ×Ô—˝˚ÉÌÌˇ˛¸ˇ˝ˇ˛˝˛ÒÌ—ÌÉ˝—ˇØÛÓÜÕßßÜÜÔ×ÖØÕÕ×Ô—Ô××ÕÙ×Ñ�pqposxuxryukqz~��~�������'•fl ¢�������£�¢¤ƒ¤¥ƒ�«‹¥§¥�¥¤§'¥�P*(479;:9?:@B;?AEGDEECMLVOThupfbZ[[ZYUTXVWWVWXXSZSWVPKPNLHL:&�|��£ƒ^(%%,(,’)*)(..-2487<GLNKB=C>@A<9;@><@B=?=C>A8986755pk<+36/03q"% $$""!’&%’&’0/065;BB<;5744552304445224420-*+&<EA_L-������ 1���������� ��$" &(,511.’--’/+(-+*)’**(,)&*%#" ���D���������n?��������������� $+’(’�"!�%"������!!� �������8�����������/w�jE(�������������$’(($�$��%#��� �����������$K�������������Qw��s\G=:*7-25854AXIqXkLU‘Y/3,’"#�!�&"’7Kv�������������������-?[my�������¥–”„“r�o�yg{⁄«¤��w]mqx�¤⁄�[$������������������������������0.������������);Z{jgG9��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������’22206195751767589<;<>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� ¢·‹¾–fi¤‰É‰°⁄�����z�°fi¾”¯·››»¶”��s?��� �" #!����!�!%’&�+*,.(-+-,--..35*9964573+/&()(#9?:(���"�������������������� �’%&&"*,*./+.*52,5624/1,-,+$%)&%%$!&# "�������������������&# *$$%"-*&.-+,,23*5225,--,,(&’$,$�%!%$� ���������!�����������������#�!"&%)&*("++$(&’$$#$"�"!��"��������������#���������������������� ##)&�%&!%�)! ������������������������������������������������#��!&"�����������������������������������������* &&�+($--)/)/.*36-0/,’&+$%#�"!�!� �����������������������������������������!#� � ������������������������������������������������������#"� �������������������������������������������������������� !���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$����������������������������
Jasmine Scanner Manual 17
7. Check-out Procedures
7.1 Adjusting the Output Level
The 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 pot
With 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.2 Optical Assembly
Fasten 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 Alignment
The 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 are
Jasmine Scanner Manual 18
controlled 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.2 Focus
The 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.3 Magnification
The 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.
Jasmine Scanner Manual Appendix 19
Appendix 1. Schematics
A1.1 Analog Board
21
21
21
14
14131211654315
XEROX FileProject Designer Rev Date Page
Parc CSL McCreight 01
GHRR T+
-
TRTRTR
GND1VCC1
ANALOG
T
TREFoREFi
CTRSELCLK’RESET’
RRR
ADC-MC8BC
lsb
RR
R
R
RRRRD0
D1D2D3D4D5D6D7
RRR
msb
Scale.0Scale.1Scale.2Scale.3Scale.4Scale.5
GHRR T+
-
TR hd
hd
hd
hd
LM360CA3140
GND
GND
TRhd
n
CA3140
jasmana.silJasmine Analog section
GHRRiT+-
TDD’
D0D1D2D3D4D5D6D7
RRRRRRRRV+V-
REF+REF-
COMP
II’
RRRRR
TT
TGND*
msb
lsb TRGND
SAR.0SAR.1SAR.2SAR.3SAR.4SAR.5SAR.6SAR.7
TR
EOC’
Q0Q1Q2Q3Q4Q5Q6Q7
lsb
msb
CLK
Q7’
RES’
E’
D TTTTTTTTTT
RRRR
NextBit
GND
.DM2503
GND
TR
ScaleCorr15pf
1k
1k
1k .
hd
hd
hd
TR.GHRRiT+-
TDD’
LM733
n
C YX
TS
SY TR
TTRRRRRRRRR TR
EOS
RecGate
DRecVRec
VBufDBufBufSup
GND*
STARTCLK
V-V2+V1+
n
GND
ScanStart
CD4053
GND*
RV+V-RR
E’
RG2BG2A
G1BG1A
RRRRRRV-
V+
CD4053
LM733
hd
GND*
RRRV-
V+
Clock
-Pwr+Pwr
RR
GND
-10v
-10v+5v
+5v
+5v
GND+5v-10v
-5v
+5v
+5v
CA3140
LM360
NE5008
RL1024G
DCRestore
AnalogOn’
.01uf
8.2k
-10v
220pf
TRTR TRn
hd
hd
Pi filter
Pi filter
hd
hd
n TRTRTR
VCC +5v
-10vNegSupply GND*
RRRV-
V+
n
TR-5v
nPower Supply
GHRR T+
-
TR TRTR nVCC
hd hd
hd
1.5k3.9k
LM339
Scale DAC
Scanner
Video AmplifierSample/Hold/Restore Switch
Hold Amplifier
Successive approx.DAC
Comparator
+5v
+5v-10v
CA3140-Pwr+Pwr
RR
Recharge
TRhd1.1k
Ref
D3
D2
RRRRRRRR TTTTS
D1
D0E0
E1
E2
E3
H0
H1
H2
H3
CO
T
CI
D3
D2
RRRRRRRR TTTTS
D1
D0E0
E1
E2
E3
H0
H1
H2
H3
CO
T
CI
Offset.5
Offset.4
Offset.3
Offset.2
Offset.1
Successiveapprox.register
nOffset adder
LS283
LS283
.SAR.0
SAR.1
SAR.2
SAR.3
SAR.4
SAR.5
SAR.6
SAR.7
* adjust for proper gain
Data.0
Data.1
Data.2
Data.3
Data.4
Data.5
Data.6
Data.7
-10v
#aa61
-Pwr+Pwr
RR
VCC
LM339
#bb34
hdr
uA7905
312
6523
15141112 10
13
1
4
7
9
6523
15141112 10
13
1
4
7
9
21
74
21 21
21
4
52
12
31221
21
21
21
74
854
105
11
12
4
3
6
716
8
6
16
171
18
212
7
913
12
1011
87
121
21
1091
7
2
21
21
16
24
1514
13
13
121110
98765
76
23
21
21
2
36
14
16
243
1
15
13
8
5679
121110 21
2121
2
36
hd
hd
1 2
21
ScanClk’
ResetAD’
22uf+
10k
6.8uf 6.8uf
6.8uf6.8uf
+ +
+ +
3.9uH
3.9uH
6.8uf
iGHR TLS04 SampleDone
TR TRn TR-5v
22uf
zener
300 ohms
hd
hd
hd
True
5.1k*
n
1 2
nhd1k TR
..
**adjust for proper offset
80k**
7/19/79
n.01uf TR
TRTRn
.1uf
.1uf
B
Offset.0
True
n
n#C3
#C2
#1A
#1B
#IC4
#IC6
#IC3
#IC1#IC2
#IC2
#IC1
#IC8
#IC8
#IC5
#IC9
#IC7
#IC7#IC6#IC3
#2B
21
#C5
#R10#R11
#R12#R13
#C6
ADD
#C12
#R15
#R16
#R14
#C9
#R22
#D6
#C11
#R17#R19
#R18
#C10#C7
#H1
#H2
#C8
#C13
#C15
121314
11
note: C2,C3 polarityis mismarked on PC board
+5v
+5v(#R21b)
k#R20a
#R21aSee modification list
nrevGb
revGb
Jasmine Scanner Manual Appendix 20
A1.2 Finite State Machine
21
21
1
1
19
4
13
5
12
5
46
9
14
10
124567
153
13
11
2
9
14
10
124567
153
13
11
2 151
6
1
2
3
5 4
79101112131415
14
12
9
7
19181716
54
23
1 6
8
11
13
1519
6
14
7
15
12345
9
10
12
14
15
11
13
XEROX FileProject Designer Rev Date Page
MalesonCSL JASMINE FINITE STATE MACHINE
State.1State.2State.3State.4
Q7Q6Q5Q4Q3Q2Q1Q0
TTTTTTTT
RRRS
RR
A0A1A2A3A4
CS’
State.0
State.0
State.4State.3State.2State.1
CL’CK
SS
RRRRRR
D0D1D2D3D4D5
TTTTTT
Q0Q1Q2Q3Q4Q5
State.0State.1State.2State.3State.4
Clock
Seq.SampleSeq.ScanDone
S
Q7Q6Q5Q4
TTTT
RA8A7A6A5A4A3A2A1A0
CS’
RR Q3Q2Q1Q0
RRRRRR
TTTT
n
n82S147
LS174
HM7603
.
...
fsm.sil
E
SRRR
SSTTTTTTTT
E’E’
S1
S2
S4
Q0’Q1’Q2’Q3’Q4’Q5’Q6’Q7’
LS138
Alto.9’
Alto.10’
Alto.11’
Decode.Start’Decode.Load’
Decode.WE1’
Decode.WE3’Decode.WE2’
Decode.Start’Decode.Load’
Alto.8’
Alto.8’ SE’SB
S
B3D3B2D2B1D1B0
RRRRRRRR
D0
TTTT
Q0
Q1
Q2
Q3
XBus.8XBus.9XBus.10XBus.11
XBus.12
XBus.13
XBus.14
XBus.15
Output 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 cycle
Recharge
DCRestoreAnalogOn’
SampleDone
LS257
SB=0 selects DSB=1 selects BTrue
VGG
RMR’
SO IRORSI
S
Q3Q2Q1Q0
TTT
D0
RRRRRR
D1D2D3 TT
T
VGG
RMR’
SO IRORSI
S
Q3Q2Q1Q0
TTT
D0
RRRRRR
D1D2D3 TT
T
Data.0Data.1Data.2Data.3
Data.4Data.5Data.6Data.7
SampleDone FIFOReady
iRR TBAFIFOReady n
Decode.Load’
02
.
.
XBus.Read’
pppppppp
XBus.Read’XBus.A0’XBus.0XBus.8XBus.9XBus.10XBus.11XBus.12XBus.13XBus.14XBus.15
ppppppppppp
Alto.9’Alto.10’Alto.11’Alto.12’Alto.13’Alto.14’Alto.15’
pn
Cable connections
Clock
ResetCtrs’
ResetCtrs’LS00
iCDRR Ti
LS00 XBus.0
pNegSupply
p
CL’CK
SS
RRRRRR
D0D1D2D3D4D5
TTTTTT
Q0Q1Q2Q3Q4Q5
True
ClockTrue
F3341
F3341
NegSupply
NegSupply
LS174VirScanClk’
Decode.SetDelay’
ResetAD’
S’
R’R TTR
S
QQQ’
D
C
XBus.A0’
iGHR TFIFOReady
True
.TRTR
n
200 ohms
pVCC
hd
hd
.Decode.MotorCtl’
4 Mhz Xtal
K1100A
TRFout 8
TRVCC True
1k
True
CL’CK
SS
RRRRRR
D0D1D2D3D4D5
TTTTTT
Q0Q1Q2Q3Q4Q5
LS174
1210
1311
9 1
Stepper Motor Control
..Decode.MotorCtl’
Alto.13’Alto.14’Alto.15’
. ...
RunMotorStepControlAStepControlB
7/19/79
GND
GND
GND
True
Serial No. 1returned onLoad cmd
B
470 pf
n
#7A#7A
#4A
#6A
#3A
#2C
#6B
#1B
#2B
#4B
#3B
#5B
#5A
#3C
11
3 4
13 1210
52
ScanStart
ResetCtrs’
6
314
11
7
215
10
46
14
3
5715
2
89
10
14131110 2 3 5 6
12
9
4
7
1012
11
13
8
9
89
114
215
316
417
518
6
197
208
219
2210
13,2511,23
12 24
#R1
#C1
76
S74
LS74’s won’t work
LS14Note: the inverter must be
S’
R’R TTR
S
QQQ’
D
C
S74#1BClock(#3B9) 3
2
True(#1B14)
Alto.8’(#6B5)5
4
1
4
True(#1B4)
Synchronizer modification(blue wires)
.
Alto.8’RAW
Alto.8’RAW(C19)
an LS14 for noise immunity
The flop must be an S74:
Jasmine Scanner Manual Appendix 21
A1.3 Sequencing Logic
21
21
65
8
74321
171615
10
14
13
12
11
65
8
74321
171615
10
14
13
12
11
65
8
74321
171615
10
14
13
12
11
1
1
19
19
346
13
257
12
1
1312116
5
3
710
9
4
15
14
2
1
1312116
5
3
710
9
4
15
14
2
1
1312116
5
3
710
9
4
15
14
2
1
1312116
5
3
710
9
4
15
14
2
FileProject Designer Rev Date Page
MalesonJASMINEXEROX FileProject Designer Rev Date Page
MalesonJASMINE
B1
S
TTTH3H2H1H0
B3B2
B0
RRRRRS
RT
LD’
TCL’
EPET
CO
SCK
B1
S
TTTH3H2H1H0
B3B2
B0
RRRRRS
RT
LD’
TCL’
EPET
CO
SCK
B1
S
TTTH3H2H1H0
B3B2
B0
RRRRRS
RT
LD’
TCL’
EPET
CO
SCK
Carry0
Carry1
Offset.0
Offset.1
Offset.2
Offset.3
Offset.4
Offset.5
Scale.0
Scale.1
Scale.2
Scale.3
Scale.4
Scale.5
Addr.2Addr.3Addr.4Addr.5Addr.6Addr.7Addr.8Addr.9Addr.10Addr.11
Addr.11Addr.10Addr.9Addr.8Addr.7Addr.6Addr.5Addr.4Addr.3Addr.2
Addr.2
Addr.4Addr.5Addr.6Addr.7Addr.8Addr.9Addr.10Addr.11
B1
S
TTTH3H2H1H0
B3B2
B0
RRRRRS
RT
LD’
TCL’
EPET
CO
SCK
CL’CK
SS
RRRRRR
D0D1D2D3D4D5
TTTTTT
Q0Q1Q2Q3Q4Q5
LS174
LS163
LS163
LS163
LS163
Scan Counters Cycle Address Lines to Scale/Offset RAMS Signal ScanDone
Latch contains frequency "n"
3-State Drivers forScale/Offset Rams
Scale/Offset RAMS
2 6-bit values arepassed to the analogsection for correction(separate correctionfor each sensor element).
Intel 2114
SEQUENCING LOGIC Sequence.SIL
Addr.2Addr.3
Addr.4Addr.5Addr.6Addr.7
Addr.8Addr.9Addr.10Addr.11
Carry1
Carry0
Seq.ScanDone
Seq.Sample
Seq.Sample
CSL
...... ..
R TiHGiR TiHGiR TiHGi
R TiHGiR TiHGi
R TiHGi
Offset.0
Offset.1
Offset.2
Offset.3
Offset.4
Offset.5
R TiHGiR TiHGiR TiHGi
R TiHGi
R TiHGiR TiHGi
Scale.0
Scale.1
Scale.2
Scale.3
Scale.4
Scale.5
SEN’
SEN’
LS240
LS240
SEN’
Addr.3i2114
i2114
i2114
SamplePreset’
1K x 4CD iRR T
ResetCtrs
Decode.WE1’
Decode.WE2’Decode.WE2’
Decode.WE3’Decode.WE3’
Decode.WE1’
ResetCtrs’
ResetCtrs’
ResetCtrs’
TrueTrue
LS02
True
BAiiRR T
TTTT
SRRRRRRRR
Q0
Q1
Q2
Q3
S
RR
CS’
A0A1A2A3A4A5A6A7
A9A8
WE’
TTTT
SRRRRRRRR
Q0
Q1
Q2
Q3
S
RR
CS’
A0A1A2A3A4A5A6A7
A9A8
WE’
TTTT
SRRRRRRRR
Q0
Q1
Q2
Q3
S
RR
CS’
A0A1A2A3A4A5A6A7
A9A8
WE’
n
n
03
LS240
#y15a
#y15b
#y15c
#y15d
#y4a
#y4b
#y4c
#y4d
#y4e
#y4f
#y4g
#y4h
LS02
Alto.12’Alto.13’Alto.14’Alto.15’
Alto.12’
Alto.13’
Alto.14’
Alto.15’
Alto.15’
Alto.14’
Alto.13’
Alto.12’
Alto.12’
Alto.13’
Alto.14’
Alto.15’
ResetCtrs’ResetCtrs
..Addr.0Addr.1
True
True
True
Alto.15’Alto.14’Alto.13’Alto.12’
TrueResetCtrs .... ...
.
Digitize every nth sample, discard others Latch contains frequency "n"
Sample Counter
LS163
LS174
CL’CK
SS
RRRRRR
D0D1D2D3D4D5
TTTTTT
Q0Q1Q2Q3Q4Q5
B1
S
TTTH3H2H1H0
B3B2
B0
RRRRRS
RT
LD’
TCL’
EPET
CO
SCK2
14
15
4
9
107
3
56 11
1213
1
12
752
13
643
9 1
Delay counter
Delay n clocks after every sample
DelayDone
True
iGHR T
BAiiRR TVirScanClk’
DelayDone
LS04
LS02
Decode.SetDelay’
DelayDone
DelayDone
DelayDone
VirScanClk’
VirScanClk’
VirScanClk’
DelayDone’
DelayDone’
DelayDone’True
VirScanClkVirScanClk
iGHR TVirScanClk’ VirScanClk
CD iRR TResetCtrs
ScanClk’ScanClk
LS02
n
TR TRn
150 ohms hd
hd
TrueGNDTrueTrue
True
True
7/19/79B
220 pf
#5C
#5D
#5E
#6C
#6C
#6D
#4C
#4D
#4E
#1C
#1C
#2B
#3D
#2D
#3E
#2E
#2B
#1C#1C
14
11
15
1014
11
15
10
5 6
46
5
12
3
3 4
9
810 11
12
13
8
6
4
2
11
13
15
17
8
6
4
2
12
14
16
18
12
14
16
18
9
7
5
3
Jasmine Scanner Manual Appendix 22
A1.4 Stepper Motor Drivers
XEROX FileProject Designer Rev Date Page
CSL JASMINE AStepper Motor Drivers MalesonMcCreight 7/2/79Stepper.SIL
GHRR T+
-
GHRR T+
-
GHRR T+
-
GHRR T+
-
-Pwr+Pwr
RR
TTLThresh
TTLThreshStepControlA
TRhd6.8k
n
n6.8k hd
TR
TRhd6.8k
n
n6.8k hd
TR
TRhd1N4002
1N4002 hd
TRhd
TR1N4747
n
C
EB
TR TC
EB
TR T
C
EB
TR TC
EB
TR T
Note: for diodes,
K
K
K
CoilA2
CoilA1
NegSupply
K
K
TRhd1N4002
1N4002 hd
TR
CoilB1
CoilB2
TR
nTR
TapA
TapB
NegSupply
NegSupply
NegSupply
hd
hd
K = cathode = banded end
VCCNegSupply
iRR TBA
iRR TBA
RunMotor
RunMotor
iRR TBAiRR TBA
TTLThresh
TTLThresh
StepControlB
LS00
LS00
LS00
LS00
LM339
LM339
LM339
LM339
LM339
TIP122
TIP122
TIP122
TIP122
Stepper motor sequencing:Forward
A On B OnA On B OffA Off B OffA Off B On
BackA Off B OnA Off B OffA On B OffA On B On
TIP 122 pin order: B,C,E
04
#1D
#1D
#1D
#1D
#1E
#1E
#1E
#1E
8
11
6
3
9
10
12
13
5
4
2
1
8
9
10
11
6
7
4
5
14
13
1
2
#1E
312
5ohm5w
5ohm5w
Jasmine Scanner Manual Appendix 23
A1.5 PC board layout
PageDateRevDesignerProject FiìeXEROX
As viewed from the component side
ParcCSL
JasmineReference
05
LS283 LS283
LS02
LS00
LM339
LS14
Crystal
LS163
LS163
F3341
LS174
LS174
LS174
LS174
LS257
HM7603
LS163
LS163
LS163 i2114
i2114
i2114
82S147
LS174
LS138
F3341
LS240
LS240
LS00A
B
C
D
E
JASMINE DIGITAL BOARD
1 2 3 4 5 6 7
PC Board Layout Merino A 9/21/79PCLayout.SIL
RL1024G
7905
ADCMC8BC
LM339
LM360N
LM2503
NE5008
CD4053
LM733
CA3140
CA3140
C1
R1
C2
C3R2
R3 R4 R5 R6D1 D2 D3 D4 D5
R
R
R
7
8
9
C
R R R R
R R
R
C11
R12 13 14
R15
R16
R17
R18
R19
20 21
22
10
C
4
5
C6
C7
C8
C9
C10
11 D6
H1
H2
IC1
IC2
IC3
IC4
IC5
IC6
IC7
IC8
IC9
IC10
TIP122 TIP122 TIP122 TIP122
C14
C15
C13
C12
S74
note: C2,C3polarity aremismarkedon PC board
Jasmine Scanner Manual Appendix 24
A1.6 Power Wiring
PageDateRevDesignerProject FileXEROX1CSL G AVEST
<IBIS>
tyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUItyuiTYUI
a
3 4
b
SWITCH
PLUG
WHITE
BLACK
BLACK
BLACK WHITE
WHITE
-12 VOLT POWER SUPPLY
+5 VOLT POWER SUPPLY
SCANNER BASIC WIRING SCANNER.SIL
FUSE 3/4 AMP
L NE
LENS
MIRROR
B1
B2
A1
A2 YELLOW
YELLOW
GREY
GREY
GROUND
STEPPERMOTOR
INTERNAL CABLE
ANALOG BOARD
DIGITAL BOARD
J-1
BLACK
+12 VOLTS (YELLOW)
GROUND (BLACK)
GROUND
+12 VOLTS (YELLOW)
GROUND (BLACK)
PIN #25
PIN # 24PIN #23+5 VOLTS (ORANGE)
+5 VOLTS (ORANGE)GROUND
GROUND
COMMON
4/8/80
Jasmine Scanner Manual Appendix 25
A1.7 External Cable
PageDateRevDesignerProject FileXEROX1CSL G AVEST
<IBIS>
4/8/80SCANNER SCANNERCABLE.SILCABLE FOR ALTO 2
1
2
3
4
5
6
14
15
16
17
18
7
8
9
10
19
20
21
22
24
12
ALL GROUNDS TIETO A COMMON POINT
21
20
19
18
14
9
8
7
6
16
15
25
11
9
7
5
1
12
10
8
6
NOTES:1. CABLE IS 10 FT. LONG2. CABLE IS 19 TWISTED PAIRS3. ALL PLUGS ARE AMP. P/N 205208-1
Jasmine Scanner Manual Appendix 26
A1.8 TC200 Paper Transport Modifications
XEROX FileProject Designer Rev Date Page
Parc CSL Jasmine Transport mods Maleson A 1/2/80
leading edge of
cutouts to be
beveled to match
trailing edge bevel
to be removed
rear section
three descending
tabs to be
removed
TransportMods.SIL 08
Red areas indicate sections to be modified on TC200 Transport assembly
Jasmine Scanner Manual Appendix 27
Appendix 2. PROM Microcode
A2.1 PROM Blowing Procedure
Both 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]<Jasmine>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.
Jasmine Scanner Manual Appendix 28
A2.2 Microcode Listing
To produce JasProm.MB from the following source code, you will need:[MAXC]<Alto>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:// <Wait>,<Scan>,<Load>,<Init>//To go from <AnyState> to <Wait>, do:// pulse Load’, then pulse Start’//causing the following state transitions// currentState Load’ 0 Start’ 0 Start’ 1//--------------|---------|---------|---------// <Wait> | <Load> | <Init2> | <Wait>// <Load> | <Load> | <Init2> | <Wait>// <Scan> | <Init1> | <Init2> | <Wait>// <Init1> | <Init1> | <Init2> | <Wait>// <Init2> | <Init2> | <Init2> | <Wait>
//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 [ RomDef
Jasmine Scanner Manual Appendix 29
]
//incoming proceduresexternal [ WriteMem
]
//internal manifest and structure declarationsstructure [ blank bit 7
StartPrime bitLoadPrime bitSample bitScanDone bitState bit 5
]
structure [ blankbyte byte
ScanClkPrime bitRecharge bitAnalogOnPrime bitDCRestore bitResetADPrime bitResetCtrsPrime bitScanStart bitblank bit
]
//manifest names for state numbersmanifest [ WAIT=0
SCAN1=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 PROM
let 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 do
Jasmine Scanner Manual Appendix 30
for Sample=0 to 1 do for ScanDone=0 to 1 do [ //set up Signetics PROM address
let Saddr=StateSaddr<<StartPrime=not StartSaddr<<LoadPrime=not LoadSaddr<<Sample=SampleSaddr<<ScanDone=ScanDone
//set up default values of output parameterslet nextState=State+1let ScanClk=0let Recharge=0let AnalogOn=0 //analog switch enablelet DCRestore=0let ResetAD=0let ResetCtrs=0let ScanStart=0switchon State into
[ case WAIT: // standard wait state: branch on Start or Loadif Start&Load then
[ nextState=WAIT ;endcase] //NEVER HAPPENSif Start then [ nextState=SCAN1 ;endcase]if Load then [ nextState=LOAD1 ;endcase]nextState=WAITendcase
//for reading a sample:// pulse ScanClk// wait 500nsec for detector output// hold AnalogOn for 1 us (to transfer charge to hold register)// StartAD// wait 9 clock times for AD to complete, during which// Recharge+DCRestore// DCRestore+AnalogOn for 1 us (to do DCRestore)// DCRestore (to avoid glitches from analog switch)
case SCAN1: // set up for array startScanStart=1if Load then nextState=INIT1endcase
case SCAN2: // array start, (resetctrs for ScanClk)ResetCtrs=1ScanStart=1 // array starts on falling edge of clockif Load then nextState=INIT1endcase
case SCAN3: // array start goes away while clock lowScanClk=1 // counter reset on rising edge of clockResetCtrs=1if Load then nextState=INIT1endcase
case SCAN4: // delay for first "real" clock pulseif Load then nextState=INIT1endcase
case SCAN5: if Load then nextState=INIT1 ;endcase case SCAN6: if Load then nextState=INIT1 ;endcase case SCANLOOP1: // until ScanDone do . . .
DCRestore=1 //1/24/80 --last cycle of previous A/DScanClk=1if Load then [ nextState=INIT1 ;endcase]if ScanDone then nextState=WAIT //loop exitendcase
case SCANLOOP2: // wait 500 nsec after trailing edge of ScanClkif Load then nextState=INIT1endcase
case SCANLOOP3: // decide whether to use sample, or skipif Load then [ nextState=INIT1 ;endcase]if Sample then nextState=SAMPLE1 // do the sampleendcase
case SCANLOOP4: // rechargeRecharge=1nextState=SCANLOOP1
Jasmine Scanner Manual Appendix 31
if 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=LOAD2
if Start then nextState=INIT2endcase
case LOADLOOP1: // step counter on every Load pulse
Jasmine Scanner Manual Appendix 32
if 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<<ScanClkPrime=not ScanClkScommand<<Recharge=RechargeScommand<<AnalogOnPrime=not AnalogOnScommand<<DCRestore=DCRestoreScommand<<ResetADPrime=not ResetADScommand<<ResetCtrsPrime=not ResetCtrsScommand<<ScanStart=ScanStartS147Mem!Saddr=nextStateHM7603Mem!State=Scommand
] //end of nested for loopsWriteMem(S147Mem,"StateMem",8,511)WriteMem(HM7603Mem,"ControlMem",8,31)
]
Jasmine Scanner Manual Appendix 33
Appendix 3. Revisions
A3.1 REV Gb: modifications to original PC boards
Analog Board
Connect 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 5K
Substitute 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 Board
reverse 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 19
D0 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 Bar
Remove center two bulbsAdd foam tape to front of light bar base, to elevate lights