¥'É ÐŠJJJJ À…?©\…>©…æ'æ¤ÀÐL¹-…=l>
ÃÏÐÙÒÉÇÈÔ ¨Ã© ±¹¸° ÍÉÃÒÏÓÏÆÔ ÎË ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#~þ? Ç
ÂÇx·ÉDIR ERA TYPESAVEREN USER½v^!ÇyþÐÎ˾ÂOÇ#Â<Çþ ÂTÇyÉ#ÂOÇÃ3ǯ2Ä1«ËÅyæ_ÍÅ͸Ä2«ËÁyæ2ïËͽÄ:ķ˜Ç1«Ë͘ÄÍÐÅÆAÍŒÄ>>ÍŒÄÍ9Å€ÍØÅÍÐÅ2ïËÍ^ÆÄ Æ:ðË·Â¥ÊÍ.Ç!ÁÇ_~#foéwÈÉ]ÉÉÊŽÊ¥Ê!óv"Ä!ÄéßÇçÄREAD ERRORðÇçÄNO FILEÍ^Æ:ðË·ÂÏÇ#ÂýÅÉ͘Ä*ŠÄ~þ Ê"Æ·Ê"ÆåÍŒÄá#ÃÆ>?ÍŒÄ͘ÄÍÝÅÂǷÈþ Ú ÆÈþ=Èþ_Èþ.Èþ:Èþ;Èþ<Èþ>ÈÉ·Èþ ÀÃOÆ…oÐ$É>!ÍËÍYÆåå¯2ðË*ˆÄëÍOÆë"ŠÄëá·Ê‰ÆÞ@Gþ:ÊÆ:ïËwÖÆx2ðËpÍ0ÆʹÆ#þ*©Æ6?ëÆw˜ÆÍ0ÆÊÀÆïÆ#6 ¹Æþ.ÂéÆÍ0ÆÊéÆ#þ*ÂÙÆ6?ÃÛÆwÂÈÆÍ0ÆÊðÆÃßÆ#6 ÂéÆ#6ÂòÆë"ˆÄáËÃùÄÃôÄÃÃÄÃÿ ÃÍ҇‡‡!ï˶2É:ïË2ÉþaØþ{Ðæ_É:«Ë·Ê–Å:ïË·>ĽĬËÍËÄÊ–Å:»Ë=2ÌˬËÍùÄ–ÅÄ!€€ÍBÈ!ºË6#5¬ËÍÚÄÊ–Å:ï˷ĽÄ!ÄͬÄÍÂÅʧÅÍÝÅÂÇÍÝÅÍÅ
ÄÍÍ)Å!ÄF#x·ÊºÅ~Í0ÅwëÅw!Ä"ˆÄÉÍ·ÈÍ·ÉÀÃ!«Ë~·È6¯Í½Ä¬ËÍïÄ:ïËýÄ(Ç!̾ÂÃ\ÇÃXÇDIRRDK;/ COPY E:=A:***;E:;/ RUN;RUNGITAL RESEARCH Ä_ÃÅÍŒÄÁÉ>
Í’Ä>
Ã’Ä> Ã’ÄÅ͘Äá~·È#åÍŒÄáìÄ
Ã_ÃÍ2îË<ÉÃÃį2íËÍËÃËÄÃÃÄÃÃÄÃÃÄÍËÃßÄÃÍ·ÉÃôÄÍ”ŒTPÈÔÐ4Ä@,(ˆLÌ€H´0¬¤ °E…•‘UQÉÕÑ5ÅA-)
‰MÍ Iµ1½yÐà½yÐ:»óþÂÛ:¾àŸÉÍ)ÛæÉ:»óþÂ>Ü:¾àæ(ùy2Eð!|"Ðó*ÞówÉ¿À`JóXó)Û^ó>ÜEÝEÝPò?Ýò+Ý ªÙÔ©¨½ ÿ~ÿ~ÿ~ÿ~ÿ~ÿ~ƒÀƒÀÄÀ ?ÿ À JÿLÀ ä
``ÀÀ¦LÆLÀLÀÀ>2¹óÉ:àæðþPÂòy2ÿï2á2è2è2èÉPKASO-DRIVER˹>¿2Òàyþ
>/Í»òˆ!ÍÕò:ÐàËw ñ ðÉþ >7ûòþ >'ûòþ' ͦò æòþ^ ͦò'ͦòÃòþ 0É!¼ò ~GË/Ë/Ë/Ë/Ë/æ°2Ðà>À2Üà! ÍÕò>à2Üà! ÍÕòÉ- ý% úÉ}±¹\X¥Ø<˜Á!%Ü9™]YÝÙ=$ÀØ8<¼}D„ ©Ì ¹$™ùÿˆÐ÷LÒ©ª¨q<èÈÐ÷`ÆÀÀÃÁÎ§Ô ÆÉÎÄ Ú¸° ÓÏÆÔÃÁÒÄÍÕÓÔ ÂÏÏÔ ÆÒÏÍ ÓÌÏÔ ÓÉد2>ðo:=ðÆ gwò8H<8Hÿ„=Œ‡`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀ }HˆÀ©™x™ø /û “þ ‰þh¢ÿšÉð ¹Jð íýÈÐõLeÿ ¹h™ÿˆÐ÷¹™ˆÐ÷ ñ¹ÿ™ÿˆÐ÷Œ¸„<ˆ„> Ç €ê¥>ð …@†A àðÅ@ÐäAðÐæ>ŒÈ©ÇÞ˜i ߢ𢠱<ÝvÐ ±<ÝzðÊÐëèàÐ=Š™øˆÀÀО¸¥>Éð„=©……<…À¥>ð ¹+ð íýÈÐõLeÿ ¹ï™ïˆÐ÷©Ã©©ÚÎøÐåðÊh©@(L>ð*¥/ãâðÅ/ð© ÐèᨹÅ-П( °–( Æ©$8ê®ø½ˆÀ` %
ì©Ðì
ZNx`…. }¹x$50¹øx¥.$50™ø™xLÞŠJJJJ¨`Häjf5 }h
$50™ø™x`
©äé ŒèŒàÈŒäŒë©`æ©á©Hx -ÿ(hL(îé®áèàТîàŽáh8éÐÖ©é`ÿÿÿLƒÀx À(` Œø ŒøæªÍçðŠ¨çª˜H罎À ½ŒÀÝŒÀÐöˆÐøhª½ŽÀ½ŒÀ ½ŒÀHhHhŽøÝŒÀЈÐÀè…>é…?©ï…F©Ø…GäÍåðå( j½ŠÀ°½‹Àf5(Ð ;ˆÐú®øà Rë(ÐÉð
ˆÐýæFÐ÷æGÐój°
0Œx®ø j$ÎxóxH©` „Îøð(©ø© Rh RL¿¤.ÌxðxH˜ „hÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–—š›žŸ¦§«¬®¯²³´µ¶·¹º»¼½¾¿ËÍÎÏÓÖ×ÙÚÛÜÝÞßåæçéêëìíîïòóôõö÷ùúûüýþÿ˜™œ ¡¢£¤¥¨©ª
°±¸ÀÁÂÃÄÅÆÇÈÉÊÌÐÑÒÔÕ !Ø"#$%&'(àáâãä)*+è,-./012ðñ345678ø9:;<=>?ÎxÅ&¥&É°¨8 ,¹P ;¥' /¹\ ;æ&Ðà ;x)*+ª½€À¦+`¢ÊÐýæFÐæGÐÆG8éÐì`0($ p,&"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ˆðc½ŒÀûIÕÐô꽌ÀûɪÐò V½ŒÀûÉÐçêꩈ„&¼ŒÀûY
¤&™
Ðî„&¼ŒÀûY
¤&™ ÈÐÀûÙ
нŒÀûÉÞÐ
꽌Àûɪð\8` ü„&ÈÐæ&ðó½ŒÀûÉÕÐð꽌ÀûɪÐò ½ŒÀûÉ–Ðç©…'½ŒÀû*…&½ŒÀû%&™,E'ˆç¨Ð·½ŒÀûÉÞЮ꽌ÀûɪФ` ¢VÊ0û¹ ^
*^
*‘>ÈÐí`†+…*ÍxðS©…&x…'8å*ð3°Iÿîxiþ¢U©
Êú¨¢¬,¢ªˆ±>J>VJ>V™ èÐï˜Ðê`8†'Žx½À½ŽÀ0|
…&©ÿÀŒÀHhê Hh µ
ˆÐø©Õ ´
©ª ´
© ´
˜ Vй
Yÿª½V
¦'À½ŒÀˆÐë¥&êY ª½V
®xÀ½ŒÀ¹ ÈÐꪽV
¦' ·
©Þ ´
©ª ´
©ë ´
©ÿ ´
½ŽÀ½ŒÀ`êHhÀŒÀ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Æ!ÎË~þ Ê3È#Ö0þ
Ò ÆWxæà Æx€Ú Æ€Ú Æ‚Ú ÆG
ÂÈÉ~þ Â Æ#
Â3ÈxÉ~#ÂBÈÉ!€ÍYÆ~ɯ2ÍË:ðË·È=!ï˾ÈýÄ:ðË·È=!ï˾È:ïËýÄÍ^ÆÍTÈ!ÎË~þ ÂÈ6?#ˆÈÕÍéÄÌêÇÊÉ:îËæ`O>
ÍKÈÚÉÑ{ÕæõÂÌÈ͘ÄÅÍÐÅÁÆAÍ’Ä>:Í’ÄÃÔÈÍ¢Ä>:Í’ÄÍ¢ÄxÍKÈæþ ÂùÈñõþÂ÷È> ÍKÈæþ ÊÉ> Í’ÄxþÒÉþ ÂÙÈÍ¢ÄÃÙÈñÍÂÅÂÉÍäÄØÈÑÆËÍ^ÆþÂBÉRÉͧÄÍ9Å!Ä5‚Ç#~þY‚Ç#"ˆÄÍTÈÍËÍïÄ<ÌêÇÆËALL (Y/N)?Í^Æ ÆÍTÈÍÐÄʧÉ͘Ä!ñË6ÿ!ñË~þ€Ú‡ÉåÍþÄá ɯw4!€ÍYÆ~þʆËÍŒÄÍÂņËÃtÉ=ʆËÍÙÇÍfÈà ÆÍøÇõÍ^Æ ÆÍTÈÍËÕÍïÄÑÍ ÅÊûɯ2íËño&)|µÊñÉ+å!€åÍØÅÍËÍÅÑáÂûÉÃÔÉÍËÍÚÄ<ÂÊÊͧÃÒЯ2ÕÙÅ*CÏë!!~æõ~#~æO~æGñ#n,-.‹×! w!y–ÂG×!x–æÊ×ÅÕÍ¢ÔÑÁ.:EÏ<Ê„×!q!pÍQÔ:EÏ<Â×ÁÅ.Ê„×Í$Õ.:EÏ<Ê„×Á¯ÃÏåÍiÑ6ÀáÁ}2EÏÃxÑÿÍ×ÌÁÕÉÍ×ÌÖÉëN!~æ€O>ˆG~æ€G!~‡‡‡‡õ€Gõá}áµæÉÍÓ*CÏ!år#r#rÍõÑÊØÍ^ÑÍ¥×áå_y–#xž#{žÚ2ÕÙ>2ÓÙÍTÑ*CÏÍGÑÍ»Ð:ãÙþ€ÒÏÍwÐÍ„ÐÂnÖÍ>Ð2×Ù·Ê;ÖOÍ^ÐDM;Ó}´ÂHÖ>ÃÏ"åÙë*CÏ :ÝÙ·:×ÙÊdÖÍdÑsÃlÖO s#r:EÏ·ÀÅÍŠÐ:ÕÙ==»ÖÁÅy==»Öå*¹ÙWw#òŒÖÍàÑ*çÙ"åÙÅÍÑÏÁ͸Ï*åÙ:ÄÙG¥¸#šÖá"åÙÍÚÑÍÑÏÁÅ͸ÏÁ:ãÙ!áÙ¾ÚÒÖw4!ßÖõÍiÑæwñþÂ×:ÕÙþÂ×ÍÒÐÍZÕ!EÏ~·ÂþÖ=2ãÙ6ÂÍÔìÿ ë ¾ÚÕw ë ~>ÿ2ÒÙÃÔ!EÏ5ÉÍTÑ*CÏå!¬Ù"CÏÍÓÍõÑá"CÏÈë!¯w#
ÂFÕ!
wÍŒÑÍýÓÃxѯ2ÒÙÍ¢ÔÍõÑÈ*CÏ ~<æwʃÕG:ÅÙ !Ò٦ʎÕÃ¬Õ 4~æʶÕÍÓÍõѬÕ:ÓÙ<ʶÕÍ$ÕÍõÑʶÕïÕÍZÔͻЯÃÏÍÏÃxÑ>2ÕÙ>ÿ2ÓÙÍ»Ð:ãÙ!áÙ¾ÚæÕþ€ÂûÕÍZÕ¯2ãÙ:EÏ·ÂûÕÍwÐÍ„ÐÊûÕÍŠÐÍÑÏͲÏÃÒÐÃÏ> Õ*CÏ ëÍ^ÑÁÍOÏÍÃÏÃÆÑÍTÑÍÓ*CÏ~wÍõÑÈÍDÑÍÔÍ-ÓÃ'ÔÍÓÍõÑÈÍÔÍ-ÓÃ@ÔÍÓÍõÑÈͦÐ~õåÍ^Ñë*CÏ ÕÍOÏÍxÑÑ!N!Fáñwy¾xÊ‹Ô>Ú‹Ô>€*CÏwÉ~#¶+Àw#w+ɯ2EÏ2êÙ2ëÙÍÑÀÍiÑæ€ÀÍÓÍõÑÈÍ^Ñ ë*CÏ :ÝÙ·ÊèÔ~·ÂÛÔw·ÂáÔ~¾ÂÕÃýÔÍ”ÔëÍ”Ôë¾ÂÕ#¾ÂÕ
#
Ò:ÔÙÃÏÅõ:ÅÙ/Gy Oñ ‘æÁÉ>ÿ2ÔÙ!ØÙq*CÏ"ÙÙÍþÑÍ¡ÏÍÒÍõÑÊ”Ó*ÙÙëþåÊJÓÕÍÑÑÒ”ÓÍ^Ñ:ØÙOy·ÊƒÓþ?Ê|Óxþ
Ê|ÓþÊsÓ–æÂ-ÓÃ|ÓÅNÍÓÁÂ-Ó#
ÃSÓ:êÙæ2EÏ!ÔÙ~ЯwÉÍþÑ>ÿÃÏÍTÑÍÓÍõÑÈÍDÑÍ^Ñ6åÍkÒÍÆÑÍ-ÓäÓPYy°ÊÑÓÕÅÍ5ÒÒìÓÁÑ*ÆÙ{•zœÒôÓÅÕBKÍ5ÒÒìÓÑÁÃÀÓ<ÍdÒáÑÉy°ÂÀÓ!Éÿ"êÙÉ*ÈÙë*êÙ#"êÙÍ•ÑÒÒÃþÑ:êÙæ‡Â Ò2éÙ·ÀÅÍÃÏÍÔÑÁÞÑyæ<_WyæOx‡‡‡‡‡±OxæG*¿Ù ~ÂVÒÉÕÍ5ÒæþÁ±ÂdÒwÉÍ^ÑÅÑ
ÈÕ:ÝٷʈÒÅåNÃŽÒ
ÅN#Fåy°ÊÒ*ÆÙ}‘|˜Ô\Òá#ÁÃuÒ*ÆÙÍêÐ#DM*¿Ù6#x±Â±Ò*ÊÙë*¿Ùs#rÍ¡Ï*³Ù6#6ÍþÑÿÍÒÍõÑÈÍ^Ñ>å¾ÊÒÒ:AϾÂöÒ#~Ö$ÂöÒ=2EÏÍkÒÍŒÑÃÒÂýÐÉ
È)ÃÑÅ:BÏO!ÍÑÁyµox´gÉ*Ù:BÏOÍêÐ}æÉ!ÙN#FÍÑ"Ù*ÈÙ#ë*³Ùs#rÉÍ^Ñ ~Ð!ÌÃJÏÍÑÈ!
ÌÃJÏ*¹Ù:éÙ…oÐ$É*CÏ~ÉÍiÑ6ÉÍiÑö€wÉ*êÙë*³Ù{–#zžÉÍÑØr+sÉ{•ozœgÉÿ*ìÙë*ÌÙÍ•ÑÐÅÍ÷Ð*½Ùë*ìÙÁÊÄѾÈÍÑÐÍ,ÑÉwÉÍœÑÍàÑ͸ÏÃÚÑÍàÑͲÏ!±ÙÃãÑ!¹ÙN#FÃ$Ú*¹Ùë*±Ù€ÃOÏ!êÙ~#¾À<É!ÿÐy•xœÚÐëá#ÃúÏáÅÕåë*ÎÙDMÍÚÑ*µÙs#rÑ*·Ùs#rÁy“OxšG*ÐÙëÍ0ÚMDÃ!Ú!ÃÙN:ãÙ·
ÂEÐG>–O:âÙ
Ê\зÃSЀÉ*CÏ :ÝÙ·ÊqÐn&É ^#VëÉÍ>ÐOÍ^Ð"åÙÉ*åÙ}´É:ÃÙ*åÙ)=ÂÐ"çÙ:ÄÙO:ãÙ¡µo"åÙÉ*CÏÉ*CÏë!ÉÍ®Ð~2ãÙë~2áÙͦÐ:ÅÙ¦2âÙÉÍ®Ð:ÕÙþÂÞЯO:ãÙwë:áÙwÉ
È|·g}oÃëЀ*¹Ù¯†#
Í2EÏÉ>ÃÏ!Ì^#Vëé
Èw#ÃPÏ:BÏOÍÚ|µÈ^#V#"³Ù##"µÙ##"·Ù##ë"ÐÙ!¹ÙÍOÏ*»Ùë!ÁÙÍOÏ*ÆÙ|!ÝÙ6ÿ·ÊÏ6>ÿ·ÉÍÚ¯*µÙw#w*·Ùw#wÉÍ'ÚûÏÍ*Ú·È! ÌÃJÏ*êÙÍêÐ"åÙ"ìÙ!åÙN#F*·Ù^#V*µÙ~#foy“xšÒúÏå*ÁÙ{•_zœWá+ÃäÏå*ÁÙÚÁÎþÂÎx·ÊïÍ:Ï2
ÏÃpÎþÂ&Îx·ÊïÍ~+éÎþÂ7ÎÅåÍÉͯ2ÏÃñÍþÂHÎå!
Ï>–wáÃïÍþÂ_Îá:Ï!ϾÒáÍ5ͤÍÃNÎþÂkÎͱÍáÃáÍþ¦ÎÅͱÍÁáåÅx·ÊŠÎ#NÅåÍÍáÁÃxÎå:
Ï·ÊñÍ!Ï–2
ÏͤÍ!
Ï5™ÎÃñÍ#wÅåOÍÍáÁ~þx½ÎþʹÚïÍáp
ÃHÍÍÍÃÏÍÚÃÏy<ÊàÎ<ÊÚÃÚÍÚ·Ê‘ÙÍ ÚÃÏ:ÃÏ!qÉëMDÃÓÍÍ#·Àà ÚÍûÌÍÍØõOÍÍñÉþ
Èþ
Èþ ÈþÈþ É:Ï·ÂEÍÍÚæÈÍ ÚþÂBÍÍ ÚþʯÉ2Ï>É:
Ï·ÂbÍÅÍ#ÍÁÅÍÚÁÅ:
Ï·ÄÚÁy!ÏþÈ4þ Ð5~·ÈyþÂyÍ5Éþ
À6ÉyÍÍÒÍõ^ÍHÍñö@Oyþ ÂHÍ ÍHÍ:Ïæ–ÍÉÍ¬Í ÍÚÃÚ#ÍHÍÍÉÍ:Ï!ϾРÍHÍùÍ
ÍHÍ
ÃHÍ
þ$ÈÅOÍÍÁÃÓÍ:Ï2Ï*CÏN#åÅåÍûÌæáÁþ
ÊÁÎþ
ʽv^Ã̙̥̫̱Ìë"CÏë{2ÖÙ!"EÏ9"Ï1Aϯ2àÙ2ÞÙ!tÙåyþ)ÐK!GÌ_^#V*CÏëéÚÈÎÍÎÎÚÚÔÎíÎóÎøÎáÍþÎ~؃ØE؜إثØÈØ×ØàØæØìØõØþØÙ
ÙÙ,ÑÙÙ&Ù-ÙAÙGÙMÙØSÙÏÏ›Ù!ÊÌÍåÌþÊÉ!ÕÌôÌ!áÌôÌ!ÜÌÍåÌÃBdos Err On : $Bad Sector$Select$File R/O$åÍÉÍ:BÏÆA2Æ̺ÌÍÓÍÁÍÓÍ!Ï~6Êá=ÂqËÍfÈÍ^Æ!ðËå~2ÍË>Í`Æá~2Ý˯2íË\!ÍË!ÍBÈ!Ä~·Ê>Ëþ Ê>Ë#Ã0Ë~·ÊOË#ÃCËx2€Í˜ÄÍÕÅÍÅÍ1«ËÍ)ÅͽÄÂÇÍfÈà ÆzËͧÄÆËBAD LOADCOMÍfÈÍ^Æ:ÎËÖ !ð˶ ÆÂÇ$$$ SUBÄÍÕÅÆËNO SPACEÍ^Æ Æ:ðËõÍTÈÍéÄÂyÊ!ÍËÝËÍBÈ*ˆÄëÍOÆþ=Ê?Êþ_ÂsÊë#"ˆÄÍ^ÆÂsÊñG!ðË~·ÊYʸpÂsÊp¯2ÍËÍéÄÊmÊÍËÍÅÆËÍêÇÆËÍfÈà ƂÊͧÄÆËFILE EXISTSÍøÇþÒ Æ_:ÎËþ Ê ÆÍÅÉËÍõÅ:ÎËþ ÂÄÊ:ð˷ʉË=2ïËÍ)ÅͽÄÉËÖËþ  ÆÕÍTÈÑ!ƒËÍ@ÈÍÐÄÊkË!åëÍØÅÍËÍùÄÂËá€Ä}“|šÒqËÃáØs+p+qÍ-ÓÃä×áÉ*CÏ Í¥×!!q#p#wÉ*¯Ù:BÏOÍêÐåëÍYÏáÌGÏ}Ø*¯ÙMDÍÑ"¯ÙãÒ:ÖÙ!BϾÈwÃ!Ø>ÿ2ÞÙ*CÏ~æ=2ÖÙþÒuØ:BÏ2ßÙ~2àÙæàwÍEØ:AÏ*C϶wÉ>"ÃÏ!"Ù"¯Ù¯2BÏ!€"±ÙÍÚÑÃ!ØÍrÑÍQØÃQÔÍQØâÔë~þ?ÊÂØͦÐ~þ?ÄrÑÍQØÍÓÃéÑ*ÙÙ"CÏÍQØÍ-ÓÃéÑÍQØÍœÓÃÓÍQØüÕÍQØÃþÕÍrÑÍQØÃ$ÕÍQØÍÔÃÓ*¯ÙÃ)Ù:BÏÃÏë"±ÙÃÚÑ*¿ÙÃ)Ù*ÙÃ)ÙÍQØÍ;ÔÃÓ*»Ù"EÏÉ:ÖÙþÿÂ;Ù:AÏÃÏæ2AÏÉÍQØÓ×ÍQØÃœ×ÍQØÃÒ×*CÏ}/_|/*¯Ù¤W}£_*Ùë"¯Ù}£o|¢g"ÙÉ:ÞÙ·Ê‘Ù*CÏ6:àÙ·Ê‘Ùw:ßÙ2ÖÙÍEØ*Ïù*EÏ}DÉÍQØ>2ÕÙÍ×ÌÖÉå€ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååCÝñþ0ÍTß"IÝ!>"HÝ>É2JÝ:ó· !®ß€óí°Í¢Ú:˜óÍdß:›ó:dß!sß~·ÊÛÚåÍBÛá#óßÜÝ1ÝÝÝ!Pß!J߇…o~,foÉ·òpßõ:—óÍBÛñÃBÛ
Apple ][ CP/M
56K Ver. 2.20B
(C) 1980 Microsoft
Í;Û¯2ÄÉ>ÜEÝEÝ?Ý?Ý+Ý+ÝBÛá#óßÜÝ1ÝÝÝ!Pß!J߇…o~,foÉ·òpßÍ;Û¯2ÄÉ:©Þ·ÉÍ;Û¯2ÄÉe ]~6·(*Þ}¼
*àó:¨Þ½ y¼(3:°Þ·ÄsÞ:Þ2®ÞGæ<2äóx懇‡/Æa2æó:¨Þoa"àó:³Þ·ÄzÞ¯2°Þ{!øËí[¸Þ€:±Þ· <2°Þëí°:²Þ>ÐÍsÞɯ2°Þ>!>2ëó!Í;Û:êó·ÈÑþÀ*
Ìé
§Þ1>É2Ú>¥2*Þó"?Û¯2:»óþ0Ö8 !°"ÛõÍYßñ"BÜÍTß"-Û>2ýÚ:¹óÖ8ÍYß"/Ý€:ºóÖ8õÍYß"Fð~ÉÍêÜ!xöq!ªÉÃ;ÛÍ`Ý~0ü,~ÉÍîÜ!MÈÍ;Û!xö~ÉÃ>ÝÍÅÚ.Á~8üÍ[ÝqÉÃ>ÝÃ:°Þ· 2¯Þy2¨ÞÉ!€à!Žà{‡‡‡‡õ…oñɬÞ!:¸ó=¹8
~y!3Úàw.Éy2©ÞÉíC¸Þɯ2´Þ>!±Þw#w#wOa."±Þyþ .:Þg"´Þ*¨Þ"¶Þ!´Þ~·((5:Þ#¾ :¨Þ*¶Þ½ :©Þ¼ $|Ö 8g,"¶Þ¯2³Þ!"³ÞÍðß_!’Þ…oN!¯Þ·(«¹(+õ!~·Oò#ÜæOÅ:¢óÍÝÛÁxþ >2£Þ¯2¤Þ:¢Þ·*ˆó(*†óéÃDÜ*¥Þ:§ÞwÍkÜ*(ð:$ð_ð"¥Þ~2§Þþà8î æ?ö@wÉx·(!;Ûå!ÔÜ…onéyþ
¯2$ðÉö€þà8!Ýó®2Eð!ðýy>ÿ>?22ðáÉ!ôûɯog"$ð2Eð!ÁûÉ.B.œ..X&üÉ*ªÞ}þ(8.|þ8&"$ðÕº±´–™¤ž· ¿Í`Ý~æ(û,qÉy2EðÍ[Ý2øö2Gð:ÿïÍÅÚÖ 2È:OÃÄ*€óé:àŸÉÍPÛ!«óO#~#·ú'Û¹~ÈôyÉÃ/Û:à0ú2à?É"Ðó2ÉO:æþ K*’óé:æþ*„ó(0*‚óé*Šóé:æÀþ€8'(Û*”óé:æ0þ8*Žó â*óé:æþ8Î(Ð*Œóé7Ÿ!¢Þw˹#~·(=5:–ó!«Þ(·ò³Û+æ_y“wÉ·ú½Û+ͱÛ*ªÞ:¡ó·òÏÛæ]lc_„O{…õÍ-Üñ
OMG!¤Þ~_· :—ó·(¹ 6€É>¹83! ó ~èÞÃÌÚÃÛÃÛÃCÛÃfÛÃuÛÇÛÃKÝÃmÝÃVÝÉÝÃŽÝÓÝãݯÉ`iɺޓښß:ߺޓڦßJߺޓڲßZߺޓھßjߺޓÚÊßzߺޓÚÖßŠß /ÀÍò!¸ó~Ö Í`Ý66= ÍîÜ!ÈÍ;Û áÉ!à{´gÉ1€:Qà!ÍèßÍ¢Ú¯2´Þ2¯Þ>Ã2!Ú"2!Ì"€ÍŽÝ>2²ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååUDCNT ÄAT> PAL20I ÆOR€
PAL20I ÆOR€ !"#$%&'()PAL20I ÆOR€*+,-./0123456789PAL20I ÆOR :;<=PAL24I ÆOR€>?@ABCDEFGHIJKLMPAL24I ÆOR€NOPQRSTUVWXYZ[\]PAL24I ÆORk^_`abcdefghijk* I2*/I1*/I0 ;SHIFT LEFT
+ ( A1)* I2* I1*/I0*( A0)* RIO ;INCREMENT
+ (/A1)* I2* I1* I0*(/A0)* RIO ;DECREMENT
+ CLR ;CLEAR
B0 B1 B2 B3 I2 CLR GND
/OC /LIO NC A3 A2 A1 A0 NC /RIO VCC
IF (/I2* I1*/I0) RIO = (A0) ;SHIFT RIGHT
/A0 := (/A0)*/I2*/I1*/I0 ;HOLD A0
+ (/B0)*/I2*/I1* I0 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå ;SHFIT LEFT
+ ( A0)* I2* I1*/I0* RIO ;INCREMENT
+ (/A0)* I2* I1* I0* RIO ;DECREMENT
+ CLR ;CLEAR
/A2 := (/A2)*/I2*/I1*/I0 ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååBBCD ÄATlmBFLIP ÄAT+nopqrsBGATES ÄATtuvCNT10 ÄAT)wxyz{|EDG ÄAT}~åGO COMåEXAMPLE DATåååååååååååååååååååååååååååååååå/I0 ;INCREMENT
+ RIO* I2* I1* I0 ;DECREMENT
+ CLR ;CLEAR
/A1 := (/A1)*/I2*/I1*/I0 ;HOLD A1
+ ( ;LOAD A0
+ (/A1)*/I2* I1*/I0 ;SHIFT RIGHT
+ (/A0)* I2* I1 ;HOLD (INC AND DEC)
:+: /RIO* I2*/I1*/I0 ;SHIFT LEFT
+ RIO* I2* I1*åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå ;HOLD A2
+ (/B2)*/I2*/I1* I0 ;LOAD A2
+ (/A3)*/I2* I1*/I0 ;SHIFT RIGHT
+ (/A2)* I2* I1 ;HOLD (INC AND DEC)
:+: (/A1)
PAL16X4 PAL DESIGN SPECIFICATION
UDCNT BIRKNER/COLI 07/07/81
4-BIT UP/DOWN COUNTER WITH SHIFT AND THREE STATE OUTPUTS
MMI SUNNYVALE, CALIFORNIA
CLK I0 I1åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå/B1)*/I2*/I1* I0 ;LOAD A1
+ (/A2)*/I2* I1*/I0 ;SHIFT RIGHT
+ (/A1)* I2* I1 ;HOLD (INC AND DEC)
:+: (/A0)* I2*/I1*/I0 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå
/A3 := (/A3)*/I2*/I1*/I0 ;HOLD A3
+ (/B3)*/I2*/I1* I0 ;LOAD A3
+ /I2* I1*/I0*/LIO ;SHIFT RIGHT
+ (/A3)* I2* I1 HHLH SHIFT LEFT IN A H
C L L HLL XXXX H H HLHH SHIFT LEFT IN A H
C L L HLL XXXX L H LHHH SHIFT LEFT IN A H
C L L HLL XXXX H H HHHH SHIFT LEFT IN A H
C L L LHL XXXX XXXX X H HHLL DECREMENT
C L L HHH XXXX X H HLHH DECREMENT
C L L HHH XXXX X H HLHL DECREMENT
C L L HHH XXXX X H HLLH DECREMENT
C L L HHH XXXX X H HLLL CTION TABLE
CLK /OC CLR I2 I1 I0 B3 B2 B1 B0 LIO RIO A3 A2 A1 A0
;--CONTROL-- INST INPUT OUTPUT
;CLK /OC CLR III BBBB L R AAAA
; 210 3210 IO IO 3210 COMMENTS
------------------------------------------LLLL SHIFT LEFT IN A L
C L L LHL XXXX H L HLLL SHIFT RIGHT IN A H
C L L LHL XXXX L L LHLL SHIFT RIGHT IN A L
C L L LHL XXXX L L LLHL SHIFT RIGHT IN A L
C L L LHL XXXX L HHL XXXX X H HLHH INCREMENT
C L L HHL XXXX X H HHLL INCREMENT
C L L HHL XXXX X H HHLH INCREMENT
C L L HHL XXXX X H HHHL INCREMENT
C L L HHL XXXX X H ;HOLD (INC AND DEC)
:+: (/A2)* I2*/I1*/I0 ;SHIFT LEFT
+ ( A2)* I2* I1*/I0*( A1)*( A0)* RIO ;INCREMENT
+ (/A2)* I2* I1* I0*(/A1)*(/A0)* RIO ;DECREMENT
+ CLR H XXXX X H LLHH DECREMENT
C L L HHH XXXX X H LLHL DECREMENT
C L L HHH XXXX X H LLLH DECREMENT
C L L HHH XXXX X H LLLL DECREMENT
C L L HLL XXXX L H LLLH DECREMENT
C L L HHH XXXX X H LHHH DECREMENT
C L L HHH XXXX X H LHHL DECREMENT
C L L HHH XXXX X H LHLH DECREMENT
C L L HHH XXXX X H LHLL DECREMENT
C L L HH---------------------
C H X XXX XXXX X X ZZZZ TEST HI-Z
C L L LLH LLLL Z Z LLLL LOAD ZEROS
C L L LLL XXXX Z Z LLLL HOLD
C L L HHL XXXX X H LLLH INCREMENT
C L L H LLLH SHIFT RIGHT IN A L
C L L LHL XXXX L L LLLL SHIFT RIGHT IN A L
C L L HLH XXXX L Z HHHH SET
C L L HLL XXXX H L HHHL SHIFT LEFT IN A L
C L L HLL XXXX H H HHHH INCREMENT
C L H XXX XXXX Z Z LLLL CLEAR
C L L LHH XXXX Z Z HHHH SET
C L L HHH XXXX X H HHHL DECREMENT
C L L HHH XXXX X H HHLH DECREMENT
C L L HHH ;CLEAR
IF ( I2) LIO = I2*/I1*/I0*( A3) ;SHIFT LEFT
+ I2* I1*/I0*( A3)*( A2)*( A1)*( A0)* RIO ;INCREMENT
+ I2* I1* I0*(/A3)*(/A2)*(/A1)*(/A0)* RIO ;DECREMENT
FUN SHIFT LEFT IN A H
C L L HLL XXXX L L LLHL SHIFT LEFT IN A L
C L L HLL XXXX L L LHLL SHIFT LEFT IN A L
C L L HLL XXXX H L HLLL SHIFT LEFT IN A L
C L L HLL XXXX L L HHL INCREMENT
C L L HHL XXXX X H LHHH INCREMENT
C L L HHL XXXX X H HLLL INCREMENT
C L L HHL XXXX X H HLLH INCREMENT
C L L HHL XXXX X H HLHL INCREMENT
C L L HHL XXXX X H LLHL INCREMENT
C L L HHL XXXX X H LLHH INCREMENT
C L L HHL XXXX X H LHLL INCREMENT
C L L HHL XXXX X H LHLH INCREMENT
C L L HHL XXXX X H L L H LHHH SHIFT RIGHT IN A L
C L L LHL XXXX H H HLHH SHIFT RIGHT IN A H
C L L LHL XXXX H H HHLH SHIFT RIGHT IN A H
C L L LHL XXXX H L HHHL SHIFT RIGHT IN A H
C L L LHL )
C
C / COMPLEMENT
C * AND, PRODUCT
C + OR, SUM
C :+: EXCLUSIVE OR
C MERS.
C
C INPUT: PAL DESIGN SPECIFICATION ASSIGNED
C TO RPD(1). OPERATION CODES ARE
C ASSIGNED TO ROP(5).
C
C OUTPUT: ECHO, ---------------------------
X H X X X X X X X Z HI-Z
C L H X X X X X X L CLEAR
C L L L L L X X X A HOLD
C L L L L H
C A = B*C + D
C
C A := B*C + D
C
C IF( A*B ) C = D + E
C
C A2 := (A1:*:B1) + /C
C
C ~·Ê # x2€áÉÍ& "<1Š;!)ÃùÍ®:ëÍ8þ,Èþ ÈÖ0Úº:ÆéÚº:ÆòK ÆÚº:Æ
·O)))) Ã- Í& ¯2’ 2 9åÍh8
addr:Hex Dec Binary Ascii EnteòáÍc8åͺ/>·ô~5òž Íh8Íí8áå~GÍ´/Íí8xͦ/Íí8xÍ„/Íí8x·> ò >-Íï8xæþ ÚÒ þÚÚ Í97Æ@Ãß õÍí8ñÍï8Íh8 ¼:hÍï8Íh8¾Í6*w#Íx/Â!á XXXX H H HHHH SHIFT RIGHT IN A H
----------------------------------------------------------------
DESCRIPTION
THE UP/DOWN COUNTER WITH SHIFT WILL LOAD, SHIFT, COUNT UP, COUNT DOWN,
CLEAR, OR HOLD ON THE RISING EDGE OF THE CLOCK AS ERROR MESSAGES ARE ASSIGNED TO
C PMS(6).
C
C PART NUMBER: THE PAL PART NUMBER MUST
C APPEAR IN COLUMN ONE OF LINE ONE
C
C SIMULATION, AND FUSE PATTERN
C ARE ASSIGNED TO POF(6). HEX AND
C BINARY PROGRAMMING FORMATS ARE
C ASSIGNED TO PDF(6). PROMPTS AND
C B X X B LOAD B
C L L L H L X RI A1 SHIFT RT RI SHIFT RIGHT
C L L L H H X X X H SET
C L L H L L X A2 LI SHIFT LT LI SHIFT LEFT
ALL CHARACTERS FOLLOWING ';' ARE
C IGNORED UNTIL THE NEXT LINE
C
C BLANKS ARE IGNORED
C
C OPERATORS: ( IN HIERARCHY OF EVALUATION
C**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20*
C
C P A L A S M 2 0 - TRANSLATES SYMBOLIC EQUATIONS INTO PAL OBJECT
C CODE FORMATTED FOR DIRECT INPUT TO STANDARD
C PROM PROGRAM SPECIFIED BY THE
INSTRUCTION, I. THESE OPERATIONS ARE EXERCISED IN THE FUNCTION TABLE
AND SHOWN IN THE OPERATIONS TABLE BELOW.
CLK /OC CLR I2 I1 I0 B4-B0 LIO RIO A4-A0 OPERATION
------------------------------------------------- PIN LIST: 20 SYMBOLIC PIN NAMES MUST APPEAR
C STARTING ON LINE 5
C
C EQUATIONS: STARTING FIRST LINE AFTER THE
C PIN LIST IN THE FOLLOWING FORMS:
C----------------------------------------------
NOTE THAT SHIFT I/O, CARRY AND BORROW SHARE THE SAME I/O LINES (LIO AND RIO).
>
C L L H L H X L X H SET
C L L H H L X COUT CIN A PLUS 1 INCREMENT IF CIN
C L L H H H X BOUT BIN A MINUS 1 DECREMENT IF BIN
------------------------------- :*: EXCLUSIVE NOR
C () CONDITIONAL THREE-STATE
C OR FIXED SYMBOL
C = EQUALITY
C := RE LINE ERROR)
LPRD=.FALSE.
C HEADER WILL BE PRINTED IF LHEAD IS TRUE
C CHANGE THIS STATEMENT SO LHEAD IS FALSE IF NO HEADER IS DESIRED
LHEAD=.FALSE.
C READ IN FIRST 4 LINES OF THE PAL DESIGN SPECIFICATION
READ(RPD,10) IPAL(4),REST(73),PATNUM(80),TITLE(80),COMP(80),
1 ISYM(8,20),IBUF(8,20)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LFIRST,LMATCH,LFUSES(32,64),LPHASE(20),LBUF(20),
2 LPROD(80),LSAME,LACT+:BN)
C (AN*/BN)
C (/AN+BN)
C (AN:*:BN)
C (BN)
C (AN*BN)
C N (OUTPUT)
C PDF - HEX AND BINARY FORMAT PROGRAM TAPES (OUTPUT)
C PMS - PROMPTS AND ERROR MESSAGES (OUTPUT)
RPD=1
ROC=5
POF=LUN
PDF=LUN
PMS=LUN
IFUNCT=0
IDESC=0
C INITIALIZE LSAME AND LACT TO BJECT CODE OF THE
C EXAMPLES IN THE APPLICATIONS
C SECTION ON A VAX/VMS COMPUTER
C AND A NATIONAL CSS IBM SYSTEM/370
C PLACED BY (AFTER CLOCK)
C
C FIXED SYMBOLS
C FOR PAL16X4
C AND PAL16A4
C ONLY: (AN+/BN) WHERE N = 0,1,2,3
C (AN+BN) /'S'/,L/'L'/,
1 N/'N'/,Q/'Q'/,U/'U'/,F/'F'/,C/'C'/,R/'R'/,A/'A'/
DATA BB/'B'/,CC/'C'/,DD/'D'/,EE/'E'/,FF/'F'/,II/'I'/,NN/'N'/,
1 OO/'O'/,PP/'P'/,RR/'R'/,SS/'S'/,TT/'T'/,UU/'U'/
C
C
WRITE(6,1)
1 FORMAT(/,' WHAT IS TH,LOPERR,LINP,LPRD,LHEAD
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
COMMON /FTEST/ IFUNCT,IDESC,IEND
DATA E/'E'/,O/'O'/,T/'T'/,P/'P'/,B/'B'/,H/'H'/,S (/AN)
C (/AN*/BN)
C (/AN*BN)
C
C SUBROUTINES: INITLZ,GETSYM,INCR,MATCH,FIXSYM,
C IXLATE,ECHO,PINOUT,PLOT,FALSE (ACTIVE HIGH/LOW ERROR)
LSAME=.FALSE.
LACT=.FALSE.
C INITIALIZE LOPERR TO FALSE (OUTPUT PIN ERROR)
LOPERR=.FALSE.
C INITIALIZE LINP TO FALSE (INPUT PIN ERROR)
LINP=.FALSE.
C INITIALIZE LPRD TO FALSE (PRODUCT FORTRAN IV(G).
C
C***********************************************************************
C
C
C***********************************************************************
C
C
C MAIN PROGRAM
C
IMPLICIT INTEGER (A-Z)
INTEGER IPA FOR OUTPUT PINS
C (AN) 17,16,15,14, RESP
C (/AN+/BN) A IS OUTPUT
C (/BN) B IS INPUT
C (AN:E LOGICAL UNIT NUMBER FOR OUTPUT?: ',$)
READ(6,2) LUN
2 FORMAT(I4)
C ASSIGNMENT OF DATA SET REFERENCES
C RPD - PAL DESIGN SPECIFICATION (INPUT)
C ROC - OPERATION CODE (INPUT)
C POF - ECHO, PINOUT, SIMULATION, AND FUSE PATTER RESPONSIBILITY FOR THE OPERATION
C OR MAINTENANCE OF THIS PROGRAM.
C THE SOURCE CODE AS PRINTED HERE
C PRODUCED THE OTWEEK,BINR,
C HEX,SLIP,FANTOM,IODC2,IODC4,TEST,
C FIXTST
C
C REV LEVEL: 06/15/81
C
C FINE PRINT: MONOLITHIC MEMORIES TAKES NO
C L,INOAI,IOT,INOO,REST,PATNUM,TITLE,COMP
10 FORMAT(4A1,A1,A1,A1,73A1,/,80A1,/,80A1,/,80A1)
C READ IN PIN LIST (LINE 5) THROUGH THE END OF THE PAL DESIGN
C SPECIFICATION
DO 15 J=1,200
READ(RPD,11,END=16) (IPAGE(I,J),I=1,80)
GO TO 118
69 IF(LFIX) GO TO 59
CALL MATCH(IMATCH,IBUF,ISYM)
IF( ITYPE.EQ.1.AND.IMATCH.GT.11 ) LINP=.TRUE.
IF( ITYPE.EQ.2.AND.(IMATCH.GT.12.AND.IMATCH.LT.19) )
1 LINP=ND.
1 (IMATCH.LT.12.OR.IMATCH.GT.19) ) LOPERR=.TRUE.
IF( ITYPE.EQ.2.AND.(IMATCH.LT.13.OR.IMATCH.GT.18) )
1 LOPERR=.TRUE.
IF( ITYPE.EQ.3.AND.(IMATCH.LT.14.OR.IMATCH.GT.17) )
).EQ.DD.AND.
1 IPAGE(2,J).EQ.EE.AND.IPAGE(3,J).EQ.SS.AND.
2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.RR.AND.
3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.PP.AND.
4 IPAGE(8,J).EQ.TT.AND.IPAGE(9,J).EQ.II.AND.
5 IPAGE(10,J).EQ.O CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX)
IF( (ITYPE.EQ.1.OR.ITYPE.EQ.2.AND.IPRD.GT.13
1 .AND.IPRD.LT.18).AND.COUNT.GT.2 ) LPRD=.TRUE.
IF( (ITYPE.EQ.3.OR.ITYPE.EQ.2.AND.(IPRD.EQ.13.OR.
1 IF(.NOT.LEQUAL) GO TO 25
COUNT=0
CALL MATCH(IMATCH,IBUF,ISYM)
IPRD=IMATCH
C CHECK FOR VALID POLARITY
LSAME = ( ( LPHASE(IMATCH)).AND.( LBUF(1)).OR.
1 (.NOT.LPHASE(IMATCH)).AN 11 FORMAT(80A1)
C CHECK FOR 'FUNCTION TABLE' AND SAVE ITS LINE NUMBER
IF( IFUNCT.EQ.0 .AND.IPAGE(1,J).EQ.FF.AND.
1 IPAGE(2,J).EQ.UU.AND.IPAGE(3,J).EQ.NN.AND.
2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.TT.AND.
3 I I88PRO=(19-IMATCH)*8 + 1
C START PAL16C1 ON PRODUCT LINE 25
IF(IOT.EQ.C) I88PRO=25
IC=0
30 CALL INCR(IC,IL,LFIX)
IF( .NOT.(LEQUAL.OR.LLEFT) ) GO TO 30
LPROD(I88PRO)=.TRUE.
1 LOPERR=.TRUE.
IF( ITYPE.EQ.4.AND.(IMATCH.LT.15.OR.IMATCH.GT.16) )
1 LOPERR=.TRUE.
ILL=IL
IF( (LACT).OR.(LOPERR) ) GO TO 100
O.AND.IPAGE(11,J).EQ.NN ) IDESC=J
15 CONTINUE
C SAVE THE LAST LINE NUMBER OF THE PAL DESIGN SPECIFICATION
16 IEND=J-1
CALL INITLZ(INOAI,IOT,INOO,ITYPE,LFUSES,IC,IL,IBLOW,LFIX)
ILE=IL+1
C PRINT ERROR MESSAGE FOR INVALID PAL P IPRD.EQ.18)).AND.COUNT.GT.4 ) LPRD=.TRUE.
IF( IOT.NE.A.AND.IOT.NE.C.AND.COUNT.GT.8 ) LPRD=.TRUE.
IF( .NOT.LPRD ) GO TO 69
IF(IL.NE.IFUNCT.AND.IL.NE.IDESC) ILL=IL
IPROD = IPROD - 1
D.(.NOT.LBUF(1)) )
IF( IOT.EQ.H.AND.(.NOT.LSAME) ) LACT=.TRUE.
IF( (.NOT.(IOT.EQ.H.OR.IOT.EQ.C)).AND.(LSAME) ) LACT=.TRUE.
C CHECK FOR VALID OUTPUT PIN
IF( (ITYPE.EQ.1.OR.ITYPE.EQ.5.OR.ITYPE.EQ.6).APAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.OO.AND.
4 IPAGE(8,J).EQ.NN.AND.IPAGE(10,J).EQ.TT.AND.
5 IPAGE(12,J).EQ.BB.AND.IPAGE(14,J).EQ.EE ) IFUNCT=J
C CHECK FOR 'DESCRIPTION' AND SAVE ITS LINE NUMBER
IF( IDESC.EQ.0 .AND.IPAGE(1,J IF(.NOT.LLEFT) CALL SLIP(LFUSES,I88PRO,INOAI,IOT,INOO,IBLOW)
DO 70 I8PRO=1,16
COUNT = COUNT + 1
IPROD = I88PRO + I8PRO - 1
LPROD(IPROD)=.TRUE.
LFIRST=.TRUE.
50 ILL=IL
LFIX)
IF(.NOT.(LEQUAL.OR.LLEFT.OR.LAND.OR.LOR.OR.LRIGHT)) GO TO 24
WRITE(PMS,23)
23 FORMAT(/,' LESS THAN 20 PIN NAMES IN PIN LIST')
STOP
24 ILE=IL
25 CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX)
28 ART TYPE
IF(ITYPE.NE.0) GO TO 17
WRITE(PMS,18) IPAL,INOAI,IOT,INOO
18 FORMAT(/,' PAL PART TYPE ',4A1,A1,A1,A1,' IS INCORRECT')
STOP
C GET 20 PIN NAMES
17 DO 20 J=1,20
20 CALL GETSYM(LPHASE,ISYM,J,IC,IL,.TRUE.
IF( ITYPE.EQ.3.AND.(IMATCH.GT.13.AND.IMATCH.LT.18) )
1 LINP=.TRUE.
ILL=IL
IF(LINP) GO TO 100
IF( IMATCH.EQ.0 ) GO TO 100
C IF( IMATCH.GE.90.AND.(LD EQUATIONS',
8 ' AND GENERATES TEST VECTORS',
9 //,' PLOT (P) - PRINTS THE ENTIRE FUSE PLOT'
A //,' BRIEF (B) - PRINTS ONLY THE USED PRODUCT LINES',
B ' OF THE FUSE PLOT',/,' ' FOR ',4A1,A1,A1,A1)
C PRINT AN ERROR MESSAGE FOR AN INVALID INPUT PIN
IF(LINP) WRITE(PMS,115) IMATCH,IPAL,INOAI,IOT,INOO
115 FORMAT(' THIS PIN NUMBER ',I2,' IS AN INVALID INPUT PIN',
1 ' FOR ',4A1,A1,A1,A1)
C PRINT AN ERROD,TITLE,.FALSE.,ITYPE,
1 LPROD,IOP,IBLOW)
GO TO 60
59 CALL FIXSYM(LBUF,IBUF,IC,IL,LFIRST,LFUSES,IBLOW,
1 IPROD,LFIX)
60 IF(LAND) GO TO 50
64 IF(.NONAL HEADER
IF(LHEAD) WRITE(6,104)
104 FORMAT(/,' THIS PALASM AIDS THE USER IN THE DESIGN AND'
1 ' PROGRAMMING OF THE',/,' SERIES 20 PAL FAMILY. THE',
2 ' FOLLOWING OPTIONS ARE PROVIDED:',
3 //,' ECHO (EED SINCE ',4A1,A1,A1,A1,
1 ' IS AN ACTIVE LOW DEVICE')
IF( (LACT).AND.(.NOT.LSAME).AND.(.NOT.LOPERR) )
1 WRITE(PMS,109) IPAL,INOAI,IOT,INOO
109 FORMAT(' OUTPUT CANNOT BE INVERTED SINCE ',4A1,A1,A1,A1,
1 ' IS OT) ) GO TO 25
27 IF( IMATCH.EQ.10.OR.IMATCH.GE.90 ) GO TO 64
IF(.NOT.LFIRST) GO TO 58
LFIRST=.FALSE.
DO 56 I=1,32
IBLOW = IBLOW + 1
56 ER ',I3,/,' ',80A1)
IF( LPRD.AND.COUNT.LT.8 )
1 WRITE(PMS,116) IPROD,IPAL,INOAI,IOT,INOO
116 FORMAT(' THIS PRODUCT LINE NUMBER ',I2,' IS NOT VALID',
1 ' FOR ',4A1,A1,A1,A1)
IF( LPRD.AND.COUNT.GT.8 )
1 R MESSAGE FOR INVALID PRODUCT LINE
118 ILERR=ILL+4
IF(LPRD) WRITE(PMS,119)
1 (ISYM(I,IPRD),I=1,8),IPRD,ILERR,(IPAGE(I,ILL),I=1,80)
119 FORMAT(/,' OUTPUT PIN NAME = ',8A1,' OUTPUT PIN NUMBER = ',I2,
1 /,' MINTERM IN LINE NUMBOT.LRIGHT) GO TO 68
66 CALL INCR(IC,IL,LFIX)
IF(.NOT.LEQUAL) GO TO 66
68 IF( .NOT.(LOR.OR.LEQUAL) ) GO TO 74
70 CONTINUE
74 ILL=IL
CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX)
IF() - PRINTS THE PAL DESIGN',
4 ' SPECIFICATION',
5 //,' PIN OUT (O) - PRINTS THE PIN OUT OF THE PAL',
6 //,' SIMULATE (T) - EXERCISES THE FUNCTION TABLE',
7 ' VECTORS IN THE LOGIC',/,' AN ACTIVE HIGH DEVICE')
C PRINT AN ERROR MESSAGE FOR AN INVALID OUTPUT PIN
IF( (LOPERR).AND.IMATCH.NE.0 )
1 WRITE(PMS,105) IMATCH,IPAL,INOAI,IOT,INOO
105 FORMAT(' THIS PIN NUMBER ',I2,' IS AN INVALID OUTPUT PIN',
1 LFUSES(I,IPROD)=.TRUE.
58 CALL IXLATE(IINPUT,IMATCH,LPHASE,LBUF,ITYPE)
IF(IINPUT.LE.0) GO TO 60
IBLOW = IBLOW - 1
LFUSES(IINPUT,IPROD)=.FALSE.
CALL PLOT(LBUF,IBUF,LFUSES,IPRO WRITE(PMS,117) IPAL,INOAI,IOT,INOO
117 FORMAT(' MAXIUM OF 8 PRODUCT LINES ARE VALID FOR ',4A1,A1,A1,A1,
1 /,' TOO MANY MINTERMS ARE SPECIFIED IN THIS EQUATION')
STOP
102 IF(ITYPE.LE.4) CALL TWEEK(ITYPE,IOT,LFUSES)
C PRINT OPTI8A1,' IN LINE NUMBER ',I3,
1 /,' ',80A1)
C PRINT AN ERROR MESSAGE FOR ACTIVE HIGH/LOW PART
IF( (LACT).AND.( LSAME).AND.(.NOT.LOPERR) )
1 WRITE(PMS,103) IPAL,INOAI,IOT,INOO
103 FORMAT(' OUTPUT MUST BE INVERTLLEFT.OR.LEQUAL) GO TO 28
100 IF( ILL.EQ.IFUNCT.OR.ILL.EQ.IDESC ) GO TO 102
C PRINT AN ERROR MESSAGE IF UNRECOGNIZABLE SYMBOL
ILERR=ILL+4
WRITE(PMS,101) (IBUF(I,1),I=1,8),ILERR,(IPAGE(I,ILL),I=1,80)
101 FORMAT(/,' ERROR SYMBOL = ', PHANTOM FUSES',
C ' ARE OMITTED',
D //,' HEX (H) - GENERATES HEX OUTPUT FOR PAPER TAPE',
E //,' SHORT (S) - GENERATES HEX OUTPUT FOR PAPER TAPE',
F //,' BHLF (L) - GENERATES BHLF OUXOR,LXNOR
COMMON /PGE/ IPAGE(80,200)
DATA IBLANK/' '/
LFIX=.FALSE.
IF( .NOT.(LLEFT.OR.LAND.OR.LOR.OR.LEQUAL.OR.LRIGHT) ) GO TO 10
CALL INCR(IC,IL,LFIX)
IF(LLEFT) GO TO 60
10 LPHASE(J)=( .NOT.LSLASH )
IF(INTERS)
IC=0
IL=1
C INITIALIZE ITYPE (PAL PART TYPE)
ITYPE=0
C ITYPE IS ASSIGNED THE FOLLOWING VALUES FOR THESE PAL TYPES:
C PAL10H8,PAL10L8 ITYPE=1
C PAL12H6,PAL12L6 L,INOAI,IOT,INOO,REST,PATNUM,TITLE,
1 COMP)
IF(IOP.EQ.O) CALL PINOUT(IPAL,INOAI,IOT,INOO,REST,TITLE)
IF(IOP.EQ.T) CALL TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF,
1 ITYPE,INOO,LFIX)
CALL INCR(IC,IL,LFIX)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE GETSYM(LPHASE,ISYM,J,IC,IL,LFIX)
C THIS SUBROUTINE GETS THE PIN NAME, / IF COMPLEMENT LOGIC, AND
C D,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LFUSES(32,64)
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR
COMMON /PGE/ IPAGE(80,200)
DATA H/'H'/,L/'L'/,C/'C'/,R/'R'/,X/'X'/,A/'A'/
1 I0/'0'/,I2/'2'TPUT FOR PAPER TAPE',
G //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE',
H //,' QUIT (Q) - EXIT PALASM')
108 WRITE(6,106)
106 FORMAT(/,' OPERATION CODES:')
WRITE(6,107)
107 FORMAT(/,' E=ECHO INPUT ITYPE=6
C DETERMINE ITYPE
IF( INOAI.EQ.I0 ) ITYPE=1
IF( INOAI.EQ.I2 ) ITYPE=2
IF( INOAI.EQ.I4 ) ITYPE=3
IF( (INOAI.EQ.I6) ) ITYPE=2
C PAL14H4,PAL14L4 ITYPE=3
C PAL16H2,PAL16L2,PAL16C1 ITYPE=4
C PAL16L8 ITYPE=5
C PAL16R4,PAL16R6,PAL16R8,PAL16X4,PAL16A4 IF(IOP.EQ.P) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE,
1 LPROD,IOP,IBLOW)
IF(IOP.EQ.B) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE,
1 LPROD,IOP,IBLOW)
IF(IOP.EQ.H) THE FOLLOWING OPERATION SYMBOL IF ANY
IMPLICIT INTEGER (A-Z)
INTEGER ISYM(8,20)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LPHASE(20)
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,L/,I4/'4'/,I6/'6'/,I8/'8'/
C INITIALIZE LFUSES ARRAY (FUSE ARRAY)
DO 20 J=1,64
DO 20 I=1,32
20 LFUSES(I,J)=.FALSE.
C INITIALIZE IBLOW (NUMBER OF FUSES BLOWN)
IBLOW=0
C INITIALIZE IC AND IL (COLUMN AND LINE POO=PIN OUT T=SIMULATE P=PLOT B=BRIEF',
1 /,' H=HEX S=SHORT L=BHLF N=BNPF Q=QUIT')
WRITE(6,110)
110 FORMAT(/,' ENTER OPERATION CODE:')
READ(ROC,120) IOP
120 FORMAT(A1)
C CALL IODC2
IF(IOP.EQ.E) CALL ECHO(IPA ITYPE=4
IF( (INOAI.EQ.I6).AND.(INOO.EQ.I8) ) ITYPE=5
IF( (IOT.EQ.R).OR.(IOT.EQ.X).OR.(IOT.EQ.A) ) ITYPE=6
IF( .NOT.(IOT.EQ.H.OR.IOT.EQ.L.OR.IOT.EQ.C
1 .OR.IOT.EQ.R.OR.IOT.EQ.X.OR.IOT.EQ.A) ) ITYPE=0
**********************************
C
SUBROUTINE INITLZ(INOAI,IOT,INOO,ITYPE,LFUSES,IC,IL,LFIX)
C THIS SUBROUTINE INITIALIZES VARIABLES AND MATCHES PAL PART
C NUMBER WITH ITYPE
IMPLICIT INTEGER (A-Z)
LOGICAL LBLANK,LLEFT,LANCALL HEX(LFUSES,H)
IF(IOP.EQ.S) CALL HEX(LFUSES,S)
IF(IOP.EQ.L) CALL BINR(LFUSES,H,L)
IF(IOP.EQ.N) CALL BINR(LFUSES,P,N)
C CALL IODC4
IF(IOP.NE.Q ) GO TO 108
STOP
END
C
C*************************************LPHASE(J)) GO TO 15
CALL INCR(IC,IL,LFIX)
15 DO 20 I=1,8
20 ISYM(I,J)=IBLANK
25 DO 30 I=1,7
30 ISYM(I,J)=ISYM(I+1,J)
ISYM(8,J)=IPAGE(IC,IL)
CALL INCR(IC,IL,LFIX)
IF( LLEFT.OR.LBLANK.OR.LAND.OR.LOR.OR.LRIG,19,-1,-1,15,11, 7,-20,
5 3, 1, 5, 9,13,17,21,25,29,-10,31,-1,27,23,19,15,11, 7,-1,-20,
6 -1, 1, 5, 9,13,17,21,25,29,-10,-1,31,27,23,19,15,11, 7, 3,-20/
IINPUT=0
IBUBL=0
IF((( LPHASE(IMATCH)).AND.(.NOT.LBUF(1))).OR.
NAME IN THE PIN LIST OR FUNCTION TABLE PIN LIST
IMPLICIT INTEGER (A-Z)
INTEGER IBUF(8,20),ISYM(8,20)
LOGICAL LMATCH
DATA C/'C'/,A/'A'/,R/'R'/,Y/'Y'/,N0/'0'/,N1/'1'/,N2/'2'/,N3/'3'/
IMATCH=0
DO 20 J=1,20
N /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
DATA IBLANK/' '/,ILEFT/'('/,IAND/'*'/,IOR/'+'/,COMENT/';'/,
1 ISLASH/'/'/,IEQUAL/'='/,IRIGHT/')'/,ICOLON/':'/
LBLANK=.FALSE.
LXOR=.FALSE.
LXNOR=.FALSE.
LX1PIN NUMBER AND
C THE INPUT LINE NUMBER FOR A SPECIFIC PAL. ADD 1 TO THE INPUT
C LINE NUMBER IF THE PIN IS A COMPLEMENT
IMPLICIT INTEGER (A-Z)
INTEGER ITABLE(20,6)
LOGICAL LPHASE(20),LBUF(20)
DATA ITABLE/
1 OR=.TRUE.
GO TO 10
34 LLEFT =( IPAGE(IC,IL).EQ.ILEFT )
LAND =( IPAGE(IC,IL).EQ.IAND )
LOR =( IPAGE(IC,IL).EQ. IOR )
LSLASH=( IPAGE(IC,IL).EQ.ISLASH )
LEQUAL=( IPAGE(IC,IL).EQ.IEQUAL )
LRIGHT=( IPAGE(IC,HT.OR.LEQUAL ) RETURN
GO TO 25
60 LFIX=.TRUE.
RETURN
END
C
C**********************************************************************
C
SUBROUTINE INCR(IC,IL,LFIX)
C THIS SUBROUTINE INCREMENTS COLUMN AND LINE POINTERS
Q.R.AND.
1 IBUF(6,1).EQ.R.AND.IBUF(7,1).EQ.Y ) IMATCH=99
IF( IBUF(8,1).EQ.N0.AND.IMATCH.EQ.99 ) IMATCH=90
IF( IBUF(8,1).EQ.N1.AND.IMATCH.EQ.99 ) IMATCH=91
IF( IBUF(8,1).EQ.N2.AND.IMATCH.EQ.99 ) IMATCH=92
IF( IBUF(8,1 LMATCH=.TRUE.
DO 10 I=1,8
10 LMATCH=LMATCH.AND.(IBUF(I,1).EQ.ISYM(I,J))
IF(LMATCH) IMATCH=J
20 CONTINUE
C MATCH CARRY WHICH IS FOUND IN THE PAL16A4
IF( IBUF(3,1).EQ.C.AND.IBUF(4,1).EQ.A.AND.IBUF(5,1).E=.FALSE.
10 IC=IC+1
IF( IC.LE.79.AND.IPAGE(IC,IL).NE.COMENT ) GO TO 30
IL=IL+1
IF(IL.LE.200) GO TO 20
WRITE(PMS,15)
15 FORMAT(/,' SOURCE FILE SIZE EXCEEDS 200 LINES')
STOP
20 IC=0
GO TO 10
3, 1, 5, 9,13,17,21,25,29,-10,31,-1,-1,-1,-1,-1,-1,-1,-1,-20,
2 3, 1, 5, 9,13,17,21,25,29,-10,31,27,-1,-1,-1,-1,-1,-1, 7,-20,
3 3, 1, 5, 9,13,17,21,25,29,-10,31,27,23,-1,-1,-1,-1,11, 7,-20,
4 3, 1, 5, 9,13,17,21,25,29,-10,31,27,23IL).EQ.IRIGHT )
RETURN
END
C
C***********************************************************************
C
SUBROUTINE MATCH(IMATCH,IBUF,ISYM)
C THIS SUBROUTINE FINDS A MATCH BETWEEN THE PIN NAME IN THE EQUATION
C AND THE PINC BLANKS AND CHARACTERS AFTER ';' ARE IGNORED
IMPLICIT INTEGER (A-Z)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LX1
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR
COMMO).EQ.N3.AND.IMATCH.EQ.99 ) IMATCH=93
RETURN
END
C
C***********************************************************************
C
SUBROUTINE IXLATE(IINPUT,IMATCH,LPHASE,LBUF,ITYPE)
C THIS SUBROUTINE FINDS A MATCH BETWEEN THE INPUT TO 10
33 IF(LXOR) LOR=.TRUE.
IF(LXNOR) LAND=.TRUE.
RETURN
32 IF( .NOT.(LX1.AND.(IPAGE(IC,IL).EQ.IOR.OR.IPAGE(IC,IL).EQ.IAND)) )
1 GO TO 34
IF( IPAGE(IC,IL).EQ.IOR ) LXOR=.TRUE.
IF( IPAGE(IC,IL).EQ.IAND ) LXN 30 IF( IPAGE(IC,IL).EQ.ICOLON.AND.(LFIX) ) RETURN
IF( IPAGE(IC,IL).NE.IBLANK ) GO TO 31
LBLANK=.TRUE.
GO TO 10
31 IF( IPAGE(IC,IL).NE.ICOLON ) GO TO 32
IF( (LXOR).OR.(LXNOR) ) GO TO 33
LX1=.TRUE.
GO
1 ((.NOT.LPHASE(IMATCH)).AND.( LBUF(1)))) IBUBL=1
IF( ITABLE(IMATCH,ITYPE).GT.0 ) IINPUT=ITABLE(IMATCH,ITYPE)+IBUBL
RETURN
END
C
C***********************************************************************
C
SUBROUTIN IIN(5,2)=INOO
IIN(6,2)=REST(1)
J=0
IL=0
30 IC=0
IL=IL+1
35 IC=IC+1
40 IF( IC.GT.80 ) GO TO 30
IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 35
J=J+1
IF(J.GT.20) GO TO 60
DO 55 I=1,8
PINFUSES,IPROD,TITLE,.FALSE.,ITYPE,
1 LPROD,IOP,IBLOW)
100 LFIX=.FALSE.
CALL INCR(IC,IL,LFIX)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE ECHO(IPAL,INOAI,I / ' ','A','+','/','B',' ',' ','A','+','B',
4 ' ',' ',' ',' ','A','/','A','+','/','B',' ',' ',' ','/','B',
5 'A',':','+',':','B',' ','A','*','/','B',' ','/','A','+','B',
6 'A',':','*',':','B',' ',' ',' ',' ','B',' ',' IMPLICIT INTEGER (A-Z)
INTEGER IPAL(4),REST(73),TITLE(80),PIN(8,20),IIN(7,2)
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
DATA IBLANK/' '/,ISTAR/'*'/
DO 10 J=1,20
DO 5 I=1,8
5 PIN(I,J0 LMATCH=LMATCH .AND. ( FIXBUF(I).EQ.TABLE(I,J) )
60 IF(LMATCH) IMATCH=J
IF(IMATCH.EQ.0) GO TO 100
IF(.NOT.LFIRST) GO TO 85
LFIRST=.FALSE.
DO 80 I=1,32
LFUSES(I,IPROD)=.TRUE.
80 E FIXSYM(LBUF,IBUF,IC,IL,LFIRST,LFUSES,IBLOW,IPROD,LFIX)
C THIS SUBROUTINE EVALUATES THE FIXED SYMBOLS FOUND IN THE
C PAL16X4 AND PAL16A4
IMPLICIT INTEGER (A-Z)
LOGICAL LBUF(20),LFUSES(32,64),LFIRST,LMATCH,LFIX
INTEGER IBUF(F,PDF
COMMON /FTEST/ IFUNCT,IDESC,IEND
WRITE(POF,10) IPAL,INOAI,IOT,INOO,REST,PATNUM,TITLE,COMP
10 FORMAT(/,' ',4A1,A1,A1,A1,73A1,/,' ',80A1,/,' ',80A1,/,' ',80A1)
DO 30 J=1,IEND
WRITE(POF,20) (IPAGE(I,J),I=1,80)
20OT,INOO,REST,PATNUM,TITLE,COMP)
C THIS SUBROUTINE PRINTS THE PAL DESIGN SPECIFICATION INPUT FILE
IMPLICIT INTEGER (A-Z)
INTEGER IPAL(4),REST(73),PATNUM(80),TITLE(80),COMP(80)
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,PO ','A','*','B',
7 ' ',' ',' ','/','A','/','A','*','/','B',' ','/','A','*','B'/
IINPUT=0
DO 20 I=1,8
IBUF(I,1)=IBLANK
20 FIXBUF(I)=IBLANK
21 CALL INCR(IC,IL,LFIX)
I=IPAGE(IC,IL)
IF(I.EQ.IRIGHT) G)=IBLANK
10 CONTINUE
15 DO 25 J=1,2
DO 20 I=1,7
20 IIN(I,J)=IBLANK
25 CONTINUE
IIN(3,1)=IPAL(1)
IIN(4,1)=IPAL(2)
IIN(5,1)=IPAL(3)
IIN(2,2)=IPAL(4)
IIN(3,2)=INOAI
IIN(4,2)=IOT
IBLOW = IBLOW + 1
85 DO 90 I=1,4
IF( (IMATCH-7).LE.0 ) GO TO 90
LFUSES(IINPUT+I,IPROD)=.FALSE.
IBLOW = IBLOW - 1
IMATCH=IMATCH-8
90 IMATCH=IMATCH+IMATCH
LBUF(1)=.TRUE.
CALL PLOT(LBUF,IBUF,L8,20),FIXBUF(8),TABLE(5,14)
COMMON /PGE/ IPAGE(80,200)
DATA A/'A'/,B/'B'/,ISLASH/'/'/,IOR/'+'/,IBLANK/' '/,IRIGHT/')'/,
1 IAND/'*'/,N/'N'/,Q/'Q'/,N0/'0'/,N1/'1'/,N2/'2'/,N3/'3'/,
2 ICOLON/':'/,
3 TABLE FORMAT(' ',80A1)
30 CONTINUE
RETURN
END
C
C***********************************************************************
C
SUBROUTINE PINOUT(IPAL,INOAI,IOT,INOO,REST,TITLE)
C THIS SUBROUTINE PRINTS THE PIN OUT OF THE PAL
EQ.IOR)
1 .OR.(I.EQ.IAND).OR.(I.EQ.ICOLON) ) ) GO TO 21
DO 30 I=1,4
30 FIXBUF(I)=FIXBUF(I+1)
FIXBUF(5)=IPAGE(IC,IL)
GO TO 21
40 IMATCH=0
DO 60 J=1,14
LMATCH=.TRUE.
DO 50 I=1,5
5O TO 40
IF(I.EQ.N0) IINPUT=8
IF(I.EQ.N1) IINPUT=12
IF(I.EQ.N2) IINPUT=16
IF(I.EQ.N3) IINPUT=20
DO 24 J=1,7
24 IBUF(J,1)=IBUF(J+1,1)
IBUF(8,1)=I
IF(.NOT. ( (I.EQ.A).OR.(I.EQ.B).OR.(I.EQ.ISLASH).OR.(I.(I,J)=IPAGE(IC,IL)
IC=IC+1
IF( IC.GT.80 ) GO TO 40
55 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 40
60 DO 75 J=1,10
II=0
65 II=II+1
IF(II.EQ.9) GO TO 75
IF( PIN(II,J).NE.IBLANK ) GO TO 65
ANK
85 CONTINUE
IF( (IOP.EQ.P).OR.(IOP.EQ.B.AND.(LPROD(IPROD+1))) )
1 WRITE(POF,90) IPROD,IOUT
90 FORMAT(' ',I2,8(' ',4A1),' ',32A1)
94 CONTINUE
WRITE(POF,96)
96 FORMAT(1X)
(LDUMP) GO TO 60
IF(ISAVE(IPROD,1).NE.IBLANK) RETURN
IF( LBUF(1) ) GO TO 5
DO 30 J=1,31
30 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,32)=ISLASH
5 DO 20 I=1,8
IF( ISAVE(IPROD,1).NE.IBLANK ) RETURN
WRITE(POF,80) ISTAR,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR
80 FORMAT(' ',9X,4A1,17X,4A1)
WRITE(POF,81) (PIN(I,J),I=1,8),ISTAR,J,ISTAR,
1 (IIN(I,1),I=1,7),ISTAR,JJ,ISTAR,(PIN(I,JJ),I= ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
65 CONTINUE
ISAVE(IPROD,32)=IBLANK
70 CONTINUE
DO 80 I=1,32
IOUT(I)=X
IF( LFUSES(I,IPROD) ) IOUT(I)=IDASH
**************************
C
SUBROUTINE PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,LDUMP,ITYPE,
1 LPROD,IOP,IBLOW)
C THIS THIS SUBROUTINE PRODUCES THE FUSE PLOT
IMPLICIT INTEGER (A-Z)
INTEGER IBUF(8,20),IOUT(64),ISAVE I=9
70 I=I-1
II=II-1
PIN(I,J)=PIN(II,J)
PIN(II,J)=IBLANK
IF(II.NE.1) GO TO 70
75 CONTINUE
WRITE(POF,76) TITLE
76 FORMAT('1',/,' ',80A1)
WRITE(POF,78) ISTAR,ISTAR,ISTAR,ISTAISAVE(IPROD,J+1)
ISAVE(IPROD,32)=IAND
RETURN
C PRINT FUSE PLOT
60 WRITE(POF,62) TITLE
62 FORMAT(/,' ',80A1,//,
1 ' 11 1111 1111 2222 2222 2233',/,
2 ' 0123 4567 8901 2345 6789 0123 4567 8901',/)
IF( IBUF(I,1).EQ.IBLANK ) GO TO 20
DO 10 J=1,31
10 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,32)=IBUF(I,1)
20 CONTINUE
IF(ISAVE(IPROD,1).NE.IBLANK) RETURN
40 DO 50 J=1,31
50 ISAVE(IPROD,J)=1,8)
81 FORMAT(' ',8A1,1X,A1,I2,A1,5X,7A1,5X,A1,I2,A1,1X,8A1)
WRITE(POF,82) ISTAR,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR
82 FORMAT(' ',9X,4A1,17X,4A1)
WRITE(POF,84) ISTAR,(IIN(I,2),I=1,7),I IOUT(I+32)=ISAVE(IPROD,I)
80 CONTINUE
IF(ITYPE.LE.4) CALL FANTOM(ITYPE,IOUT,IPROD,I8PRO)
IPROD=IPROD-1
DO 85 J=1,32
IF( IOP.EQ.B.AND.IOUT(J).EQ.HIFANT ) IOUT(J)=IBL(64,32),TITLE(80)
LOGICAL LBUF(20),LFUSES(32,64),LDUMP,LPROD(80)
COMMON /LUNIT/ PMS,POF,PDF
DATA ISAVE/2048*' '/,IAND/'*'/,IOR/'+'/,ISLASH/'/'/,
1 IDASH/'-'/,X/'X'/,IBLANK/' '/,P/'P'/,B/'B'/,
2 HIFANT/'O'/
IFR,ISTAR,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,
2 ISTAR,ISTAR,ISTAR,ISTAR
78 FORMAT(/,' ',12X,8A1,3X,8A1,
1 /,' ',12X,A1,7X,A1,1X,A1,7X,A1)
JJ=20
DO 88 J=1,10 DO 100 I88PRO=1,57,8
DO 94 I8PRO=1,8
IPROD=I88PRO+I8PRO-1
ISAVE(IPROD,32)=IBLANK
DO 70 I=1,32
IF( ISAVE(IPROD,1).NE.IBLANK ) GO TO 70
DO 65 J=1,31
AR,
1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,
2 ISTAR,ISTAR,ISTAR
90 FORMAT(' ',12X,19A1)
WRITE(POF,92)
92 FORMAT('1')
RETURN
END
C
C*********************************************STAR
84 FORMAT(' ',12X,A1,5X,7A1,5X,A1)
DO 86 II=1,2
DO 85 I=1,7
85 IIN(I,II)=IBLANK
86 CONTINUE
JJ=JJ-1
88 CONTINUE
WRITE(POF,90) ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,IST
100 CONTINUE
WRITE(POF,110)
110 FORMAT(/,
1' LEGEND: X : FUSE NOT BLOWN (L,N,0) - : FUSE BLOWN (H,P,1)')
IF( IOP.EQ.P.AND.ITYPE.LE.4 ) WRITE(POF,111)
111 FORMAT(
1' 0 : PHANTOM FUSE (L,N,0) O : PHANT
50 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+40)= (IOT.NE.L)
99 CONTINUE
RETURN
END
C
C***********************************************************************
C
SUBROUTINE BINR(LFUSES,H,L)
C THIS SUBROUTINE GENERATES
LFUSES(19,IPROD)=.TRUE.
LFUSES(20,IPROD)=.TRUE.
IF(ITYPE.GE.3) GO TO 10
LFUSES(11,IPROD)=.TRUE.
LFUSES(12,IPROD)=.TRUE.
LFUSES(23,IPROD)=.TRUE.
LFUSES(24,IPROD)=.TRUE.
/'S'/
IF(IOP.EQ.H) WRITE(PDF,10)
10 FORMAT(//,' .',//)
C***** NOTE: SOME PROM PROGRAMMERS NEED A START CHARACTER.
C***** THIS PROGRAM OUTPUTS AN STX FOR THE DATA I/O MODEL 9
C***** (USE SOTYPE.EQ.1) .OR. ((ITYPE.EQ.4).AND.(IOT.EQ.L)) ) RETURN
DO 99 IINPUT=1,32
DO 30 IPROD=1,8
LFUSES(IINPUT,IPROD+ 0)= (IOT.NE.L)
30 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+56)= (IOT.NE.L)
IF(ITYPE.LE.2) GO TO 99',//,' .',//)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE TWEEK(ITYPE,IOT,LFUSES)
C THIS SUBROUTINE TWEEKS LFUSES (THE PROGRAMMING FUSOM FUSE (H,P,1)')
WRITE(POF,112) IBLOW
112 FORMAT(/,' NUMBER OF FUSES BLOWN = ',I4)
WRITE(POF,113)
113 FORMAT(//)
RETURN
END
C
C***********************************************************************
C
SUBROUTINEFUSES(IINPUT,IPROD+4)=.FALSE.
LFUSES(IINPUT,IPROD+5)=.FALSE.
LFUSES(IINPUT,IPROD+6)=.FALSE.
12 LFUSES(IINPUT,IPROD+7)=.FALSE.
IF(ITYPE.GE.3) GO TO 18
DO 14 IPROD=17,41,8
LFUSES( IF(ITYPE.GE.2) GO TO 10
LFUSES( 7,IPROD)=.TRUE.
LFUSES( 8,IPROD)=.TRUE.
LFUSES(27,IPROD)=.TRUE.
LFUSES(28,IPROD)=.TRUE.
10 CONTINUE
DO 18 IINPUT=7,28
DO 12 IPROD=1,57,8
LH FOR MODEL 5)
WRITE(PDF,5) BEL,BEL,BEL,BEL,BEL,BEL,BEL,STX,SOH
5 FORMAT(9A1)
DO 40 I=1,33,32
INC=I-1
DO 40 IPROD=1,7,2
DO 20 J=1,2
DO 20 IINPUT=1,32
IHEX=0
IF(LFUSE
DO 40 IPROD=1,8
LFUSES(IINPUT,IPROD+ 8)= (IOT.NE.L)
40 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+48)= (IOT.NE.L)
IF(ITYPE.LE.3) GO TO 99
DO 50 IPROD=1,8
LFUSES(IINPUT,IPROD+16)= (IOT.NE.L)
E PLOT)
C FOR HIGH AND LOW PHANTOM FUSES
IMPLICIT INTEGER (A-Z)
LOGICAL LFUSES(32,64)
DATA L/'L'/,C/'C'/
IF(ITYPE.GE.4) GO TO 20
DO 10 IPROD=1,64
LFUSES(15,IPROD)=.TRUE.
LFUSES(16,IPROD)=.TRUE. HEX(LFUSES,IOP)
C THIS SUBROUTINE GENERATES HEX PROGRAMMING FORMATS
IMPLICIT INTEGER (A-Z)
INTEGER ITEMP(64)
LOGICAL LFUSES(32,64)
COMMON /LUNIT/ PMS,POF,PDF
DATA STX/Z02000000/,BEL/Z2F000000/,SOH/01000000/,H/'H'/,SIINPUT,IPROD+2)=.FALSE.
14 LFUSES(IINPUT,IPROD+3)=.FALSE.
IF(ITYPE.GE.2) GO TO 18
DO 16 IPROD=1,57,8
LFUSES(IINPUT,IPROD+2)=.FALSE.
16 LFUSES(IINPUT,IPROD+3)=.FALSE.
18 CONTINUE
20 IF( (IITEMP(IINPUT + 32*(J-1) )=IHEX
IF(IOP.EQ.H) WRITE(PDF,60) ITEMP
40 IF(IOP.EQ.S) WRITE(PDF,61) ITEMP
60 FORMAT(' ',32(Z1,' '),'.',/,' ',32(Z1,' '),'.')
61 FORMAT(' ',64Z1)
IF(IOP.EQ.H) WRITE(PDF,70)
70 FORMAT(' S(IINPUT,IPROD + J-1 + 0+INC)) IHEX=IHEX+1
IF(LFUSES(IINPUT,IPROD + J-1 + 8+INC)) IHEX=IHEX+2
IF(LFUSES(IINPUT,IPROD + J-1 +16+INC)) IHEX=IHEX+4
IF(LFUSES(IINPUT,IPROD + J-1 +24+INC)) IHEX=IHEX+8
20 BINARY PROGRAMMING FORMATS
IMPLICIT INTEGER (A-Z)
INTEGER ITEMP(4,8)
LOGICAL LFUSES(32,64)
COMMON /LUNIT/ PMS,POF,PDF
WRITE(PDF,10)
10 FORMAT(//,' .',//)
DO 20 I=1,33,32
C
SUBROUTINE TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF,
1 ITYPE,INOO,LFIX)
C THIS SUBROUTINE PERFORMS THE FUNCTION TABLE SIMULATION
C AND GENERATES TEST VECTORS
IMPLICIT INTEGER (A-Z)
INTEGER ISYM(8,20)) RETURN
IF((ITYPE.EQ.2).AND.((IPROD.LE. 8).OR.(IPROD.GE.53))) RETURN
IF((ITYPE.LE.3).AND.(I8PRO.GE.5)) RETURN
IF((ITYPE.LE.2).AND.(IPROD.GE.19).AND.(IPROD.LE.48).AND.
1 (I8PRO.GE.3)) RETURN
IF((ITYPE.EQ.1).AND.(I8PRO.GONTINUE
20 WRITE(PDF,30) ITEMP
30 FORMAT(' ',8('B',4A1,'F '))
WRITE(PDF,10)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE SLIP(LFUSES,I88PRO,INOAI,I DC2,BEL
10 FORMAT(' ',2A1)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE IODC4
C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS OFF
IMPLICIT INTEGER SUBROUTINE FANTOM(ITYPE,IOUT,IPROD,I8PRO)
C THIS SUBROUTINE UPDATES IOUT (THE PRINTED FUSE PLOT)
C FOR HIGH AND LOW PHANTOM FUSES
IMPLICIT INTEGER (A-Z)
INTEGER IOUT(64)
DATA X/'X'/,IDASH/'-'/,LOFANT/'0'/,HIFANT/'O'/
INC=I-1
DO 20 IPROD=1,8
DO 20 J=1,25,8
DO 15 K=1,8
IINPUT=J+K-1
ITEMP(1,K)=L
ITEMP(2,K)=L
ITEMP(3,K)=L
ITEMP(4,K)=L
).OR.(I.EQ. 8).OR.(I.EQ.27).OR.(I.EQ.28)).AND.
1 (ITYPE.LE.1)) GO TO 50
IF( IOUT(I).EQ.HIFANT ) IOUT(I)=IDASH
IF( IOUT(I).EQ.LOFANT ) IOUT(I)=X
50 CONTINUE
RETURN
END
C
C****************************************E.3)) RETURN
DO 50 I=1,32
IF(((I.EQ.15).OR.(I.EQ.16).OR.(I.EQ.19).OR.(I.EQ.20)).AND.
1 (ITYPE.LE.3)) GO TO 50
IF(((I.EQ.11).OR.(I.EQ.12).OR.(I.EQ.23).OR.(I.EQ.24)).AND.
1 (ITYPE.LE.2)) GO TO 50
IF(((I.EQ. 7OT,INOO,IBLOW)
C THIS SUBROUTINE WILL BLOW THE ENTIRE CONDITIONAL TRI STATE
C PRODUCT LINE WHEN 'IF(VCC)' CONDITION IS USED FOR THE
C CORRESPONDING OUTPUT PIN
IMPLICIT INTEGER (A-Z)
LOGICAL LFUSES(32,64)
DATA R/'R'/,I1 (A-Z)
COMMON /LUNIT/ PMS,POF,PDF
DATA DC3/Z37000000/,DC4/Z3C000000/,BEL/Z2F000000/
WRITE(PDF,10) BEL,DC3,DC4
10 FORMAT(' ',3A1)
RETURN
END
C
C***********************************************************************
DO 10 I=1,32
IF( IOUT(I).EQ.IDASH ) IOUT(I)=HIFANT
IF( IOUT(I).EQ.X ) IOUT(I)=LOFANT
10 CONTINUE
IF((ITYPE.EQ.4).AND.((IPROD.LE.24).OR.(IPROD.GE.41))) RETURN
IF((ITYPE.EQ.3).AND.((IPROD.LE.16).OR.(IPROD.GE.45) IF(LFUSES(IINPUT,IPROD+ 0+INC)) ITEMP(4,K)=H
IF(LFUSES(IINPUT,IPROD+ 8+INC)) ITEMP(3,K)=H
IF(LFUSES(IINPUT,IPROD+16+INC)) ITEMP(2,K)=H
IF(LFUSES(IINPUT,IPROD+24+INC)) ITEMP(1,K)=H
15 C*******************************
C
SUBROUTINE IODC2
C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS ON
IMPLICIT INTEGER (A-Z)
COMMON /LUNIT/ PMS,POF,PDF
DATA DC2/Z12000000/,BEL/Z2F000000/
WRITE(PDF,10)(I88PRO.LE.41).AND.(INOO.EQ.I4)) ) RETURN
DO 10 I=1,32
IBLOW = IBLOW + 1
10 LFUSES(I,I88PRO) = .TRUE.
I88PRO = I88PRO + 1
RETURN
END
C
C***********************************************************************
C
/'1'/,I2/'2'/,I4/'4'/,I6/'6'/,I8/'8'/
IF( (INOAI.NE.I6) .OR. (INOO.EQ.I1) .OR. (INOO.EQ.I2) .OR.
1 ( (IOT.EQ.R).AND.(INOO.EQ.I8) ) .OR.
2 ( (I88PRO.GE. 9).AND.(I88PRO.LE.49).AND.(INOO.EQ.I6) ) .OR.
3 ( (I88PRO.GE.17).AND.),ISYM1(8,20),IBUF(8,20),IVECT(20),IVECTP(20),
1 ISTATE(20),ISTATT(20),IPIN(20),TITLE(80)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LSAME,XORFND,LERR,LPHASE(20),LPHAS1(20),LBUF(20),
2 Q.14.OR.J.EQ.15.OR.J.EQ.16.OR.J.EQ.17) LENABL(I)=.FALSE.
IF( INOO.EQ.I6.AND.(J.EQ.13.OR.J.EQ.18) ) LENABL(I)=.FALSE.
IF( INOO.EQ.I8.AND.(J.EQ.12.OR.J.EQ.13
1 .OR.J.EQ.18.OR.J.EQ.19) ) LENABL(I)=.FALSE.
I=1,IMAX
IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21
GO TO 22
21 IC=IC+1
IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21
22 IVECT(I)=IPAGE(IC,IL)
IC=IC+1
20 CONTINUE
C ADVANCE LINE COUNT TO SKIP FUNCTION TABLE COMMENTST BE SUPPLIED IN ORDER TO PERFORM',
1 ' SIMULATION')
RETURN
C PRINT TITLE
3 WRITE(POF,4) TITLE
4 FORMAT(/,' ',80A1,/)
C INITIALIZE LERR (ERROR FLAG) TO NO ERROR
LERR=.FALSE.
C SET THE STARTING POINT OF T IF(ITYPE.NE.6) GO TO 25
C CHECK CLOCK AND TRI STATE ENABLE PINS AND CHANGE FLAG IF NEEDED
IF(IVECT(ICLOCK).EQ.C) LCLOCK=.TRUE.
LSAME=( ( LPHASE(11)).AND.( LPHAS1(ITRST)).OR.
1 (.NOT.LPHASE(11)).AND.(.NOT.LPHAS1(IT
IF(ITYPE.NE.6) GO TO 10
IF(IMATCH.EQ.1) ICLOCK=I
IF(IMATCH.EQ.11) ITRST=I
10 IPIN(I)=IMATCH
C ALL SIGNAL NAMES FOR THE FUNCTIONAL TEST HAVE BEEN READ IN
C ADJUST COUNT
12 IMAX=I-1
NVECT=0
C
C*****START O LOUT(20),LOUTP(20),LCLOCK,LPTRST,LCTRST,LENABL(20),NREG
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
COMMON /FTEST/ IFUNCT,IDESC,IEND
DATA IDASH/'-' GO TO 11
WRITE(PMS,8) IVECT(I)
8 FORMAT(/,' ',A1,' IS NOT AN ALLOWED FUNCTION TABLE ENTRY')
RETURN
11 CONTINUE
C INITIALIZE CLOCK AND TRI STATE ENABLE FLAGS
LCLOCK=.FALSE.
LCTRST=.TRUE.
LPTRST=.TRU
IL=IL+1
IC=1
IF(IVECT(1).EQ.IDASH) GO TO 95
C CHECK FOR VALID FUNCTION TABLE VALUES (L,H,X,Z,C)
DO 11 I=1,IMAX
IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR.
1 IVECT(I).EQ.Z.OR.IVECT(I).EQ.C)HE FUNCTION TABLE TO COLUMN 0
C AND IFUNCT + 1
IC=0
IL=IFUNCT + 1
C MAKE A DUMMY CALL TO INCR
CALL INCR(IC,IL,LFIX)
C GET THE FUNCTION TABLE PIN LIST (UP TO 18)
C GO ONE MORE THAN MAX TO LOOK FOR DASHED LINE
TRST)) )
IF( IVECT(ITRST).EQ.L.AND.(.NOT.LSAME).OR.
1 IVECT(ITRST).EQ.H.AND.( LSAME) ) LPTRST=.FALSE.
IF(LPTRST) GO TO 25
C DISABLE REGISTERED OUTPUTS IF APPROPRIATE
DO 46 I=1,IMAX
J=IPIN(I)
IF(J.EF MAIN LOOP FOR SIMULATION*****
C
90 NVECT=NVECT+1
IC1=0
IL1=ILE
C GO PASSED COMMENT LINES
23 IF(IPAGE(1,IL).NE.COMENT) GO TO 24
IL=IL+1
GO TO 23
24 CONTINUE
C GETS VECTORS FROM FUNCTION TABLE
DO 20/,L/'L'/,H/'H'/,X/'X'/,C/'C'/,Z/'Z'/,N0/'0'/,N1/'1'/,
1 IBLANK/' '/,COMENT/';'/,I6/'6'/,I8/'8'/
C PRINT AN ERROR MESSAGE IF NO FUNCTION TABLE IS SUPPLIED
IF(IFUNCT.NE.0) GO TO 3
WRITE(PMS,2)
2 FORMAT(/,' FUNCTION TABLE MUSE.
DO 13 I=1,IMAX
13 LENABL(I)=.TRUE.
C INITIALIZE NREG (NOT REGISTERED OUTPUT) TO FALSE
NREG=.FALSE.
C INITIALIZE ISTATE ARRAY TO ALL X'S
DO 15 I=1,20
15 ISTATE(I)=X
C CHECK IF THIS PAL TYPE HAS REGISTERS
)
6 FORMAT(/,' FUNCTION TABLE PIN LIST ERROR AT', 8A1)
RETURN
7 LOUT(I)=.FALSE.
ISTATT(I)=X
IVECTP(I)=X
C IF APPROPIATE PAL TYPE, REMEMBER LOCATION OF CLOCK AND TRI STATE
C ENABLE PIN IN FUNCTION TABLE PIN LIS DO 10 I=1,19
CALL GETSYM(LPHAS1,ISYM1,I,IC,IL,LFIX)
DO 5 J=1,8
5 IBUF(J,1)=ISYM1(J,I)
IF(IBUF(8,1).EQ.IDASH) GO TO 12
CALL MATCH(IMATCH,IBUF,ISYM)
IF(IMATCH.NE.0) GO TO 7
WRITE(PMS,6) (IBUF(J,1),J=1,846 CONTINUE
C
C*****SCAN THROUGH THE LOGIC EQUATIONS*****
C
C MAKE A DUMMY CALL TO INCR
25 CALL INCR(IC1,IL1,LFIX)
26 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX)
IF(LLEFT) GO TO 29
27 IF(.NOT.LEQUAL) GO TO 26
C EVALUATE CONDITIONACOMPARING CURRENT
C LINE NUMBER WITH FUNCTION TABLE LINE NUMBER
IF(IDESC.NE.0.AND.IL1.LT.IFUNCT.AND.IL1.LT.IDESC.OR.
1 IDESC.EQ.0.AND.IL1.LT.IFUNCT) GO TO 27
C DETERMINE OUTPUT LOGIC VALUES
C COMPARE OUTPUTS TO SEE IF VECTOR) ) GO TO 37
CALL MATCH(IIFB,IBUF,ISYM)
IF( IIFB.EQ.14.OR.IIFB.EQ.15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 )
1 ITEST=IVECTP(IINP)
IF( (INOO.EQ.I6.OR.INOO.EQ.I8).AND.(IIFB.EQ.13.OR.IIFB.EQ.18) )
1 ITEST=IVECTP(IINP)
IF(MATCH(IIFB,IBUF,ISYM)
IF( IIFB.EQ.14.OR.IIFB.EQ.15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 )
1 ITEST=IVECTP(IINP)
IF( INOO.EQ.I6.AND.(IIFB.EQ.13.OR.IIFB.EQ.18) )
1 ITEST=IVECTP(IINP)
36 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.OF EQUATION HAS BEEN FOUND, DETERMINE FINAL SUM AND SAVE IT
IF(.NOT.XORFND) ISTATT(IOUTP)=ISUM
IF( (XORFND).AND.((ISUM.EQ.L.AND.XORSUM.EQ.L).OR.
1 (ISUM.EQ.H.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=L
IF( (XORFND XORFND=.FALSE.
ISUM=L
28 IPROD=H
30 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX)
IF( .NOT.LFIX ) GO TO 39
C EVALUATE THE FIXED SYMBOLS FOUND IN THE PAL16X4 AND PAL16A4
LFIX=.FALSE.
CALL FIXTST(LPHAS1,LBUF,IC1,IL1,L TRI STATE PRODUCT LINE
29 IF(LEQUAL) GO TO 35
NREG=.TRUE.
33 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX)
CALL MATCH(IINP,IBUF,ISYM1)
C CHECK FOR GND, VCC, /GND, OR /VCC IN CONDITIONAL TRI STATE
C PRODUCT LINE
IF(IINP.NE.AND.( LBUF(1))
3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1))
4 ) IPROD=L
38 IF( ITEST.EQ.X.OR.ITEST.EQ.Z ) IPROD=X
IF(LRIGHT) CALL INCR(IC1,IL1,LFIX)
IF(LAND) GO TO 30
IF(ISUM.EQ.L.AND.IPROD.EQ.X) I INOO.EQ.I8.AND.(IIFB.EQ.12.OR.IIFB.EQ.19) )
1 ITEST=IVECTP(IINP)
37 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1))
1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1))
2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).( LBUF(1))
1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1))
2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1))
3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1))
4 ) LCTRST=.FALSE.
IF(ITEST).AND.((ISUM.EQ.H.AND.XORSUM.EQ.L).OR.
1 (ISUM.EQ.L.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=H
IF( (XORFND).AND. (ISUM.EQ.X.OR. XORSUM.EQ.X) ) ISTATT(IOUTP)=X
NREG=.FALSE.
C CHECK IF ALL EQUATIONS HAVE BEEN PROCESSED BY ISYM,ISYM1,IBUF,
1 IVECT,IVECTP,ITEST,LCLOCK,NREG,LFIX)
IF(IPROD.EQ.H) IPROD=ITEST
GO TO 38
39 CALL MATCH(IINP,IBUF,ISYM1)
ITEST=IVECT(IINP)
C GET FEED BACK VALUES
IF( (.NOT.LCLOCK).OR.(NREG0) GO TO 32
CALL MATCH(IINP,IBUF,ISYM)
IF( IINP.EQ.10.AND.(LBUF(1)).OR.IINP.EQ.20.AND.(.NOT.LBUF(1)) )
1 LCTRST=.FALSE.
GO TO 34
32 ITEST=IVECT(IINP)
C GET FEED BACK VALUES
IF(.NOT.LCLOCK) GO TO 36
CALL SUM=X
IF( (ISUM.NE.H).AND.IPROD.EQ.H ) ISUM=H
C CHECK FOR XOR (EXCLUSIVE OR) AND SAVE INTERMEDIATE VALUE
IF(.NOT.LXOR) GO TO 31
XORSUM=ISUM
XORFND=.TRUE.
ISUM=L
GO TO 28
31 IF(LOR) GO TO 28
C IF END P)=.TRUE.
IF( .NOT.LCTRST ) LOUT(IOUTP)=.FALSE.
LCTRST=.TRUE.
LOUTP(IOUTP)=LBUF(1)
C DETERMINE PRODUCT TERM AND EVENTUALLY SUM FOR OUTPUT KEEPING
C TRACK TO SEE IF AN XOR (EXCLUSIVE OR) HAS BEEN FOUND
XORSUM=H
.EQ.X.OR.ITEST.EQ.Z) LCTRST=.FALSE.
34 IF(LAND) GO TO 33
GO TO 27
C
C EVALUATE THE LOGIC EQUATION
C
C FIND THE PIN NUMBER OF THE OUTPUT VECTORS
35 CALL MATCH(IOUTP,IBUF,ISYM1)
IF(NREG) LENABL(IOUTP)=LCTRST
LOUT(IOUT AGREES WITH RESULTS
DO 50 I=1,IMAX
IF( .NOT.LOUT(I) ) GO TO 50
IF( ISTATT(I).EQ.X.AND.IVECT(I).EQ.X ) GO TO 50
LSAME = ( ( LOUTP(I)).AND.( LPHAS1(I)).OR.
1 (.NOT.LOUTP(I)).AND.(.NOT.LPHAS1(I)) )
IMISYM1(8,20),IBUF(8,20),IVECT(20),IVECTP(20)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR,
1 LFIX,LPHAS1(20),LBUF(20),LCLOCK,NREG,TOR,TXOR,TXNOR,TAND,
2 LPHASA,LPHASB
COMMON LBLANK,LLEFT,LAND,LOR,LSL ISTATE(I)=N1
IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.H ) ISTATE(I)=N0
IF( ( LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=L
J,I),J=1,8)
41 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 ' EXPECT = H ACTUAL = L')
IF(IMESS.EQ.42) WRITE(PMS,42) NVECT,(ISYM1(J,I),J=1,8)
42 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
GO TO 90
C TERMINATE SIMULATION
95 IF(.NOT.LERR) WRITE(POF,67)
67 FORMAT(/,' PASS SIMULATION')
RETURN
END
C
C***********************************************************************
C
SUBROUTINE FIXTST(LPHAS1,LBUF,ICME=( ( LPHASE(I)).AND.( LPHAS1(J)).OR.
1 (.NOT.LPHASE(I)).AND.(.NOT.LPHAS1(J)) )
IF( INOO.EQ.N1.AND.(I.EQ.15.OR.I.EQ.16) ) LOUT(J)=.TRUE.
IF( (.NOT.LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.ESS=40
IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.L.AND.(.NOT.LSAME)) IMESS=41
IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.H.AND.(.NOT.LSAME)) IMESS=42
IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.H.AND.( LSAME)) IMESS=42
IF(ISTATT(I).EQ.H.AND.IVECT(I).ED.(.NOT.LSAME).AND.
1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=L
GO TO 65
55 CONTINUE
C SAVE PRESENT VECTORS FOR FEED BACK USED WITH NEXT SET OF VECTORS
C IF CLOCK PULSE AND NOT Z (Z WOULD BE AN UNREALISTIC VALU IF( ( LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=H
IF( ( LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=H
IF( ( LOUT(J)).AN 1 ' EXPECT = L ACTUAL = H')
IF(IMESS.EQ.43) WRITE(PMS,43) NVECT,(ISYM1(J,I),J=1,8)
43 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 /,' EXPECT = OUTPUT ENABLE ACTUAL = Z')
IF(IMESS.EQ.44) WRI1,IL1,ISYM,ISYM1,IBUF,
1 IVECT,IVECTP,ITEST,LCLOCK,NREG,LFIX)
C THIS SUBROUTINE EVALUATES THE FIXED SYMBOLS FOUND IN THE
C PAL16X4 AND PAL16A4 FOR THE FUNCTION TABLE
IMPLICIT INTEGER (A-Z)
INTEGER ISYM(8,20),L ) ISTATE(I)=N0
IF( (.NOT.LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.H ) ISTATE(I)=N1
IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.L ) Q.L.AND.( LSAME)) IMESS=41
IF( ( LENABL(I)).AND.IVECT(I).EQ.Z ) IMESS=43
IF( (.NOT.LENABL(I)).AND.(LOUT(I)).AND.IVECT(I).NE.Z) IMESS=44
IF(IMESS.NE.40) LERR=.TRUE.
IF(IMESS.EQ.41) WRITE(PMS,41) NVECT,(ISYM1(E)
65 IF( (LCLOCK).AND.IVECT(J).NE.Z ) IVECTP(J)=IVECT(J)
C ASSIGN X TO GROUND PIN AND 1 TO VCC PIN
ISTATE(10)=X
ISTATE(20)=N1
C PRINT TEST VECTORS
WRITE(POF,60) NVECT,(ISTATE(I),I=1,20)
60 FORMAT(' ',I2,' ',20A1)
NCTION TABLE TO THAT OF THE PIN LIST AND TWEEK FOR OUTPUT
DO 65 I=1,20
DO 55 J=1,IMAX
IF(IPIN(J).NE.I) GO TO 55
IF( IVECT(J).EQ.L.OR.IVECT(J).EQ.H ) GO TO 51
ISTATE(I)=IVECT(J)
GO TO 65
51 LSATE(PMS,44) NVECT,(ISYM1(J,I),J=1,8),IVECT(I)
44 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 ' EXPECT = Z ACTUAL = ',A1)
50 CONTINUE
C CHANGE THE ORDER OF VECTORS FROM THE ORDER OF APPEARANCE IN THE
C FUASH,LEQUAL,LRIGHT,LXOR,LXNOR
COMMON /PGE/ IPAGE(80,200)
DATA L/'L'/,H/'H'/,X/'X'/,Z/'Z'/
C GET OUTPUT PIN AN (WHERE N=0,1,2,3)
CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX)
CALL MATCH(IINP,IBUF,ISYM1)
ITESTA=IVECT(IINP)
* AND, PRODUCT
C + OR, SUM
C :+: EXCLUSIVE OR
C () CONDITIONAL THREE STATE
C MERS.
C
C INPUT: PAL DESIGN SPECIFICATION ASSIGNED
C TO RPD(1). OPERATION CODES ARE
C ASSIGNED TO ROP(5).
C
C OUTPUT: ECHO, GO TO 25
ITEST=ITESTA
RETURN
C SAVE THE FIXED SYMBOL OPERATORS
25 TOR = (LOR.AND.(.NOT.LXOR))
TXOR = (LXOR)
TXNOR = (LXNOR)
TAND = (LAND.AND.(.NOT.LXNOR))
C GET INPUT BN (WHERE N=0,1,2,3)
C A = B*C + D
C
C A := B*C + D
C
C IF( A*B ) C = D + E
C
C ALL CHARACTERS FOLLOWING ';' ARE
C (TAND).AND.(ITESTA.NE.L.AND.ITESTB.NE.L) ) ITEST=H
IF( (ITESTA.EQ.X.OR.ITESTA.EQ.Z).AND.(ITESTB.EQ.X) ) ITEST=X
RETURN
END
C
C***********************************************************************
C
>ENT LOGIC, AND
C LPHASA = ( ( LBUF(1)).AND.( LPHAS1(IINP)).OR.
1 (.NOT.LBUF(1)).AND.(.NOT.LPHAS1(IINP)) )
C GET FEED BACK VALUES
IF( (.NOT.LCLOCK).OR.(NREG) ) GO TO 5
CALL MATCH(IIFB,IBUF,ISYM)
IF( IIFB.EQ.14.OR.IIFB.EQ. ERROR MESSAGES ARE ASSIGNED TO
C PMS(6).
C
C PART NUMBER: THE PAL PART NUMBER MUST
C APPEAR IN COLUMN ONE OF LINE ONE
C
C SIMULATION, AND FUSE PATTERN
C ARE ASSIGNED TO POF(6). HEX AND
C BINARY PROGRAMMING FORMATS ARE
C ASSIGNED TO PDF(6). PROMPTS AND
C CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX)
CALL MATCH(IINP,IBUF,ISYM1)
ITESTB=IVECT(IINP)
LPHASB = ( ( LBUF(1)).AND.( LPHAS1(IINP)).OR.
1 (.NOT.LBUF(1)).AND.(.NOT.LPHAS1(IINP)) )
IF( (.NOT.LPHASB).AND.ITEST IGNORED UNTIL THE NEXT LINE
C
C BLANKS ARE IGNORED
C
C OPERATORS: ( IN HIERARCHY OF EVALUATION )
C
C / COMPLEMENT
C
C**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24*
C
C P A L A S M 2 4 - TRANSLATES SYMBOLIC EQUATIONS INTO PAL OBJECT
C CODE FORMATTED FOR DIRECT INPUT TO STANDARD
C PROM PROGRAM15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 )
1 ITESTA=IVECTP(IINP)
5 IF( (.NOT.LPHASA).AND.ITESTA.EQ.L ) GO TO 10
IF( (.NOT.LPHASA).AND.ITESTA.EQ.H ) GO TO 15
GO TO 20
10 ITESTA=H
GO TO 20
15 ITESTA=L
20 IF( .NOT.LRIGHT ) PIN LIST: 24 SYMBOLIC PIN NAMES MUST APPEAR
C STARTING ON LINE 5
C
C EQUATIONS: STARTING FIRST LINE AFTER THE
C PIN LIST IN THE FOLLOWING FORMS:
CST=H
IF( (TXOR).AND.((ITESTA.EQ.H.AND.ITESTB.NE.H).OR.
1 (ITESTA.NE.H.AND.ITESTB.EQ.H) )) ITEST=H
IF( (TXNOR).AND.((ITESTA.EQ.ITESTB).OR.
1 (ITESTA.EQ.X.OR.ITESTB.EQ.X) )) ITEST=H
IF(B.EQ.L ) GO TO 30
IF( (.NOT.LPHASB).AND.ITESTB.EQ.H ) GO TO 35
GO TO 40
30 ITESTB=H
GO TO 40
35 ITESTB=L
C EVALUATE THE FIXED SYMBOL EXPRESSION
40 ITEST=L
IF( (TOR).AND.(ITESTA.EQ.H.OR. ITESTB.EQ.H) ) ITE = EQUALITY
C := REPLACED BY (AFTER CLOCK)
C
C
C SUBROUTINES: INITLZ,GETSYM,INCR,MATCH,IXLATE,
C ECHO,PINOUT,PLOT,HEX,TWEEK,BINR,
C LINE NUMBER OF THE PAL DESIGN SPECIFICATION
16 IEND=J-1
CALL INITLZ(INAME,ITYPE,LFUSES,IC,IL,IBLOW)
C PRINT ERROR MESSAGE FOR INVALID PAL PART TYPE
IF(ITYPE.NE.0) GO TO 17
WRITE(PMS,18) IPAL,INAME
18 FORMAT(/,' PAL PART TC INITIALIZE LSAME AND LACT TO FALSE (ACTIVE HIGH/LOW ERROR)
LSAME=.FALSE.
LACT=.FALSE.
C INITIALIZE LOPERR TO FALSE (OUTPUT PIN ERROR)
LOPERR=.FALSE.
C HEADER WILL BE PRINTED IF LHEAD IS TRUE
C CHANGE THIS STATEMENTE APPLICATIONS
C SECTION ON A VAX/VMS COMPUTER
C AND A NATIONAL CSS IBM SYSTEM/370
C FORTRAN IV(G).
C
C******************************************* 5 IPAGE(12,J).EQ.BB.AND.IPAGE(14,J).EQ.EE ) IFUNCT=J
C CHECK FOR 'DESCRIPTION' AND SAVE ITS LINE NUMBER
IF( IDESC.EQ.0 .AND.IPAGE(1,J).EQ.DD.AND.
1 IPAGE(2,J).EQ.EE.AND.IPAGE(3,J).EQ.SS.AND.
2 IPAG'/,CC/'C'/,DD/'D'/,EE/'E'/,FF/'F'/,II/'I'/,NN/'N'/,
1 OO/'O'/,PP/'P'/,RR/'R'/,SS/'S'/,TT/'T'/,UU/'U'/
C
C
C ASSIGNMENT OF DATA SET REFERENCES
C RPD - PAL DESIGN SPECIFICATION (INPUT)
C ROC - OPERATION CODE (INPUT)
C POF - E SLIP,FANTOM,IODC2,IONC4,TEST
C
C
C REV LEVEL: 06/15/81
C
C FINE PRINT: MONOLITHIC MEMORIES TAKES NO
C RESPONSIBILITY FOR THE OPERATION
C THROUGH THE END OF THE PAL DESIGN
C SPECIFICATION
DO 15 J=1,200
READ(RPD,11,END=16) (IPAGE(I,J),I=1,80)
11 FORMAT(80A1)
C CHECK FOR 'FUNCTION TABLE' AND SAVE ITS LINE NUMBER
IF( IFUNCT.EQ.0 .AND.IPAG SO LHEAD IS FALSE IF NO HEADER IS DESIRED
LHEAD=.FALSE.
C READ IN FIRST 4 LINES OF PAL DESIGN SPECIFICATION
READ(RPD,10) IPAL,INAME,REST,PATNUM,TITLE,COMP
10 FORMAT(3A1,5A1,72A1,/,80A1,/,80A1,/,80A1)
C READ IN PIN LIST (LINE 5)****************************
C
C
C***********************************************************************
C
C
C MAIN PROGRAM
C
IMPLICIT INTEGER (A-Z)
INTEGER IPAL(3),INAME(5),REST(72),PATNUM(80),TITLE(80),COMP(80),
1 IE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.RR.AND.
3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.PP.AND.
4 IPAGE(8,J).EQ.TT.AND.IPAGE(9,J).EQ.II.AND.
5 IPAGE(10,J).EQ.OO.AND.IPAGE(11,J).EQ.NN ) IDESC=J
15 CONTINUE
C SAVE THE LASTCHO, PINOUT, SIMULATION, AND FUSE PATTERN (OUTPUT)
C PDF - HEX AND BINARY FORMAT PROGRAM TAPES (OUTPUT)
C PMS - PROMPTS AND ERROR MESSAGES (OUTPUT)
RPD=1
ROC=5
POF=6
PDF=6
PMS=6
IFUNCT=0
IDESC=0
OR MAINTENANCE OF THIS PROGRAM.
C THE SOURCE CODE AS PRINTED HERE
C PRODUCED THE OBJECT CODE OF THE
C EXAMPLES IN THE(1,J).EQ.FF.AND.
1 IPAGE(2,J).EQ.UU.AND.IPAGE(3,J).EQ.NN.AND.
2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.TT.AND.
3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.OO.AND.
4 IPAGE(8,J).EQ.NN.AND.IPAGE(10,J).EQ.TT.AND.
AL,LRIGHT,LXOR
COMMON /PGE/ IPAGE(80,200)
COMMON /FTEST/ IFUNCT,IDESC,IEND
COMMON /LUNIT/ PMS,POF,PDF
DATA E/'E'/,O/'O'/,T/'T'/,P/'P'/,B/'B'/,D/'D'/,H/'H'/,S/'S'/,
1 L/'L'/,N/'N'/,Q/'Q'/,U/'U'/,F/'F'/
DATA BB/'BSYM(8,24),IBUF(8,24),JPROD(80)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LFIRST,
1 LMATCH,LFUSES(40,80),LPHASE(24),LBUF(24),LPROD(80),
2 LSAME,LACT,LOPERR,LHEAD
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUYPE ',3A1,5A1,' IS INCORRECT')
STOP
C GET 24 PIN NAMES
17 DO 20 J=1,24
20 CALL GETSYM(LPHASE,ISYM,J,IC,IL)
IF(.NOT.(LEQUAL.OR.LLEFT.OR.LAND.OR.LOR.OR.LRIGHT)) GO TO 24
WRITE(PMS,23)
23 FORMAT(/,PROGRAMMING OF THE',/,' SERIES 24 PAL FAMILY. THE',
2 ' FOLLOWING OPTIONS ARE PROVIDED:',
3 //,' ECHO (E) - PRINTS THE PAL DESIGN',
4 ' SPECIFICATION',
5 //,' PIN OUT (O) - PRINTS THE PIN OUT OFNPUT,LPHASE,IMATCH,LBUF,ITYPE)
IF(IINPUT.LE.0) GO TO 60
IBLOW = IBLOW - 1
LFUSES(IINPUT,IPROD)=.FALSE.
CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.FALSE.,ITYPE,
1 LPROOR.ITYPE.EQ.9.OR.
1 ITYPE.EQ.10).AND.(IMATCH.LT.14.OR.IMATCH.GT.23) )
2 LOPERR=.TRUE.
IF( (ITYPE.EQ.2.OR.ITYPE.EQ.11.OR.ITYPE.EQ.12.OR.ITYPE.EQ.13
1 .OR.ITYPE.EQ.14).AND.(IMATCH.LT.15.OR.IMATCH.GT.22) )
E
103 FORMAT(' OUTPUT MUST BE INVERTED SINCE ',3A1,5A1,
1 ' IS AN ACTIVE LOW DEVICE')
C PRINT AN ERROR MESSAGE FOR AN INVALID OUTPUT PIN
IF( (LOPERR).AND.IMATCH.NE.0 ) WRITE(PMS,105) IMATCH,IPAL,INAME
105 FORMAT(' THIS PIN, NUI8PRO - 1
LPROD(IPROD)=.TRUE.
LFIRST=.TRUE.
50 ILL=IL
CALL GETSYM(LBUF,IBUF,1,IC,IL)
CALL MATCH(IMATCH,IBUF,ISYM)
IF(IMATCH.EQ.0) GO TO 100
IF(I ' LESS THAN 24 PIN NAMES IN PIN LIST')
STOP
24 ILE=IL
25 CALL GETSYM(LBUF,IBUF,1,IC,IL)
28 IF(.NOT.LEQUAL) GO TO 25
CALL MATCH(IMATCH,IBUF,ISYM)
C CHECK FOR VALID POLARITY (ACTIVE LOW)
LSAME = IL
CALL GETSYM(LBUF,IBUF,1,IC,IL)
IF(LLEFT.OR.LEQUAL) GO TO 28
100 IF( ILL.EQ.IFUNCT.OR.ILL.EQ.IDESC.OR.ILL.EQ.IEND ) GO TO 102
C PRINT AN ERROR MESSAGE FOR AN UNRECOGNIZABLE SYMBOL
ILERR=ILL+4
WRITE(PMS,101) (IBD,IOP,IBLOW)
60 IF(LAND) GO TO 50
64 IF(.NOT.LRIGHT) GO TO 68
66 CALL INCR(IC,IL)
IF(.NOT.LEQUAL) GO TO 66
68 IF( .NOT.(LOR.OR.LEQUAL) ) GO TO 74
70 CONTINUE
74 ILL=
2 LOPERR=.TRUE.
IF( ITYPE.EQ.3.AND.(IMATCH.LT.16.OR.IMATCH.GT.21) )
1 LOPERR=.TRUE.
IF( ITYPE.EQ.4.AND.(IMATCH.LT.17.OR.IMATCH.GT.20) )
1 LOPERR=.TRUE.
IF( (ITYPE.EQ.5.OR.ITYPE.MBER ',I2,' IS AN INVALID OUTPUT PIN',
1 ' FOR ',3A1,5A1)
STOP
102 CALL TWEEK(ITYPE,LFUSES)
C PRINT OPTIONAL HEADER
IF(LHEAD) WRITE(PMS,104)
104 FORMAT(/,' THIS PALASM AIDS THE USER IN THE DESIGN AND'
1 ' MATCH.EQ.12) GO TO 64
IF(.NOT.LFIRST) GO TO 58
LFIRST=.FALSE.
DO 56 I=1,40
IBLOW = IBLOW + 1
56 LFUSES(I,IPROD)=.TRUE.
58 CALL IXLATE(II( ( LPHASE(IMATCH)).AND.( LBUF(1)).OR.
1 (.NOT.LPHASE(IMATCH)).AND.(.NOT.LBUF(1)) )
IF( ITYPE.NE.6.AND.(LSAME) ) LACT=.TRUE.
C CHECK FOR VALID OUTPUT PIN
29 IF( (ITYPE.EQ.1.OR.ITYPE.EQ.7.OR.ITYPE.EQ.8.UF(I,1),I=1,8),ILERR,(IPAGE(I,ILL),I=1,80)
101 FORMAT(/,' ERROR SYMBOL = ',8A1,' IN LINE NUMBER ',I3,
1 /,' ',80A1)
C PRINT AN ERROR MESSAGE FOR ACTIVE HIGH/LOW ERRORS
IF( (LACT).AND.(.NOT.LOPERR) ) WRITE(PMS,103) IPAL,INAM
IC=0
30 CALL INCR(IC,IL)
IF( .NOT.(LEQUAL.OR.LLEFT) ) GO TO 30
LPROD(I88PRO)=.TRUE.
IF(.NOT.LLEFT) CALL SLIP(LFUSES,I88PRO,ITYPE,IBLOW)
DO 70 I8PRO=1,16
IPROD = I88PRO + EQ.6).AND.
1 (IMATCH.LT.18.OR.IMATCH.GT.19) ) LOPERR=.TRUE.
ILL=IL
IF( (LACT).OR.(LOPERR) ) GO TO 100
I88PRO=(23-IMATCH)*8 + 1
C START PAL20C1 ON PRODUCT LINE 33
IF(INAME(3).EQ.C) I88PRO=33
THE PAL',
6 //,' SIMULATE (T) - EXERCISES THE FUNCTION TABLE',
7 ' VECTORS IN THE LOGIC',/,' EQUATIONS',
8 ' AND GENERATES TEST VECTORS',
9 //,' PLOT (P) - PRINTS THE ENTIRE FUSPE=INFO(6,J)
IF (LMATCH) GO TO 50
40 CONTINUE
IF(ITYPE.EQ.0) RETURN
50 CALL INCR(IC,IL)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE GETSYM(LPHASE,ISYM,JICIT INTEGER (A-Z)
INTEGER INAME(5),INFO(6,14)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LFUSES(40,80),
1 LMATCH,LXOR
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON /PGE/ IPAGE(80,200)
E',
H //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE',
J //,' QUIT (Q) - EXIT PALASM')
108 WRITE(PMS,106)
106 FORMAT(/,' OPERATION CODES:')
WRITE(PMS,107)
107 FORMAT(/,' E=ECHO INPUT O=PIN OUT T=S1
C INITIALIZE ITYPE (PAL PART TYPE)
ITYPE=0
C ITYPE IS ASSIGNED THE FOLLOWING VALUES FOR THESE PAL TYPES:
C PAL12L10 = 1 PAL14L8 = 2 PAL16L6 = 3 PAL18L4 = 4
C PAL20L2 = 5 PAL20C1 = 6 PAL20L10 = 7 PAL20X10 LPROD,IOP,IBLOW)
IF(IOP.EQ.H) CALL HEX(LFUSES,H)
IF(IOP.EQ.S) CALL HEX(LFUSES,S)
IF(IOP.EQ.L) CALL BINR(LFUSES,H,L)
IF(IOP.EQ.N) CALL BINR(LFUSES,P,N)
C CALL IODC4
IF(IOP.NE.Q ) GO TO 108
SE PLOT',
A //,' BRIEF (B) - PRINTS ONLY THE USED PRODUCT LINES',
B ' OF THE FUSE PLOT',/,' PHANTOM FUSES',
C ' ARE OMITTED',
D //,' DATA I/O (D) - GENERATES FUSE OUTPUT FOR DATA I,
8 '2','0','X','1','0',8,
9 '2','0','X','8',' ',9,
A '2','0','X','4',' ',10,
B '2','0','L','8',' ',11,
C '2','0','R','8',' ',12,
D '2','0','R','6',' ',13,
E '2','0','R','4',' ',14/
C DATA INFO/
1 '1','2','L','1','0',1,
2 '1','4','L','8',' ',2,
3 '1','6','L','6',' ',3,
4 '1','8','L','4',' ',4,
5 '2','0','L','2',' ',5,
6 '2','0','C','1',' ',6,
7 '2','0','L','1','0',7IMULATE P=PLOT B=BRIEF',
1 /,' D=DATA I/O H=HEX S=SHORT L=BHLF N=BNPF Q=QUIT')
WRITE(PMS,110)
110 FORMAT(/,' ENTER OPERATION CODE:')
READ(ROC,120) IOP
120 FORMAT(A1)
C CALL IODC2
IF(IOP.EQ.E) CALL ECHO(IP = 8
C PAL20X8 = 9 PAL20X4 = 10 PAL20L8 = 11 PAL20R8 = 12
C PAL20R6 = 12 PAL20R4 = 14
DO 40 J=1,14
LMATCH=.TRUE.
DO 30 I=1,4
30 IF(INAME(I).NE.INFO(I,J)) LMATCH=.FALSE.
IF(LMATCH) ITYTOP
END
C
C***********************************************************************
C
SUBROUTINE INITLZ(INAME,ITYPE,LFUSES,IC,IL,IBLOW)
C THIS SUBROUTINE INITIALIZIES VARIABLES AND MATCHES PAL PART
C NUMBER WITH ITYPE
IMPL/O',
E ' PROGRAMMERS',
F //,' HEX (H) - GENERATES HEX OUTPUT FOR PAPER TAPE',
G //,' SHORT (S) - GENERATES HEX OUTPUT FOR PAPER TAPE',
H //,' BHLF (L) - GENERATES BHLF OUTPUT FOR PAPER TAP INITIALIZE LFUSES ARRAY (FUSE ARRAY)
DO 20 J=1,80
DO 20 I=1,40
20 LFUSES(I,J)=.FALSE.
C INITIALIZE IBLOW (NUMBER OF FUSES BLOWN)
IBLOW=0
C INITIALIZE IC AND IL (COLUMN AND LINE POINTERS)
IC=0
IL=TYPE,
1 LPROD,IOP,IBLOW)
IF(IOP.EQ.B) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE,
1 LPROD,IOP,IBLOW)
IF(IOP.EQ.D) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE,
1 AL,INAME,REST,PATNUM,TITLE,COMP)
IF(IOP.EQ.O) CALL PINOUT(IPAL,INAME,TITLE)
IF(IOP.EQ.T) CALL TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF,
1 ITYPE)
IF(IOP.EQ.P) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,I,IC,IL)
C THIS SUBROUTINE GETS THE PIN NAME, / IF COMPLEMENT LOGIC, AND
C THE FOLLOWING OPERATION SYMBOL IF ANY
IMPLICIT INTEGER (A-Z)
INTEGER ISYM(8,24)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LPHASE(24)
,15,11, 7,3,0,
9 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0,
A 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0,
B 3,1,5,9,13,17,21,25,29,33,37,0,39,35, 0,31,27,23,19,15,11, 0,7,0,
C 0,1,5,9,13,**************************
C
SUBROUTINE MATCH(IMATCH,IBUF,ISYM)
C THIS SUBROUTINE FINDS A MATCH BETWEEN THE PIN NAME IN THE EQUATION
C AND THE PIN NAME IN THE PIN LIST OR FUNCTION TABLE PIN LIST
IMPLICIT INTEGER (A-Z)
INTEG ) RETURN
GO TO 25
END
C
C**********************************************************************
C
SUBROUTINE INCR(IC,IL)
C THIS SUBROUTINE INCREMENTS COLUMN AND LINE POINTERS
C BLANKS AND CHARACTERS AFTER ';' ARE IGNORED, 0,0,0,
2 3,1,5,9,13,17,21,25,29,33,37,0,39,35, 0, 0, 0, 0, 0, 0, 0, 0,7,0,
3 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31, 0, 0, 0, 0, 0, 0,11,7,0,
4 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31,27, 0, 0, 0, 0,15,11,7,0,
5 3,1,5,9,13,17,21,NE.ICOLON) GO TO 32
IF(LXOR) GO TO 33
LXOR1=.TRUE.
GO TO 10
33 LOR=.TRUE.
RETURN
32 IF( .NOT.(IPAGE(IC,IL).EQ.IOR.AND.(LXOR1)) ) GO TO 34
LXOR=.TRUE.
GO TO 10
34 LLEFT =(IPAGE(IC,IL).EQ.ILEFT)
LA COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON /PGE/ IPAGE(80,200)
DATA IBLANK/' '/
IF( .NOT.(LLEFT.OR.LAND.OR.LOR.OR.LEQUAL.OR.LRIGHT) ) GO TO 10
CALL INCR(IC,IL)
10 LPHASE(J)=(.NOT.LSLASH)
IF(LP END
C
C***********************************************************************
C
SUBROUTINE IXLATE(IINPUT,LPHASE,IMATCH,LBUF,ITYPE)
C THIS SUBROUTINE FINDS A MATCH BETWEEN INPUT PIN NUMBER AND
C THE INPUT LINE NUMBER FOR A SPECIFIER IBUF(8,24),ISYM(8,24)
LOGICAL LMATCH
IMATCH=0
DO 20 J=1,24
LMATCH=.TRUE.
DO 10 I=1,8
10 LMATCH=LMATCH.AND.(IBUF(I,1).EQ.ISYM(I,J))
IF(LMATCH) IMATCH=J
20 CONTINUE
RETURN
IMPLICIT INTEGER (A-Z)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXOR1
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
DATA IBLANK/' '/,I25,29,33,37,0,39,35,31,27,23, 0, 0,19,15,11,7,0,
6 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31,27,23, 0, 0,19,15,11,7,0,
7 3,1,5,9,13,17,21,25,29,33,37,0,39, 0,35,31,27,23,19,15,11, 7,0,0,
8 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19ND =(IPAGE(IC,IL).EQ.IAND)
LOR =(IPAGE(IC,IL).EQ.IOR)
LSLASH=(IPAGE(IC,IL).EQ.ISLASH)
LEQUAL=(IPAGE(IC,IL).EQ.IEQUAL)
LRIGHT=(IPAGE(IC,IL).EQ.IRIGHT)
RETURN
END
C
C*********************************************HASE(J)) GO TO 15
CALL INCR(IC,IL)
15 DO 20 I=1,8
20 ISYM(I,J)=IBLANK
25 DO 30 I=1,7
30 ISYM(I,J)=ISYM(I+1,J)
ISYM(8,J)=IPAGE(IC,IL)
CALL INCR(IC,IL)
IF( LLEFT.OR.LBLANK.OR.LAND.OR.LOR.OR.LRIGHT.OR.LEQUALC PAL. ADD 1 TO THE INPUT
C LINE NUMBER IF THE PIN IS A COMPLEMENT
IMPLICIT INTEGER (A-Z)
INTEGER ITABLE(24,14)
LOGICAL LPHASE(24),LBUF(24)
DATA ITABLE/
1 3,1,5,9,13,17,21,25,29,33,37,0,39, 0, 0, 0, 0, 0, 0, 0, 0
IF(IL.LE.200) GO TO 20
WRITE(PMS,15)
15 FORMAT(/,' SOURCE FILE EXCEEDS 200 LINES')
STOP
20 IC=0
GO TO 10
30 IF(IPAGE(IC,IL).NE.IBLANK) GO TO 31
LBLANK=.TRUE.
GO TO 10
31 IF(IPAGE(IC,IL).LEFT/'('/,IAND/'*'/,IOR/'+'/,COMENT/';'/,
1 ISLASH/'/'/,IEQUAL/'='/,IRIGHT/')'/,ICOLON/':'/
LBLANK=.FALSE.
LXOR=.FALSE.
LXOR1=.FALSE.
10 IC=IC+1
IF( IC.LE.79.AND.IPAGE(IC,IL).NE.COMENT ) GO TO 30
IL=IL+1
17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0,
D 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0,
E 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0/
IBUBL=0
IF( (( LPHASE(IMATCH)).AND.********************
C
SUBROUTINE PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,LDUMP,ITYPE,LPROD,
1 IOP,IBLOW)
C THIS SUBROUTINE PRODUCES THE FUSE PLOT
IMPLICIT INTEGER (A-Z)
INTEGER IBUF(8,24),IOUT(64),ISAVE(80,40),TIT I=9
70 I=I-1
II=II-1
PIN(I,J)=PIN(II,J)
PIN(II,J)=IBLANK
IF(II.NE.1) GO TO 70
75 CONTINUE
WRITE(POF,76) TITLE
76 FORMAT('1',/,' ',80A1)
WRITE(POF,78) ISTAR,ISTAR,ISTAR,ISTAR,ISTART/ PMS,POF,PDF
COMMON /FTEST/ IFUNCT,IDESC,IEND
WRITE(POF,10) IPAL,INAME,REST,PATNUM,TITLE,COMP
10 FORMAT(/,' ',3A1,5A1,72A1,/,' ',80A1,/,' ',80A1,/,' ',80A1)
DO 30 J=1,IEND
WRITE(POF,20) (IPAGE(I,J),I=1,80)
20 F 84 FORMAT(' ',12X,A1,5X,7A1,5X,A1)
DO 86 II=1,2
DO 85 I=1,7
85 IIN(I,II)=IBLANK
86 CONTINUE
JJ=JJ-1
88 CONTINUE
WRITE(POF,90) ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,
INAME(4)
IIN(6,2)=INAME(5)
J=0
IL=0
30 IC=0
IL=IL+1
35 IC=IC+1
40 IF( IC.GT.80 ) GO TO 30
IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 35
J=J+1
IF(J.GT.24) GO TO 60
DO 55 I=1,8
PIN(I,J)=I(.NOT.LBUF(1))).OR.
1 ((.NOT.LPHASE(IMATCH)).AND.( LBUF(1))) ) IBUBL=1
IINPUT=ITABLE(IMATCH,ITYPE)+IBUBL
RETURN
END
C
C***********************************************************************
C
SUBROUTINE ECHO(IPA WRITE(POF,80) ISTAR,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR,
80 FORMAT(' ',9X,4A1,17X,4A1)
WRITE(POF,81) (PIN(I,J),I=1,8),ISTAR,J,ISTAR,
1 (IIN(I,1),I=1,7),ISTAR,JJ,ISTAR,(PIN(I,JJ),I=1,8)
,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,
2 ISTAR,ISTAR,ISTAR,ISTAR
78 FORMAT(/,' ',12X,8A1,3X,8A1,
1 /,' ',12X,A1,7X,A1,1X,A1,7X,A1)
JJ=24
DO 88 J=1,12
ORMAT(' ',80A1)
30 CONTINUE
RETURN
END
C
C***********************************************************************
C
SUBROUTINE PINOUT(IPAL,INAME,TITLE)
C THIS SUBROUTINE PRINTS THE PIN OUT OF THE PAL
IMPLICIT INTEGER 1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,
2 ISTAR,ISTAR,ISTAR
90 FORMAT(' ',12X,19A1)
WRITE(POF,92)
92 FORMAT('1')
RETURN
END
C
C***************************************************PAGE(IC,IL)
IC=IC+1
IF( IC.GT.80 ) GO TO 40
55 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 40
60 DO 75 J=1,12
II=0
65 II=II+1
IF(II.EQ.9) GO TO 75
IF( PIN(II,J).NE.IBLANK ) GO TO 65
L,INAME,REST,PATNUM,TITLE,COMP)
C THIS SUBROUTINE PRINTS THE PAL DESIGN SPECIFICATION INPUT FILE
IMPLICIT INTEGER (A-Z)
INTEGER IPAL(3),INAME(5),REST(72),PATNUM(80),TITLE(80),COMP(80)
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNI 81 FORMAT(' ',8A1,1X,A1,I2,A1,5X,7A1,5X,A1,I2,A1,1X,8A1)
WRITE(POF,82) ISTAR,ISTAR,ISTAR,ISTAR,
1 ISTAR,ISTAR,ISTAR,ISTAR
82 FORMAT(' ',9X,4A1,17X,4A1)
WRITE(POF,84) ISTAR,(IIN(I,2),I=1,7),ISTAR
NUE
15 DO 25 J=1,2
DO 20 I=1,7
20 IIN(I,J)=IBLANK
25 CONTINUE
IIN(3,1)=IPAL(1)
IIN(4,1)=IPAL(2)
IIN(5,1)=IPAL(3)
IIN(2,2)=INAME(1)
IIN(3,2)=INAME(2)
IIN(4,2)=INAME(3)
IIN(5,2)= (A-Z)
INTEGER IPAL(3),INAME(5),TITLE(80),PIN(8,24),IIN(7,2)
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
DATA IBLANK/' '/,ISTAR/'*'/
DO 10 J=1,24
DO 5 I=1,8
5 PIN(I,J)=IBLANK
10 CONTILE(80),IDATA(40)
LOGICAL LBUF(24),LFUSES(40,80),LDUMP,LPROD(80)
COMMON /LUNIT/ PMS,POF,PDF
DATA ISAVE/3200*' '/,IAND/'*'/,IOR/'+'/,ISLASH/'/'/,
1 IDASH/'-'/,X/'X'/,IBLANK/' '/,P/'P'/,B/'B'/,
2 D/'D'/,ZERO/'0'/,ONE/'','14','15','16','17',
5 '18','19','1A','1B','1C','1D','1E','1F'/
IF(IOP.EQ.H) WRITE(PDF,10)
10 FORMAT(//,80(' '),//)
C***** NOTE: SOME PROM PROGRAMMERS NEED A START CHARACTER.
C***** THIS PROGRAM OUTPUTS AN STX FOR THE INUE
DO 83 I=1,40
IF( (IOUT(I).EQ.X).OR.(IOUT(I).EQ.IDASH) ) GO TO 86
83 CONTINUE
GO TO 94
86 WRITE(PDF,84) IDATA
84 FORMAT(' ',40(A1,' '))
GO TO 94
85 (IPROD,1).NE.IBLANK) RETURN
40 DO 50 J=1,39
50 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,40)=IAND
RETURN
C PRINT FUSE PLOT
58 IF(IOP.EQ.D) GO TO 62
60 WRITE(POF,61) TITLE
61 FORMAT(/,' ',80A1,//,
1 ' ***********************************************
C
SUBROUTINE HEX(LFUSES,IOP)
C THIS SUBROUTINE GENERATES HEX PROGRAMMING FORMATS
IMPLICIT INTEGER (A-Z)
INTEGER ITEMP(80),ITABLE(32)
LOGICAL LFUSES(40,80)
COMMON /LUNIANK ) IOUT(64)=IDASH
DO 80 I=1,40
IOUT(I)=X
IF(LFUSES(I,IPROD)) IOUT(I)=IDASH
80 CONTINUE
CALL FANTOM(ITYPE,IOP,IOUT,IPROD,I8PRO)
IF(IOP.NE.D) GO TO 85
1'/,FX/'0'/,FIDASH/'O'/,
3 STX/Z02000000/,ETX/Z03000000/
IF(LDUMP) GO TO 58
IF(ISAVE(IPROD,1).NE.IBLANK) RETURN
IF(LBUF(1)) GO TO 5
DO 30 J=1,39
30 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,40)=ISLASH
CONTINUE
IF(IOP.NE.D) GO TO 105
WRITE(PDF,101) ETX
101 FORMAT(' ',A1)
RETURN
105 WRITE(POF,110)
110 FORMAT(/,
1' LEGEND: X : FUSE NOT BLOWN (L,N,0) - : FUSE BLOWN (H,P,1)')
IF(IOP.EQ.P) WRITE(POF,111)
IPROD=IPROD-1
IF( (IOP.EQ.P).OR.(IOP.EQ.B.AND.(LPROD(IPROD+1))) )
1 WRITE(POF,90) IPROD,IOUT
90 FORMAT(' ',I2,10(' ',4A1),' ',24A1)
94 CONTINUE
WRITE(POF,96)
96 FORMAT(1X)
100 11 1111 1111 2222 2222 2233 3333 3333',/,
2 ' 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789',/)
GO TO 64
C STX DETERMINES THE STARTING CHARACTER FOR DATA I/O FORMAT
62 WRITE(PDF,63) STX
63 FORMAT(' ',A1,'*L0000'/)T/PMS,POF,PDF
DATA STX/Z02000000/,BEL/Z2F000000/,SOH/Z01000000/,
1 H/'H'/,S/'S'/,
2 ITABLE/'00','01','02','03','04','05','06','07',
3 '08','09','0A','0B','0C','0D','0E','0F',
4 '10','11','12','13 K=0
81 DO 82 I=1,40
IF((IOUT(I).EQ.FX).OR.(IOUT(I).EQ.FIDASH)) GO TO 82
K=K+1
IF(IOUT(I).EQ.X) IDATA(K)=ZERO
IF(IOUT(I).EQ.IDASH) IDATA(K)=ONE
82 CONT
5 DO 20 I=1,8
IF( ISAVE(IPROD,1).NE.IBLANK ) RETURN
IF( IBUF(I,1).EQ.IBLANK ) GO TO 20
DO 10 J=1,39
10 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,40)=IBUF(I,1)
20 CONTINUE
IF(ISAVE 111 FORMAT(
1' 0 : PHANTOM FUSE (L,N,0) O : PHANTOM FUSE (H,P,1)')
WRITE(POF,112) IBLOW
112 FORMAT(/,' NUMBER OF FUSES BLOW = ',I4)
WRITE(POF,113)
113 FORMAT(//)
RETURN
END
C
C************************ ISAVE(IPROD,J)=ISAVE(IPROD,J+1)
ISAVE(IPROD,40)=IBLANK
70 CONTINUE
DO 75 I=1,24
IOUT(I+40)=ISAVE(IPROD,I)
75 CONTINUE
IF( ISAVE(IPROD,25).NE.IBL
64 DO 100 I88PRO=1,73,8
DO 94 I8PRO=1,8
IPROD=I88PRO+I8PRO-1
ISAVE(IPROD,40)=IBLANK
DO 70 I=1,40
IF( ISAVE(IPROD,1).NE.IBLANK ) GO TO 70
DO 65 J=1,39
65 DATA I/O MODEL 9
C***** (USE SOH FOR MODEL 5)
WRITE(PDF,5) BEL,BEL,BEL,BEL,BEL,BEL,BEL,STX,SOH
5 FORMAT(9A1)
DO 40 I=1,41,40
INC=I-1
DO 40 IPROD=1,7,2
DO 20 J=1,2
DO 20 IINPUT=1,40
.',//)
DO 20 I=1,41,40
INC=I-1
DO 20 IPROD=1,8
DO 20 J=1,49,10
DO 15 K=1,10
IINPUT=J+K-1
ITEMP(1,K)=L
ITEMP(2,K)=L
ITEMP(3,K)=L
*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX,
5 2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,8*1HX,
6 14*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX,
6 2*1HP,12*1HX,
7 18*1HX,2*1HP,2*1HX,2*1HP,16*1HX/
END
C
C****************************S) WRITE(PDF,61) ITEMP
61 FORMAT(4(' ',20A2,'.',/))
IF(IOP.EQ.H) WRITE(PDF,70)
70 FORMAT(//,80(' '),//)
RETURN
END
C
C***********************************************************************
C
BLOCK DATA
IMP
1 LFUSES(COL,FUSPTR)=.FALSE.
20 CONTINUE
FUSPTR=FUSPTR+1
30 CONTINUE
RETURN
END
C
C***********************************************************************
C
SUBROUTINE BINR(LFUSES,H,L)
C ,2,2,2,2,
3 3,3,3,3,3,3,3,3,
4 4,4,3,3,3,3,3,3,
5 5,5,3,3,3,3,3,3,
6 5,5,5,5,3,3,3,3,
7 6,6,6,6,3,3,3,3,
8 6,6,3,3,3,3,3,3,
9 7,7,7,7,7,7,3,3,
A 7,7,7,7,3,3,3,3,
B 1, IHEX=0
IF(LFUSES(IINPUT,IPROD + J-1 + 0+INC)) IHEX=IHEX+1
IF(LFUSES(IINPUT,IPROD + J-1 + 8+INC)) IHEX=IHEX+2
IF(LFUSES(IINPUT,IPROD + J-1 +16+INC)) IHEX=IHEX+4
IF(LFUSES(IINPUT,IPROD + JLEFT,LAND,LOR,LSLASH,
1 LEQUAL,LRIGHT,LXOR
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7)
DATA P/'P'/,N/'N'/
FUSPTR=1
DO 30 OUTPUT=1,10
G*******************************************
C
SUBROUTINE TWEEK(ITYPE,LFUSES)
C THIS SUBROUTINE TWEEKS LFUSES (THE PROGRAMMING FUSE PLOT)
C FOR HIGH AND LOW PHANTOM FUSES
IMPLICIT INTEGER (A-Z)
LOGICAL LFUSES(40,80),LBLANK,LLICIT INTEGER (A-Z)
COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7)
DATA PR8X10/
1 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2 3, 6, 5, 5, 5, 5, 5, 5, 6, 3,
3 3, 3, 7, 7, 8, 8, 7, 7, 3, 3,
4 3, 3, 3, 9,10,1 THIS SUBROUTINE GENERATES BINARY PROGRAMMING FORMATS
IMPLICIT INTEGER (A-Z)
INTEGER ITEMP(5,10)
LOGICAL LFUSES(40,80)
COMMON /LUNIT/ PMS,POF,PDF
WRITE(PDF,10)
10 FORMAT(//,' 1,1,1,3,3,3,3/
DATA PRODLN/
1 40*1HX,
2 40*1HP,
3 40*1HN,
4 6*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX,
4 2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,
4 2*1HX,2*1HP,4*1HX,
5 10*1HX,2-1 +24+INC)) IHEX=IHEX+8
IF(LFUSES(IINPUT,IPROD + J-1 +32+INC)) IHEX=IHEX+16
20 ITEMP(IINPUT + 40*(J-1) )=ITABLE(IHEX+1)
IF(IOP.EQ.H) WRITE(PDF,60) ITEMP
60 FORMAT(4(' ',20(A2,' '),'.',/))
40 IF(IOP.EQ.RTYPE=PR8X10(OUTPUT,ITYPE)
DO 30 PRLINE=1,8
LNTYPE=PROD8(PRLINE,GRTYPE)
DO 20 COL=1,40
IF(PRODLN(COL,LNTYPE).EQ.P)
1 LFUSES(COL,FUSPTR)=.TRUE.
IF(PRODLN(COL,LNTYPE).EQ.N)
,11,11,11,11,11,
B 3, 1, 1, 1, 1, 1, 1, 1, 1, 3,
C 3, 1, 1, 1, 1, 1, 1, 1, 1, 3,
D 3, 1, 1, 1, 1, 1, 1, 1, 1, 3,
E 3, 1, 1, 1, 1, 1, 1, 1, 1, 3/
DATA PROD8/
1 1,1,1,1,1,1,1,1,
2 2,2,2,20, 9, 3, 3, 3,
5 3, 3, 3, 3, 1, 1, 3, 3, 3, 3,
6 2, 2, 2, 2, 1, 1, 3, 3, 3, 3,
7 11,11,11,11,11,11,11,11,11,11,
8 11,11,11,11,11,11,11,11,11,11,
9 11,11,11,11,11,11,11,11,11,11,
A 11,11,11,11,11 ITEMP(4,K)=L
ITEMP(5,K)=L
IF(LFUSES(IINPUT,IPROD+ 0+INC)) ITEMP(5,K)=H
IF(LFUSES(IINPUT,IPROD+10+INC)) ITEMP(4,K)=H
IF(LFUSES(IINPUT,IPROD+20+INC)) ITEMP(3,K)=H
ICK,LPTRST,LCTRST,LENABL(24),NREG
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON /PGE/ IPAGE(80,200)
COMMON /LUNIT/ PMS,POF,PDF
COMMON /FTEST/ IFUNCT,IDESC,IEND
DATA IDASH/'-'/,L/'L'/,H/'H'/,X/'X'/,C/'C'/,ZO 10 COL=1,40
IF( PRODLN(COL,LNTYPE).EQ.P.AND.IOP.EQ.P ) IOUT(COL)=HIFANT
IF( PRODLN(COL,LNTYPE).EQ.P.AND.IOP.EQ.B ) IOUT(COL)=IBLANK
IF( PRODLN(COL,LNTYPE).EQ.N ) IOUT(COL)=LOFANT
10 CONTINUE
RETURN
HE
C CORRESPONDING OUTPUT PIN
IMPLICIT INTEGER (A-Z)
INTEGER IENABL(10,14)
LOGICAL LFUSES(40,80)
C 1=ENABLED OUTPUT. 0=ANYTHING ELSE FOR THAT OUTPUT
DATA IENABL/
1 0,0,0,0,0,0,0,0,0,0,
2 0,0,0,0,*******************
C
SUBROUTINE TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF,ITYPE)
C THIS SUBROUTINE PERFORMS THE FUNCTION TABLE SIMULATION
C AND GENERATES TEST VECTORS
IMPLICIT INTEGER (A-Z)
INTEGER ISYM(8,24),ISYM1(8,24),TES IOUT (THE PRINTED FUSE PLOT)
C FOR HIGH AND LOW PHANTOM FUSES
IMPLICIT INTEGER (A-Z)
INTEGER IOUT(64)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR
F(LFUSES(IINPUT,IPROD+30+INC)) ITEMP(2,K)=H
IF(LFUSES(IINPUT,IPROD+40+INC)) ITEMP(1,K)=H
15 CONTINUE
20 WRITE(PDF,30) ITEMP
30 FORMAT(' ',10('B',5A1,'F '))
WRITE(PDF,10)
RETURN
ENDATA DC2/Z12000000/,BEL/Z2F000000/
WRITE(PDF,10) DC2,BEL
10 FORMAT(' ',2A1)
RETURN
END
C
C***********************************************************************
C
SUBROUTINE IODC4
C*****THIS ROUTINE IS OPTIONAL, IT MAY B END
C
C***********************************************************************
C
SUBROUTINE IODC2
C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS ON
IMPLICIT INTEGER (A-Z)
COMMON /LUNIT/ PMS,POF,PDF
D0,0,0,0,0,0,
3 0,0,0,0,0,0,0,0,0,0,
4 0,0,0,0,0,0,0,0,0,0,
5 0,0,0,0,0,0,0,0,0,0,
6 0,0,0,0,0,0,0,0,0,0,
7 1,1,1,1,1,1,1,1,1,1,
8 0,0,0,0,0,0,0,0,0,0,
9 1,0,0,0,0,0,0,0,0,1,
A IBUF(8,24),IVECT(24),IVECTP(24),
1 ISTATE(24),ISTATT(24),IPIN(24),TITLE(80)
LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LSAME,
1 XORFND,LERR,LPHASE(24),LPHAS1(24),LBUF(24),LOUT(24),
2 LOUTP(24),LCLO COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7)
DATA B/'B'/,N/'N'/,P/'P'/,LOFANT/'0'/,HIFANT/'O'/,IBLANK/' '/
C GET OUTPUT GROUPING
OUTPUT=(IPROD-1)/8+1
GRTYPE=PR8X10(OUTPUT,ITYPE)
LNTYPE=PROD8(I8PRO,GRTYPE)
D
C
C***********************************************************************
C
SUBROUTINE SLIP(LFUSES,I88PRO,ITYPE,IBLOW)
C THIS SUBROUTINE WILL BLOW THE ENTIRE CONDITIONAL TRI STATE
C PRODUCT LINE WHEN 'IF(VCC)' CONDITION IS USED FOR TE USED TO TURN PERIPHERALS OFF
IMPLICIT INTEGER (A-Z)
DATA DC3/Z37000000/,DC4/Z3C000000/,BEL/Z2F000000/
WRITE(PDF,10) BEL,DC3,DC4
10 FORMAT(' ',3A1)
RETURN
END
C
C**************************************************** IBLOW + 1
10 LFUSES(I,I88PRO) = .TRUE.
I88PRO = I88PRO + 1
RETURN
END
C
C***********************************************************************
C
SUBROUTINE FANTOM(ITYPE,IOP,IOUT,IPROD,I8PRO)
C THIS SUBROUTINE UPDA1,1,1,0,0,0,0,1,1,1,
B 0,1,1,1,1,1,1,1,1,0,
C 0,0,0,0,0,0,0,0,0,0,
D 0,1,0,0,0,0,0,0,1,0,
E 0,1,1,0,0,0,0,1,1,0/
IOUT=(I88PRO-1)/8+1
IF(IENABL(IOUT,ITYPE).EQ.0) RETURN
DO 10 I=1,40
IBLOW =/'Z'/,N0/'0'/,
1 N1/'1'/,IBLANK/' '/,COMENT/';'/
C PRINT AN ERROR MESSAGE IF NO FUNCTION TABLE IS SUPPLIED
IF(IFUNCT.NE.0) GO TO 3
WRITE(PMS,2)
2 FORMAT(/,' FUNCTION TABLE MUST BE SUPPLIED IN ORDER TO PERFORM',
1 .EQ.23) ) LENABL(I)=.FALSE.
46 CONTINUE
C
C*****SCAN THROUGH THE LOGIC EQUATIONS*****
C
C MAKE A DUMMY CALL TO INCR
25 CALL INCR(IC1,IL1)
26 CALL GETSYM(LBUF,IBUF,1,IC1,IL1)
IF(LLEFT) GO TO 29
27 IF(.NOT.LEQUAL) GO TO 26
C 1 IVECT(I).EQ.Z.OR.IVECT(I).EQ.C) GO TO 11
WRITE(PMS,8) IVECT(I)
8 FORMAT(/,' ',A1,' IS NOT AN ALLOWED FUNCTION TABLE ENTRY')
RETURN
11 CONTINUE
C INITIALIZE CLOCK AND TRI STATE ENABLE FLAGS
LCLOCK=.FAIL)
DO 5 J=1,8
5 IBUF(J,1)=ISYM1(J,I)
IF(IBUF(8,1).EQ.IDASH) GO TO 12
CALL MATCH(IMATCH,IBUF,ISYM)
IF(IMATCH.NE.0) GO TO 7
WRITE(PMS,6) (IBUF(J,1),J=1,8)
6 FORMAT(/,' FUNCTION TABLE PIN LIST ERROR AT', 8AST=.FALSE.
IF(LPTRST) GO TO 25
C DISABLE REGISTERED OUTPUTS IF APPROPRIATE
DO 46 I=1,IMAX
J=IPIN(I)
IF(J.EQ.17.OR.J.EQ.18.OR.J.EQ.19.OR.J.EQ.20) LENABL(I)=.FALSE.
IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.1ETS VECTORS FROM FUNCTION TABLE
DO 20 I=1,IMAX
IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21
GO TO 22
21 IC=IC+1
IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21
22 IVECT(I)=IPAGE(IC,IL)
IC=IC+1
20 CONTINUE
C ADVANC ' SIMULATION')
RETURN
C PRINT TITLE
3 WRITE(POF,4) TITLE
4 FORMAT(/,' ',80A1,/)
C INITIALIZE LERR (ERROR FLAG) TO NO ERROR
LERR=.FALSE.
C SET THE STARTING POINT OF THE FUNCTION TABLE TO COLUMN 0
C AND IFUNC CHECK IF THIS PAL TYPE HAS REGISTERS
IF( .NOT.(ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.10.OR.
1 ITYPE.EQ.12.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14) ) GO TO 25
C CHECK CLOCK AND TRI STATE ENABLE PINS AND CHANGE FLAG IF NEEDED
IF(IVLSE.
LCTRST=.TRUE.
LPTRST=.TRUE.
DO 13 I=1,IMAX
13 LENABL(I)=.TRUE.
C INITIALIZE NREG (NOT REGISTERED OUTPUT) TO FALSE
NREG=.FALSE.
C INITIALIZE ISTATE ARRAY TO ALL X'S
DO 15 I=1,24
15 ISTATE(I)=X
C 1)
RETURN
7 LOUT(I)=.FALSE.
ISTATT(I)=X
IVECTP(I)=X
C IF APPROPIATE PAL TYPE, REMEMBER LOCATION OF CLOCK AND TRI STATE
C ENABLE PIN IN FUNCTION TABLE PIN LIST
IF( .NOT.(ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12.OR.
1 ITYPE.EQ.13).AND.(J.EQ.16.OR.J.EQ.21) ) LENABL(I)=.FALSE.
IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12).AND.
1 (J.EQ.15.OR.J.EQ.22) ) LENABL(I)=.FALSE.
IF( ITYPE.EQ.8.AND.(J.EQ.14.OR.JE LINE COUNT TO SKIP FUNCTION TABLE COMMENTS
IL=IL+1
IC=1
IF(IVECT(1).EQ.IDASH) GO TO 95
C CHECK FOR VALID FUNCTION TABLE VALUES (L,H,X,Z,C)
DO 11 I=1,IMAX
IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR.
T + 1
IC=0
IL=IFUNCT + 1
C MAKE A DUMMY CALL TO INCR
CALL INCR(IC,IL)
C GET THE FUNCTION TABLE PIN LIST (UP TO 22)
C GO ONE MORE THAN MAX TO LOOK FOR DASHED LINE
DO 10 I=1,23
CALL GETSYM(LPHAS1,ISYM1,I,IC,ECT(ICLOCK).EQ.C) LCLOCK=.TRUE.
LSAME=( ( LPHASE(13)).AND.( LPHAS1(ITRST)).OR.
1 (.NOT.LPHASE(13)).AND.(.NOT.LPHAS1(ITRST)) )
IF( IVECT(ITRST).EQ.L.AND.(.NOT.LSAME).OR.
1 IVECT(ITRST).EQ.H.AND.( LSAME) ) LPTR12 IMAX=I-1
NVECT=0
C
C*****START OF MAIN LOOP FOR SIMULATION*****
C
90 NVECT=NVECT+1
IC1=0
IL1=ILE
C GO PASSED COMMENT LINES
23 IF(IPAGE(1,IL).NE.COMENT) GO TO 24
IL=IL+1
GO TO 23
24 CONTINUE
C G0.OR.
1 ITYPE.EQ.12.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14) ) GO TO 10
IF(IMATCH.EQ.1) ICLOCK=I
IF(IMATCH.EQ.13) ITRST=I
10 IPIN(I)=IMATCH
C ALL SIGNAL NAMES FOR THE FUNCTIONAL TEST HAVE BEEN READ IN
C ADJUST COUNT
EVALUATE CONDITIONAL TRI STATE PRODUCT LINE
29 IF(LEQUAL) GO TO 35
NREG=.TRUE.
33 CALL GETSYM(LBUF,IBUF,1,IC1,IL1)
CALL MATCH(IINP,IBUF,ISYM1)
C CHECK FOR GND, VCC, /GND, OR /VCC IN CONDITIONAL TRI STATE
C PRODUCT LINE
1 IDESC.EQ.0.AND.IL1.LT.IFUNCT) GO TO 27
C DETERMINE OUTPUT LOGIC VALUES
C COMPARE OUTPUTS TO SEE IF VECTOR AGREES WITH RESULTS
DO 50 I=1,IMAX
IF(.NOT.LOUT(I)) GO TO 50
IF(ISTATT(I).EQ.X.AND.IVECT(I).EQ.X) GO TO 50
T=IVECTP(IINP)
IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12).AND.
1 (IIFB.EQ.15.OR.IIFB.EQ.22) ) ITEST=IVECTP(IINP)
IF( ITYPE.EQ.8.AND.(IIFB.EQ.14.OR.IIFB.EQ.23) )
1 ITEST=IVECTP(IINP)
37 IF(IIFB.EQ.16.OR.IIFB.EQ.21) )
1 ITEST=IVECTP(IINP)
IF( ITYPE.EQ.9.AND.(IIFB.EQ.15.OR.IIFB.EQ.22) )
1 ITEST=IVECTP(IINP)
36 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1))
1.OR. ITEST.EQ.H.AND.( LPHAS1(IIAND.((ISUM.EQ.L.AND.XORSUM.EQ.L).OR.
1 (ISUM.EQ.H.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=L
IF( (XORFND).AND.((ISUM.EQ.H.AND.XORSUM.EQ.L).OR.
1 (ISUM.EQ.L.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=H
IF( (XORFNDM(LBUF,IBUF,1,IC1,IL1)
CALL MATCH(IINP,IBUF,ISYM1)
ITEST=IVECT(IINP)
C GET FEED BACK VALUES
IF( (.NOT.LCLOCK).OR.(NREG) ) GO TO 37
CALL MATCH(IIFB,IBUF,ISYM)
IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.10.OR.ITYPE.EQ.1
IF(IINP.NE.0) GO TO 32
CALL MATCH(IINP,IBUF,ISYM)
IF( IINP.EQ.12.AND.(LBUF(1)).OR.IINP.EQ.24.AND.(.NOT.LBUF(1)) )
1 LCTRST=.FALSE.
GO TO 34
32 ITEST=IVECT(IINP)
C GET FEED BACK VALUES
IF(.NOT.LCLOCK) GO
4 ) IPROD=L
IF(ITEST.EQ.X.OR.ITEST.EQ.Z) IPROD=X
IF(LAND) GO TO 30
IF(ISUM.EQ.L.AND.IPROD.EQ.X) ISUM=X
IF( (ISUM.NE.H).AND.IPROD.EQ.H ) ISUM=H
C CHECK FOR XOR (EXCLUSIVE OR) AND SAVE INTERMEDIATE VALUE
IF(.( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1))
1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1))
2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1))
3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1)) NP)).AND.(.NOT.LBUF(1))
2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1))
3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1))
4 ) LCTRST=.FALSE.
IF(ITEST.EQ.X.OR.ITEST.EQ.Z) LCTRST=.FALSE.
34 IF(LAND) GO TO ).AND. (ISUM.EQ.X.OR. XORSUM.EQ.X) ) ISTATT(IOUTP)=X
NREG=.FALSE.
C CHECK IF ALL EQUATIONS HAVE BEEN PROCESSED BY COMPARING CURRENT
C LINE NUMBER WITH FUNCTION TABLE LINE NUMBER
IF(IDESC.NE.0.AND.IL1.LT.IFUNCT.AND.IL1.LT.IDESC.OR.2.OR.
1 ITYPE.EQ.13.OR.ITYPE.EQ.14).AND.(IIFB.EQ.17.OR.IIFB.EQ.18.OR.
2 IIFB.EQ.19.OR.IIFB.EQ.20) ) ITEST=IVECTP(IINP)
IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12.OR.ITYPE.EQ.13).AND.
1 (IIFB.EQ.16.OR.IIFB.EQ.21) ) ITESTO 36
CALL MATCH(IIFB,IBUF,ISYM)
IF( (ITYPE.EQ.9.OR.ITYPE.EQ.10.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14).AND.
1 (IIFB.EQ.17.OR.IIFB.EQ.18.OR.IIFB.EQ.19.OR.IIFB.EQ.20) )
2 ITEST=IVECTP(IINP)
IF( (ITYPE.EQ.9.OR.ITYPE.EQ.13).AND.NOT.LXOR) GO TO 31
XORSUM=ISUM
XORFND=.TRUE.
ISUM=L
GO TO 28
31 IF(LOR) GO TO 28
C IF END OF EQUATION HAS BEEN FOUND, DETERMINE FINAL SUM AND SAVE IT
IF(.NOT.XORFND) ISTATT(IOUTP)=ISUM
IF( (XORFND).LCTRST=.TRUE.
LOUTP(IOUTP)=LBUF(1)
C DETERMINE PRODUCT TERM AND EVENTUALLY SUM FOR OUTPUT KEEPING
C TRACK TO SEE IF AN XOR (EXCLUSIVE OR) HAS BEEN FOUND
XORSUM=H
XORFND=.FALSE.
ISUM=L
28 IPROD=H
30 CALL GETSY33
GO TO 27
C
C EVALUATE THE LOGIC EQUATION
C
C FIND PIN NUMBER OF THE OUTPUT VECTORS
35 CALL MATCH(IOUTP,IBUF,ISYM1)
IF(NREG) LENABL(IOUTP)=LCTRST
LOUT(IOUTP)=.TRUE.
IF( .NOT.LCTRST ) LOUT(IOUTP)=.FALSE.
LSAME = ( ( LOUTP(I)).AND.( LPHAS1(I)).OR.
1 (.NOT.LOUTP(I)).AND.(.NOT.LPHAS1(I)) )
IMESS=40
IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.L.AND.(.NOT.LSAME)) IMESS=41
IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.H.AND.(.NOT.LSååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååI)=N0
IF( ( LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=L
IF( ( LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=H
IF( ( IF(IMESS.EQ.42) WRITE(PMS,42) NVECT,(ISYM1(J,I),J=1,8)
42 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 ' EXPECT = L ACTUAL = H')
IF(IMESS.EQ.43) WRITE(PMS,43) NVECT,(ISYM1(J,I),J=1,8)
43 FORMAT(/,' FUNCT END
> //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE',
J //,' QUIT (Q) - EXIT PALASM') GO TO 90
C TERMINATE SIMULATION
95 IF(.NOT.LERR) WRITE(POF,67)
67 FORMAT(/,' PASS SIMULATION')
RETURN
E.EQ.6.AND.(I.EQ.18.OR.I.EQ.19) ) LOUT(J)=.TRUE.
IF( (.NOT.LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.L ) ISTATE(I)=N0
IF( (.NOT.LOUT(J)).AND.( LSAME).AND.
1 IVECT(J).EQ.H ) AME)) IMESS=42
IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.H.AND.( LSAME)) IMESS=42
IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.L.AND.( LSAME)) IMESS=41
IF( ( LENABL(I)).AND.IVECT(I).EQ.Z ) IMESS=43
IF( (.NOT.LENABL(I))SAVE PRESENT VECTORS FOR FEED BACK USED WITH NEXT SET OF VECTORS
C IF CLOCK PULSE AND NOT Z (Z WOULD BE AN UNREALISTIC VALUE)
65 IF( (LCLOCK).AND.IVECT(J).NE.Z ) IVECTP(J)=IVECT(J)
C ASSIGN X TO GROUND PIN AND 1 TO VCC PIN
ISTATE(12)= LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=H
IF( ( LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=L
GO TO 65
55 CONTINUE
C ION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 /,' EXPECT = OUTPUT ENABLE ACTUAL = Z')
IF(IMESS.EQ.44) WRITE(PMS,44) NVECT,(ISYM1(J,I),J=1,8),IVECT(I)
44 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå ISTATE(I)=N1
IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.L ) ISTATE(I)=N1
IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND.
1 IVECT(J).EQ.H ) ISTATE(.AND.(LOUT(I)).AND.IVECT(I).NE.Z ) IMESS=44
IF(IMESS.NE.40) LERR=.TRUE.
IF(IMESS.EQ.41) WRITE(PMS,41) NVECT,(ISYM1(J,I),J=1,8)
41 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1,
1 ' EXPECT = H ACTUAL = L')
X
ISTATE(24)=N1
C PRINT TEST VECTORS
WRITE(POF,60) NVECT,(ISTATE(I),I=1,24)
60 FORMAT(' ',I2,' ',24A1)
GO TO 90
C TERMINATE SIMULATION
95 IF(.NOT.LERR) WRITE(POF,67)
67 FORMAT(/,' PASS SIMULATION')
RETURN
I) GO TO 55
IF( IVECT(J).EQ.L.OR.IVECT(J).EQ.H ) GO TO 51
ISTATE(I)=IVECT(J)
GO TO 65
51 LSAME=( ( LPHASE(I)).AND.( LPHAS1(J)).OR.
1 (.NOT.LPHASE(I)).AND.(.NOT.LPHAS1(J)) )
IF( ITYP ' EXPECT = Z ACTUAL = ',A1)
50 CONTINUE
C CHANGE THE ORDER OF VECTORS FROM THE ORDER OF APPEARANCE IN THE
C FUNCTION TABLE TO THAT OF THE PIN LIST AND TWEEK FOR OUTPUT
DO 65 I=1,24
DO 55 J=1,IMAX
IF(IPIN(J).NE.
PAL16R8 PAL DESIGN SPECIFICATION
BBCD SHLOMO WASER 01/06/78
BINARY TO BCD CONVERTER
MMI SUNNYVALE, CALIFORNIA
CLK /CLR CIN /C10 /C11 /C12 /C13 NC NC GND
/OC /B13 /B12 C L L H X X L H X X X X X X X X X X CLEAR
C L L L L L L H X X X X X X X X X X
C L L L L H L H X X X X X X X X X X
C L L L H H H L X X TT /JKC /JKT VCC
JKT := J*/JKT*/CLR ;J-K FLIP-FLOP (TRUE)
+ /K* JKT*/CLR ;JKT = Q
+ PR ;PRESET Q
JKC := /J* K */PR ;J-K FLIP-FLOP (COMPLEMENT)
+ /J*/JKT*/PR ;JKC = /Q
+ K* JKT* /CLR*/B12* B11
+ /CLR* B13*/B10
B13 := /CLR* B12*/B11*/B10
+ /CLR* B13* B10
FUNCTION TABLE
CIN C10 C11 C12 C13 /CLR CLK /OC B13 B12 B11 B10 B03 B02 B01 B00
;-INPUT- CONTROL -OUTPUT- COMMENT
; CARRY / /
;C CCCC ;PRESET Q
FUNCTION TABLE
CLK /OC PR CLR J K JKT JKC T TT TC D DT DC S R SRT SRC
; CONTROL J-K FLIP-FLOP T FLIP-FLOP D FLIP-FLOP S-R FLIP-FLOP
; C / IN OUT IN OUT IN OUT IN OUT
;LK OC PR åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå/B11 /B10 /B03 /B02 /B01 /B00 VCC
B00 := /CLR* CIN
+ /CLR* C13
+ /CLR* C12* C10
+ /CLR* C12* C11
B01 := /CLR*/B03*/B02* B00
+ /CLR* B03*/B00
+ /CLR* B02* B01*/B00
B02 := /CLR* B01* B00
+ /CLR*/B02* B01
PR ;TC = /Q
+ CLR ;CLEAR /Q
DT := D*/CLR ;DATA FLIP-FLOP (TRUE) DT = Q
+ PR ;PRESET Q
DC := /D*/PR ;DATA FLIP-FLOP (COMPLEMENT) (DC = /Q)
+ CLR ;CLEAR/PR ;
+ CLR ;CLEAR /Q
TT := T*/TT*/CLR ;TRIGGER FLIP-FLOP (TRUE)
+ /T* TT*/CLR ;TT = Q
+ PR ;PRESET Q
TC := /T*/TT*/PR ;TRIGGER FLIP-FLOP (COMPLEMENT)
+ T* TT*/ C C O BBBBBBBB
;I 1111 L L C 11110000
;N 0123 R K 32103210
---------------------------------------------------------
L LLLL H C L LLLLLLLL SERIAL INPUT A L
H LLLL H C L LLLLLLLH SERIAL INPUT A H
H LLLL CLR J K Q /Q T Q /Q D Q /Q S R Q /Q COMMENT
-------------------------------------------------------------------------------
X H X X X X Z Z X Z Z X Z Z X X Z Z HI-Z
; TEST J-K FLIP-FLOP
PAL16R8 PAL DESIGN SPECIFICATION
BFLIP VINCENT COLI 07/19/81
BASIC CLOCKED FLIP-FLOPS
MMI SUNNYVALE, CALIFORNIA
CLK J K T PR CLR D S R GND
/OC /SRC /SRT /DC /DT /TC / + /CLR* B03*/B00
B03 := /CLR* B02*/B01*/B00
+ /CLR* B03* B00
B10 := /CLR* B03
+ /CLR* B02* B00
+ /CLR* B02* B01
B11 := /CLR*/B13*/B12* B10
+ /CLR* B13*/B10
+ /CLR* B12* B11*/B10
B12 := /CLR* B11* B10
+ /Q
SRT := S* /CLR ;SET-RESET FLIP-FLOP (TRUE)
+ /R*/SRT*/CLR ;(SRT = Q)
+ PR ;PRESET Q
SRC := /S* R */PR ;SET-RESET FLIP-FLOP (COMPLEMENT)
+ /S*/SRT*/PR ;(SRC = /Q)
+ PR --------------------------
DESCRIPTION
THE FUNCTION OF THIS PAL IS TO CONVERT A SERIAL STREAM OF BINARY DATA INTO
A PARALLEL BCD REPRESENTATION.
>H,X,Z,C)
DO 11 I=1,IMAX
IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR.
H C L LLLLLLHH SERIAL INPUT A H
H LLLL H C L LLLLLHHH SERIAL INPUT A H
L LLLL H C L LLLHLHLL SERIAL INPUT A H
X XXXX L C L LLLLLLLL TEST CLEAR
X XXXX X C H ZZZZZZZZ TEST HI-Z
-------------------------------X X X X X X X X TOGGLE
C L L L H L H L X X X X X X X X X X
C L L L L L H L X X X X X X X X X X
C L L L L H L H X X X X X X X X X X
C åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå ! Q = L ! Q = H !
! TYPE OF ! !----------------------------------------
! FLIP-FLOP ! INPUT ! Q+ = L ! Q+ = H ! Q+ = L ! Q+ = H !
-------------------------------------------------------------
H X X X X X X X TOGGLE
C L H L X X X X X H L X X X X X X X PRESET
; TEST D FLIP-FLOP
C L L H X X X X X X X X L H X X X X CLEAR
C L L L X X X X .
PALASM EXERCISES THE FUNCTION TABLE TO SIMULATE THE BASIC FLIP FLOPS.
>IINP)
C GET FEED BACK VALUES
IF( (.NOT.-----------------------------------------------
THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCEX X X X X X X X L L H L
C L L L X X X X X X X X X X H L H L
-------------------------------------------------------------------------------
DESCRIPTION
THIS EXAMPLE ILLUSTRATES THE USE OFL H L X X H L X X X X X X X X X X PRESET
C L L L H H L H X X X X X X X X X X TOGGLE
C L L L H L H L X X X X X X X X X X
; TEST T FLIP-FLOP
C L L H ! L !
-------------------------------------------------------------
! DATA ! D ! L ! H ! L ! H !
-------------------------------------------------------------
! SET-RESET ! S ! ! J-K ! J ! L ! H ! X ! X !
! ! K ! X ! X ! H ! L !
-------------------------------------------------------------
! TRIGGER ! T ! L ! H ! X X X L L H X X X X
C L L L X X X X X X X H H L X X X X
C L L L X X X X X X X L L H X X X X
C L H L X X X X X X X X H L X X X X PRESEåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå FUSIBLE LOGIC TO IMPLEMENT THE BASIC
FLIP-FLOPS: J-K FLIP-FLOP, TRIGGER FLIP-FLOP, DATA FLIP-FLOP, AND
SET-RESET FLIP-FLOP.
NEXT TABLE FOR THE FLIP-FLOPS:
-------------------------------------------------------------
! ! H X X X X X L H X X X X X X X CLEAR
C L L L X X X X L L H X X X X X X X
C L L L X X X X H H L X X X X X X X TOGGLE
C L L L X X X X H L L ! H ! L ! X !
! ! R ! X ! L ! H ! L !
-------------------------------------------------------------
THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCE L L L X X X X X X X X X X L H L H RESET
C L L L X X X X X X X X X X L H L H HOLD
C L H L X X X X X X X X X X X X H L PRESET
C L L L X X T
; TEST S-R FLIP-FLOP
C L L H X X X X X X X X X X X X L H CLEAR
C L L L X X X X X X X X X X L L L H
C L L L X X X X X X X X X X H L H L SET
C
PAL12H6 PAL DESIGN SPECIFICATION
BGATES VINCENT COLI 06/12/81
BASIC GATES
MMI SUNNYVALE, CALIFORNIA
C D F G M N P Q I GND J K L R O H E B A VCC
B = /A +:/SET*/LOAD*COUNT*CIN* UP* Q0 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0 ;BORROW
/Q2 := /SET* LOAD*/D2-7 ;LOAD D2-7
+ /SET*/LOAD*/Q2 åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå TEST AND GATE
XX LHL XXX XXXX XXX XXX TEST AND GATE
XX HLL XXX XXXX XXX XXX TEST AND GATE
XX HHH XXX XXXX XXX XXX TEST AND GATE
XX XXX LLL XXXX XXX XXX TEST OR GATE
XX XXX LHH XXXX XXXD
/OC Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 VCC
/Q0 := /SET* LOAD*/D0 ;LOAD D0
+ /SET*/LOAD*/Q0 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP H TEST EXCLUSIVE OR GATE
XX XXX XXX XXXX XXX HHL TEST EXCLUSIVE OR GATE
------------------------------------------------------------
DESCRIPTION
THIS EXAMPLE ILLUSTRATES THE USE OF FUSIBLE LOGIC TO IMPLEMENT THE BASIC
GATES; ;INVERTER
E = C*D ;AND GATE
H = F + G ;OR GATE
L = /I + /J + /K ;NAND GATE
O = /M*/N ;NOR GATE
R = P*/Q + /P*Q ;EXCLUSIVE OR GATE
FUNCTION TABLE
A B C D E F G H I J K L M N O P Q R
åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå XXX TEST OR GATE
XX XXX HLH XXXX XXX XXX TEST OR GATE
XX XXX HHH XXXX XXX XXX TEST OR GATE
XX XXX XXX LLLH XXX XXX TEST NAND GATE
XX XXX XXX LLHH XXX XXX TEST NAND GATE
XX XXX XXX L ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP ;BORROW
/Q1 := /SET* LOAD*/D1 ;LOAD D1
+ /SET*/LOAD*/Q1 ;HOLD
:INVERTER, AND GATE, OR GATE, NAND GATE, NOR GATE, AND EXCLUSIVE OR
GATE.
THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCE.
PALASM EXERCISES THE FUNCTION TABLE TO SIMULATE THE BASIC GATES.
> X X X X X X
C
;AB CDE FGH IJKL MNO PQR COMMENTS
------------------------------------------------------------
LH XXX XXX XXXX XXX XXX TEST INVERTER
HL XXX XXX XXXX XXX XXX TEST INVERTER
XX LLL XXX XXXX XXX XXX
PAL20X10 PAL DESIGN SPECIFICATION
P000 (74LS491) BIRKNER/COLI 07/21/81
10-BIT COUNTER
MMI SUNNYVALE, CALIFORNIA
CLK D0 D1 D2-7 D8 D9 /LOAD /COUNT /UP SET /CIN GNXX XXX XXXX HLL XXX TEST NOR GATE
XX XXX XXX XXXX HHL XXX TEST NOR GATE
XX XXX XXX XXXX XXX LLL TEST EXCLUSIVE OR GATE
XX XXX XXX XXXX XXX LHH TEST EXCLUSIVE OR GATE
XX XXX XXX XXXX XXX HLHLH XXX XXX TEST NAND GATE
XX XXX XXX HLLH XXX XXX TEST NAND GATE
XX XXX XXX HHHL XXX XXX TEST NAND GATE
XX XXX XXX XXXX LLH XXX TEST NOR GATE
XX XXX XXX XXXX LHL XXX TEST NOR GATE
XX X ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1 ;BORROW
/Q3 := /SET* LOAD*/D2-7 ---------------------------
H X X X X SET ALL HIGH
L L X X X LOAD D
L H H X X HOLD
L H L H X HOLD
L H L H L COUNT UP
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q6*/Q7*/Q8 ;BORROW
FUNCTION TABLE
CLK /LOAD /COUNT /UP SET /CIN /OC D9 D8 D2-7 D1 D0
Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
;C L C U S C DATA IN Q OUT
;K D N P T I E 987-210 9876543210 COMMEUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3 ;BORROW
/Q5 := /SET* LOAD*/D2-7 ;LOAD D2-7
+ /SET*/LOAD*/Q5 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* DOWN
------------------------------------------------------------------------
DESCRIPTION
THE TEN-BIT COUNTER CAN COUNT UP, COUNT DOWN, SET, AND LOAD 2 LSB'S, 2MSB'S
AND 6 MIDDLE BITS HIGH OR LOW AS A GROUP. ALL OPERATIONS ARE SYNCHRONOUS
WI ;LOAD D8
+ /SET*/LOAD*/Q8 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6* Q7 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q ;LOAD D2-7
+ /SET*/LOAD*/Q3 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2 ;BORROW LLLLL LLLLLLLLLL CLEAR
C H H X L X L XXXXX LLLLLLLLLL HOLD
C H L X L H L XXXXX LLLLLLLLLL HOLD
C H L L L L L XXXXX LLLLLLLLLH COUNT UP (NOTE 5 CNTRLS LOW NEAR GND)
C H L L L L L XXXXX LLLLLLLLHL COUNT UP
C H L L L L L XXXXX LLLLLNT
------------------------------------------------------------------------
C X X X H X L XXXXX HHHHHHHHHH SET
C L X X L X L LLLLL LLLLLLLLLL CLEAR
C L X X L X L HHHHH HHHHHHHHHH SET
C H H X L X L XXXXX HHHHHHHHHH HOLD
C L X X L X L Q2* Q3* Q4 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4 ;BORROW
/Q6 := /SET* LOAD*/D2-7 ;LOAD D2-7
+ /SET*/LOAD*/Q6 TH THE CLOCK. SET OVERRIDES LOAD, COUNT AND HOLD. LOAD OVERIDES COUNT.
COUNT IS CONDITIONAL ON CIN, OTHERWISE IT HOLDS. ALL OUTPUTS ARE ENABLED
WHEN /OC IS LOW, OTHERWISE HIGH-Z.
SET /LOAD /COUNT /CIN /UP OPERATION
-----------------6*/Q7 ;BORROW
/Q9 := /SET* LOAD*/D9 ;LOAD D9
+ /SET*/LOAD*/Q9 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6* Q7* Q8 ;CARRY
/Q4 := /SET* LOAD*/D2-7 ;LOAD D2-7
+ /SET*/LOAD*/Q4 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3 ;CARRY
+ /SET*/LOAD*COLLLHH COUNT UP
C H L H L L L XXXXX LLLLLLLLHL COUNT DOWN
C H L H L L L XXXXX LLLLLLLLLH COUNT DOWN
C H L H L L L XXXXX LLLLLLLLLL COUNT DOWN
C H L H L L L XXXXX HHHHHHHHHH COUNT DOWN ROLL OVER
C H L H L L L XXXXX HHHHHHHHHL COUNT /SET*/LOAD*/Q7 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q6 ;BORROW
/Q8 := /SET* LOAD*/D8 ;HOLD
:+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5 ;CARRY
+ /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5 ;BORROW
/Q7 := /SET* LOAD*/D2-7 ;LOAD D2-7
+ L H L H H COUNT DOWN
--------------------------------------------
> L !
--------------L H H X X HOLD
L H L H X HOLD
L H L H L COUNT UP
T THE
FUNCTION TABLE SIMULATION COULD BE PERFORMED AND THE PART COULD BE TESTED AT
THE TIME OF MANUFACTURE.
THERE ARE 36 DIFFERENT STATES TO THE COUNT SEQUENCE. EACH STATE CORRESPONDS
TO ONE OF THE NUMBER COMBINATIONS TO BE DISPLAYED ON THE DICE.
2
C L L H HHLLHLHH 3 2
C L L H HLHLHLHH 4 2
C L L H HLLLHLHH 5 2
C L L H LLHLHLHH 6 2
;
C L L H HHLHHHLL 1 3
C L L H HLHHHHLL 2 3
C LååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååL L H HLHLLLHL 4 6
C L L H HLLLLLHL 5 6
C L L H LLHLLLHL 6 6
;
C H X X ZZZZZZZZ TEST HI-Z
----------------------------------------------
DESCRIPTION
THE DUAL MODULO-SIX COUNTER COMMENTS
;C / RE QQQQQQQQ NUMBER DISPLAYED
;K OC SET SET 12345678 DIE 2 DIE 1
----------------------------------------------
C L H L LHHHHHHH INITIALIZE COUNTER
C L L H HHLHHHLH 1 1
C L L H HLååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååHLLHLHL 3 4
C L L H HLHLHLHL 4 4
C L L H HLLLHLHL 5 4
C L L H LLHLHLHL 6 4
;
C L L H HHLHHLLL 1 5
C L L H HLHHHLLL 2 5
C L L H HHLLHLLL L H HHLLHHLL 3 3
C L L H HLHLHHLL 4 3
C L L H HLLLHHLL 5 3
C L L H LLHLHHLL 6 3
;
C L L H HHLHHLHL 1 4
C L L H HLHHHLHL 2 4
C L L H H
PAL16R8 PAL DESIGN SPECIFICATION
EDG VETTER/COLI 07/06/81
ELECTRONIC DICE GAME
MMI SUNYVALE, CALIFORNIA
CK RESET SET NC NC NC NC NC NC GND
/OC /Q8 /Q7 /Q6 /Q5 INCREMENTS ON THE RISING EDGE OF THE CLOCK (CK).
THE THREE STATE OUTPUTS ARE HIGH-Z WHEN THE OUTPUT CONTROL LINE (/OC)
IS HIGH AND ENABLED WHEN THE OUTPUT CONTROL LINE (/OC) IS LOW.
THE RESET AND SET LINES ARE NEEDED TO INITIALIZE THE COUNTER SO THAHHHHLH 2 1
C L L H HHLLHHLH 3 1
C L L H HLHLHHLH 4 1
C L L H HLLLHHLH 5 1
C L L H LLHLHHLH 6 1
;
C L L H HHLHHLHH 1 2
C L L H HLHHHLHH 2åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå3 5
C L L H HLHLHLLL 4 5
C L L H HLLLHLLL 5 5
C L L H LLHLHLLL 6 5
;
C L L H HHLHLLHL 1 6
C L L H HLHHLLHL 2 6
C L L H HHLLLLHL 3 6
C Q1*/Q5* Q8* SET
+ /Q1* Q6* SET
Q7 := Q1*/Q7* SET
+ /Q1* Q7* SET
Q8 := Q1*/Q5* Q6* SET
+ Q1*/Q5* Q8* SET
+ /Q1* Q8* SET
FUNCTION TABLE
CK /OC RESET SET /Q1 /Q2 /Q3 /Q4 /Q5 /Q6 /Q7 /Q8
;--CONTROLS-- /OUTPUTS /Q4 /Q3 /Q2 /Q1 VCC
Q1 := /Q1* Q2* Q3
+ RESET
Q2 := /Q1* Q3* SET
+ /Q1* Q4* SET
Q3 := /Q3* SET
Q4 := /Q1* Q2* SET
+ /Q1* Q4* SET
Q5 := Q1*/Q5* Q6* Q7* SET
+ /Q1* Q5* SET
Q6 := Q1*/Q5* Q7* SET
+