ÿ-` � *** INITILIZE ROUTINES FOR MAID-III (I/O BOARD) *** q` � *** INITILIZE PROGRAMMABLE PERIPHERAL INTERFACE (PPI) *** ¨`d ˆ CTRLWRD1$ ð ÿš(€) :� HEX 80=PORTS(A,B,C=OUTPUT) Þ`n ˆ CTRLWRD2$ ð ÿš(›) :� HEX 9B=PORTS(A,B,C=INPUT) ax ˆ CTRLWRD3$ ð ÿš(¾) :� HEX BE=PORTS(A,B=INPUT & C=INTR.) Ua} ˆ CTRLPRT0$ ð ÿš(#) :� HEX 23=CNTRLPORT(PPI0,IC10) Ža‚ ˆ CTRLPRT1$ ð ÿš(') :� HEX 27=CNTRLPORT(PPI1,IC11) ÇaŒ ˆ CTRLPRT2$ ð ÿš(+) :� HEX 2B=CNTRLPORT(PPI2,IC12) b– ˆ CTRLPRT6$ ð ÿš(G) :� HEX 47=CNTRLPORT(PPI6,IC56) 9b ˆ CTRLPRT7$ ð ÿš(K) :� HEX 4B=CNTRLPORT(PPI7,IC57) rbª ˆ CTRLPRT8$ ð ÿš(O) :� HEX 4F=CNTRLPORT(PPI8,IC58) ¤b´ ˆ CTRLWRD1 ð € :� HEX 80=PORTS(A,B,C=OUTPUT) Õb¾ ˆ CTRLWRD2 ð › :� HEX 9B=PORTS(A,B,C=INPUT) cÈ ˆ CTRLWRD3 ð ¾ :� HEX BE=PORTS(A,B=INPUT & C=INTR.) BcÍ ˆ CTRLPRT0 ð # :� HEX 23=CNTRLPORT(PPI0,IC10) vcÒ ˆ CTRLPRT1 ð ' :� HEX 27=CNTRLPORT(PPI1,IC11) ©cÜ ˆ CTRLPRT2 ð + :� HEX 2B=CNTRLPORT(PPI2,IC2) Ýcæ ˆ CTRLPRT6 ð G :� HEX 47=CNTRLPORT(PPI6,IC56) dð ˆ CTRLPRT7 ð K :� HEX 4B=CNTRLPORT(PPI7,IC57) Edú ˆ CTRLPRT8 ð O :� HEX 4F=CNTRLPORT(PPI8,IC58) udþ ˆ PPI0A ð :� HEX 20=DATAPORTA(PPI0,IC10) ¥dÿ ˆ PPI0B ð ! :� HEX 21=DATAPORTB(PPI0,IC10) Õd ˆ PPI0C ð " :� HEX 22=DATAPORTC(PPI0,IC10) eˆ PPI1A ð $ :� HEX 24=DATAPORTA(PPI1,IC11) 5eˆ PPI1B ð % :� HEX 25=DATAPORTB(PPI1,IC11) eeˆ PPI1C ð & :� HEX 26=DATAPORTC(PPI1,IC11) •e"ˆ PPI2A ð ( :� HEX 28=DATAPORTA(PPI2,IC12) Åe,ˆ PPI2B ð ) :� HEX 29=DATAPORTB(PPI2,IC12) õe6ˆ PPI2C ð * :� HEX 2A=DATAPORTC(PPI2,IC12) %f@ˆ PPI6A ð D :� HEX 44=DATAPORTA(PPI6,IC56) UfJˆ PPI6B ð E :� HEX 45=DATAPORTB(PPI6,IC56) …fTˆ PPI6C ð F :� HEX 46=DATAPORTC(PPI6,IC56) µf^ˆ PPI7A ð H :� HEX 48=DATAPORTA(PPI7,IC57) åfhˆ PPI7B ð I :� HEX 49=DATAPORTB(PPI7,IC57) grˆ PPI7C ð J :� HEX 4A=DATAPORTC(PPI7,IC57) Eg|ˆ PPI8A ð L :� HEX 4C=DATAPORTA(PPI8,IC58) ug†ˆ PPI8B ð M :� HEX 4D=DATAPORTB(PPI8,IC58) ¥g�ˆ PPI8C ð N :� HEX 4E=DATAPORTC(PPI8,IC58) µg¼ˆ DATA1 ð Ågƈ DATA2 ð Ýgè� CTRLPRT1,CTRLWRD1 õgò� CTRLPRT2,CTRLWRD1 hü� CTRLPRT6,CTRLWRD2 %h� CTRLPRT7,CTRLWRD2 =h� CTRLPRT8,CTRLWRD3 Rh� CTRLPRT8,DATA1 gh$� CTRLPRT8,DATA2 {h.ˆ X ð ÿ�(PPI8A) �h8ˆ X ð ÿ�(PPI8B) Àh<� *** INITILIZE WAIT-STATE GENERATOR *** úh>ˆ MEMIO ð :� HEX 03=NO WAIT-STATES FOR MEMORY & I/O iB� CTRLPRT0,CTRLWRD1 $iL� PPI0C,MEMIO hit� *** INITILIZE PROGRAMMABLE INTERRUPT CONTROLLER (PIC) *** ¢i~ˆ ICW1 ð :� HEX 12=LWRADDR A7-A5,INTERVAL=8,SINGLE ãiˆˆ ICW2 ð :� HEX 03=UPPADDR A15-A8(UPPER ROUTINE ADDERESS) j’ˆ ICW3 ð :� HEX 00=IR INPUT HAS NO SLAVE 8jœˆ OCW1 ð :� HEX 00=MASK RESET j¦ˆ OCW2 ð :� HEX 20=NON-SPEC. EOI(RESET HIGHEST PRI. BIT OF ISR) Äj°ˆ OCW3 ð :� HEX 0F=POLLING ON NEXT READ (BCD OF HIGHEST INT.) îjºˆ PIC34 ð 4:� HEX 34=PORT(PIC0,IC14) kĈ PIC35 ð 5:� HEX 35=PORT(PIC0,IC14) )kÎ� PIC34,ICW1 :kØ� PIC35,ICW2 Kkâ� PIC35,ICW3 Ukì‰ ô ŽkÆ� *** LOOK @ PENDING INTERRUPTS & CLEAR THEM OUT *** ŸkÐ� PIC34,OCW3 ³kÚˆ P ð ÿ�(PIC34) Èkä� PRINT"ISR = "P Ùkî� PIC34,OCW2 çkø� INPUT Z íkŽ 2lô� *** MAID-III - RUN TIME SYSTEM CODE INTERPRETER (IN BASIC) *** ylPEF$ ð "Y" :� Y = YES PRINT MAID-III INPUT EXTERNAL FUNCTION WORDS ¿lPAF$ ð "Y" :� Y = YES PRINT MAID-III INPUT ADDRESS FUNCTION WORDS ùl POD$ ð "Y" :� Y = YES PRINT MAID-III INPUT DATA WORDS 4mPID$ ð "Y" :� Y = YES PRINT MAID-III OUTPUT DATA WORDS qmPST$ ð "Y" :� Y = YES PRINT MAID-III OUTPUT STATUS WORDS ¶mPTG$ ð "Y" :� Y = YES PRINT ALL CONTROL TAGS (HOST AND MAID-III) ÜmB$ ð "H" :� B$ = BASE AND H = HEX ým‰ N:� JUMP TO MAIN PROGRAM nS� *** IN ROUTINE (EF) *** BnX� ),@:� RAISE ODR - DONT MISS EF bnb� 4,:� POLL ON NEXT READ tnlˆ IR ð ÿ�(4) ˆnv‹ IR ñ € Ï b ²n€‹ IR ð € Ï Š :¢ Ú :� LOOK FOR EF ÃnŠEFA ð ÿ�(D) Ôn”EFB ð ÿ�(E) ånžEFC ð ÿ�(F) ön¨EFD ð ÿ�(H) o²EFE ð ÿ�(I) oµ� Å2 #o·� 4, :� EOI :o¼� ),:� LOWER ODR @oÐŽ �oÚ‘"I WAS EXPECTING A FORCED EXTERNAL FUNCTION INTERRUPT (EF - CONTROL TAG) " µoß‘"I RECEIVED AN INTERRUPT = ";IR »oäŽ Úo� *** IN ROUTINE (AFW) *** òo � ),@:� RAISE ODR üo#� ¼4 p*� 4,:� POLL ON NEXT READ .p4ˆ IR ð ÿ�(4) ap9‰ R:� TEMPORARY BYPASS,MUST DELETE THIS LINE up>‹ IR ñ € Ï * ŸpH‹ IR ð € Ï R :¢ ¢ :� LOOK FOR EF °pRAFA ð ÿ�(D) Áp\AFB ð ÿ�(E) ÒpfAFC ð ÿ�(F) ãppAFD ð ÿ�(H) ôpzAFE ð ÿ�(I) þp}� 6 q� 4, :� EOI 'q„� ),:� LOWER ODR 1q‡� 5 7qŽŽ €q¢‘"I WAS EXPECTING AN ADDRESS FUNCTION INTERRUPT (EF - CONTROL TAG) " ¥q§‘"I RECEIVED AN INTERRUPT = ";IR «q¬Ž Ôq;� *** MAID-III IN ROUTINE (DATA) *** ìq@� ),@:� RAISE ODR öqC� ¼4 rJ� 4,:� POLL ON NEXT READ &rTIR ð ÿ�(4) :r^‹ IR ñ € Ï J drh‹ IR ð ‚ Ï r :¢  :� LOOK FOR OA trrDA ð ÿ�(D) „r|DB ð ÿ�(E) ”r†DC ð ÿ�(F) ¤r�DD ð ÿ�(H) ´ršDE ð ÿ�(I) ¾r�� 13 ÍrŸX ð ÿ�(L) Ür X ð ÿ�(M) îr¡� 4, :� EOI s¤� ),:� LOWER ODR s§� 5 s¸Ž `s‘"I WAS EXPECTING AN OUTPUT ACKNOWLEDGE INTERRUPT (OA - CONTROL TAG) " …sÇ‘"I RECEIVED AN INTERRUPT = ";IR ‹sÌŽ µsÖ� *** MAID-III OUT ROUTINE (DATA) *** Õsà� 4,:� POLL ON NEXT READ åsêIR ð ÿ�(4) tô‹ IR ñ € Ï þ :¢ ” :� SHOULD NOT HAVE INTERRUPTS +tþ� $,ODA 8t � %,ODB Et � &,ODC Rt � (,ODD _t& � ),ODE wt0 � ),%:� RAISE IDR �t3 � ¡8 ¡t: � 4,:� POLL ON NEXT READ ±tD IR ð ÿ�(4) ÅtN ‹ IR ñ € Ï : ïtX ‹ IR ð � Ï [ :¢ £ :� LOOK FOR IA ùt[ � l9 ub X ð ÿ�(L) ul X ð ÿ�(M) )uv � 4, :� EOI @u€ � ),:� LOWER IDR Juƒ � Ð9 PuŠ Ž €u” ‘"I RECEIVED AN UNEXPECTED INTERRUPT = ";IR Äu™ ‘"I WAS ABOUT TO RAISE INPUT DATA REQUEST (IDR - CONTROL TAG) " èu› ‘"AND TRANSMIT A DATA WORD = "; òuœ � J3 øuž Ž Av£ ‘"I WAS EXPECTING AN INPUT ACKNOWLEDGE INTERRUPT (IA - CONTROL TAG)" fv¨ ‘"I RECEIVED AN INTERRUPT = ";IR lv Ž ˜v4!� *** MAID-III OUT ROUTINE (STATUS) *** ¸v>!� 4,:� POLL ON NEXT READ ÈvH!IR ð ÿ�(4) wR!‹ IR ñ € Ï \! :¢ " :� SHOULD NOT HAVE INTERRUPTS w\!� $,SA wf!� %,SB %wp!� &,SC 1wz!� (,SD =w„!� ),SE TwŽ!� ),:� RAISE EI ^w˜!� ’3 ~w¢!� 4,:� POLL ON NEXT READ Žw¬!IR ð ÿ�(4) ¢w¶!‹ IR ñ € Ï ¢! ÌwÀ!‹ IR ð � Ï Ê! :¢ £ :� LOOK FOR IA ÖwÊ!� l9 åwÔ!X ð ÿ�(L) ôwÞ!X ð ÿ�(M) xè!� 4, :� EOI xò!� ),:� LOWER EI dx÷!� OUT 41,64 - RAISE ODR, DONT MISS EF IF MAID-II IS IN RECYCLE MODE pxù!� ),@ zxü!� Ì3 €x"Ž °x"‘"I RECEIVED AN UNEXPECTED INTERRUPT = ";IR óx"‘"I WAS ABOUT TO RAISE EXTERNAL INTERRUPT (EI - CONTROL TAG) " y$"‘"AND TRANSMIT A STATUS WORD = "; #y."� ˜: )y8"Ž JyÃ2� *** PRINT ROUTINE (EF) *** hyÅ2‹ PTG$ ð "Y" Ï È2 :¢ Ï2 yÈ2‘"I RECEIVED AN EXTERNAL FUNCTION INTERRUPT (EF - CONTROL TAG) " ÉyÊ2‹ PEF$ ð "Y" Ï Í2 :¢ Ž áyÍ2‘ "ALONG WITH AN "; ëyÎ2‰ Ò2 zÏ2‹ PEF$ ð "Y" Ï Ð2 :¢ Ž zÐ2‘"I RECEIVED AN "; FzÒ2‘"EXTERNAL FUNCTION WORD (EFW) = "; bzÜ2‹ B$ ð "H" Ï æ2 :¢ ú2 —zæ2‘ ÿš(EFE);ÿš(EFD);ÿš(EFC);ÿš(EFB);ÿš(EFA);" HEX" �zð2Ž £zú2� Òz,3� *** PRINT ROUTINE (MAID-III IN DATA) *** ðz13‹ PTG$ ð "Y" Ï 63 :¢ >3 6{63‘"I RECEIVED AN OUTPUT ACKNOWLEDGE INTERRUPT (OA - CONTROL TAG) " R{83‹ POD$ ð "Y" Ï ;3 :¢ Ž i{;3‘"ALONG WITH AN "; s{=3‰ @3 �{>3‹ POD$ ð "Y" Ï ?3 :¢ Ž ¦{?3‘"I RECEIVED AN "; È{@3‘"OUTPUT DATA WORD (ODW) = "; ä{J3‹ B$ ð "H" Ï T3 :¢ h3 |T3‘ ÿš(DE);ÿš(DD);ÿš(DC);ÿš(DB);ÿš(DA);" HEX" |^3Ž |h3� D|�3� *** PRINT ROUTINE (CE,DE) *** b|’3‹ PST$ ð "Y" Ï •3 :¢ ¡3 °|•3‘"I SENT OUT CHANNEL END & DEVICE END STATUS (CE,DE - BITS 10,11,27,28) " Ç|—3‘"STATUS WORD = "; Ñ|›3� ˜: í|œ3‹ PTG$ ð "Y" Ï ž3 :¢ Ž }ž3‘"ALONG WITH AN "; }Ÿ3‰ ¤3 *}¡3‹ PTG$ ð "Y" Ï ¢3 :¢ Ž <}¢3‘"I RAISED "; j}¤3‘"EXTERNAL INTERRUPT (EI - CONTROL TAG) " p}®3Ž —}Â3� *** PRINT ROUTINE (LOWER EI) *** ³}Ì3‹ PTG$ ð "Y" Ï Ö3 :¢ Ž ë}Ö3‘"I LOWERED EXTERNAL INTERRUPT (EI - CONTROL TAG) " ñ}à3Ž ~·4� *** PRINT ROUTINE (RAISE ODR) *** 5~¼4‹ PTG$ ð "Y" Ï Á4 :¢ Ž n~Á4‘"I RAISED OUTPUT DATA REQUEST (ODR - CONTROL TAG) " t~Æ4Ž ˜~5� *** PRINT ROUTINE (LOWER ODR) ´~ 5‹ PTG$ ð "Y" Ï *5 :¢ Ž î~*5‘"I LOWERED OUTPUT DATA REQUEST (ODR - CONTROL TAG) " ô~>5Ž «6� *** PRINT ROUTINE (AFW) *** 46‹ PTG$ ð "Y" Ï °6 :¢ ¶6 x°6‘"I RECEIVED AN ADDRESS FUNCTION INTERRUPT (EF - CONTROL TAG) " ”²6‹ PAF$ ð "Y" Ï ´6 :¢ Ž «´6‘"ALONG WITH AN "; µµ6‰ º6 Ѷ6‹ PAF$ ð "Y" Ï ·6 :¢ Ž è·6‘"I RECEIVED AN "; €º6‘"ADDRESS FUNCTION WORD (AFW) = "; +€Ä6‹ B$ ð "H" Ï Î6 :¢ Ø6 `€Î6‘ ÿš(AFE);ÿš(AFD);ÿš(AFC);ÿš(AFB);ÿš(AFA);" HEX" f€Ø6Ž l€â6� œ€Ÿ8� *** PRINT ROUTINE (MAID-III OUT DATA) *** º€¡8‹ PID$ ð "Y" Ï ¤8 :¢ Ç8 Ø€¤8‘"I SENT A DATA WORD = "; ô€®8‹ B$ ð "H" Ï ¸8 :¢ à8 )�¸8‘ ÿš(ODE);ÿš(ODD);ÿš(ODC);ÿš(ODB);ÿš(ODA);" HEX" E�½8‹ PTG$ ð "Y" Ï Â8 :¢ Ž \�Â8‘"ALONG WITH AN "; f�Ä8‰ Ì8 ‚�Ç8‹ PTG$ ð "Y" Ï É8 :¢ Ž ”�É8‘"I RAISED "; Ã�Ì8‘"INPUT DATA REQUEST (IDR - CONTROL TAG) " É�Ö8Ž Ï�à8� ø�g9� *** PRINT ROUTINE (RECEIVE IA) *** ‚l9‹ PTG$ ð "Y" Ï v9 :¢ Ž Y‚v9‘"I RECEIVED AN INPUT ACKNOWLEDGE INTERRUPT (IA - CONTROL TAG) " _‚€9Ž ‡‚Ë9� *** PRINT ROUTINE (LOWER IDR) *** £‚Ð9‹ PTG$ ð "Y" Ï Ú9 :¢ Ž Ü‚Ú9‘"I LOWERED INPUT DATA REQUEST (IDR - CONTROL TAG) " â‚ä9Ž ƒ*:� *** PRINT ROUTINE (MAID-III OUT STATUS) *** 2ƒ/:‹ PST$ ð "Y" Ï 4: :¢ p: Vƒ4:‘"I SENT OUT A STATUS WORD = "; rƒ>:‹ B$ ð "H" Ï H: :¢ \: ¢ƒH:‘ ÿš(SE);ÿš(SD);ÿš(SC);ÿš(SB);ÿš(SA);" HEX" ¾ƒR:‹ PTG$ ð "Y" Ï \: :¢ Ž Õƒ\:‘"ALONG WITH AN "; ߃f:‰ „: ûƒp:‹ PTG$ ð "Y" Ï z: :¢ Ž „z:‘"I RAISED "; ;„„:‘"EXTERNAL INTERRUPT (EI - CONTROL TAG) " A„Ž:Ž a„—:� *** PRINT STATUS WORD *** }„˜:‹ B$ ð "H" Ï ¢: :¢ ¶: „¢:‘ ÿš(SE);ÿš(SD);ÿš(SC);ÿš(SB);ÿš(SA);" HEX" ³„¬:Ž ¹„¶:� ï„€>� *** RUN-TIME ANALYSIS AND RECOVERY ROUTINES *** %…hB� *** COUNTING ROUTINES (EF,AFW,ODW,IDW,STAT) *** E…\D� *** TIME-OUT ROUTINES *** m… N� * * * START OF MAIN PROGRAM * * * …"N‹ IP$ ñï "DONE" Ï � P:� INIT. USER JUST ONCE ½…#N� Ð:� CLEAR INTERRUPTS æ…$NPTG$ ð "N":� N = DONT PRINT ALL TAGS ó…%N‘ ÿ–() ü…&N‘" " D†'N‘" * * * * * * MAID-III * * * * * * " M†*N‘" " Œ†4N…"HOW MANY TIMES WOULD YOU LIKE TO REPEAT THIS PACKET ";RP Ö†>N…"HOW MANY 36 BIT DATA WORDS DO YOU WANT THIS PACKET TO TRANSFER ";WC ‡HN…"IS THIS AN INPUT OR OUTPUT OPERATION (MAID-III), TYPE I OR O ";OP$ k‡JNSA ð :SB ð :SC ð :SD ð :SE ð :� STATUS (CE,DE - BITS 10,11,27,28 Ÿ‡NN…"ENTER - Y :TO DISPLAY ALL CONTROL TAGS ";PTG$ µ‡RN‹ OP$ ð "I" Ï „N ˇ\N‹ OP$ ð "O" Ï èN Õ‡`N‘" " ߇aN‘" " *ˆfN‘ NAM$;" - TYPE AN I OR AN O AND THEN PUSH GENTLY ON THE RETURN KEY! " 4ˆpN‘" " >ˆuN‘" " HˆzN‘" " [ˆN‰ HN:� STUPID �ˆ„N� *** INPUT PACKET (MAID-III) *** “ˆŽN‚ PA ð Î RP ±ˆ�N‘" ":‘"PACKET # ";PA:‘" " ½ˆ“N � X Ɉ˜N � ߈�N ‚ PB ð Î WC N � @ üˆ§N ƒ PB ‰¬N � >! ‰±N PB 𠉶Nƒ PA )‰»NPA ð 3‰ÊN‰ VO Z‰èN� *** OUTPUT PACKET (MAID-III) *** š‰íNODA ð U:ODB ð U:ODC ð U:ODD ð U:ODE ð :� 555555555 HEX ¬‰òN‚ PA ð Î RP ʉôN‘" ":‘"PACKET # ";PA:‘" " Ö‰üN � X â‰O � ø‰O ‚ PB ð Î WC ŠO � à Š$O ƒ PB !Š.O � >! .Š8O PB ð 7ŠBOƒ PA BŠLOPA ð KŠVO‘" " TŠ`O‘" " rŠjO‘"TEST PACKET COMPLETED " ²ŠtO…"TYPE R OR N (R = REPEAT SAME PACKET,N = NEW PACKET) ";ZZ$ ÈŠ~O‹ ZZ$ ð "R" Ï RN ÒŠ’O‰ N ïŠP� *** INITILIZE USER *** ûŠP‘ÿ–() ‹P‘" " '‹P…"HI, WHAT IS YOUR NAME ";NAM$ 4‹ P‘ ÿ–() m‹!P‘" MAID-II TEST PROGRAM " €‹"P‘" ":‘" ":‘" " ·‹#P‘ NAM$;",":‘" ":‘" TO BACK SPACE TYPE CTRL - H " ô‹(P‘" TO START PROGRAM OVER TYPE CTRL - C THEN TYPE RUN " Œ2P…" TYPE RETURN TO CONTINUE ";XX$ (Œ