ÿ-`� *** 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,CTRLWRD3Rh� CTRLPRT8,DATA1gh$� CTRLPRT8,DATA2{h.ˆ X ð ÿ�(PPI8A)�h8ˆ X ð ÿ�(PPI8B)Àh<� *** INITILIZE WAIT-STATE GENERATOR ***úh>ˆ MEMIO ð  :� HEX 03=NO WAIT-STATES FOR MEMORY & I/OiB� CTRLPRT0,CTRLWRD1$iL� PPI0C,MEMIOhit� *** 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 SLAVE8jœˆ OCW1 ð  :� HEX 00=MASK RESETj¦ˆ 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,ICW2Kkâ� PIC35,ICW3Ukì‰ ôŽ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 WORDS4m PID$ ð "Y" :� Y = YES PRINT MAID-III OUTPUT DATA WORDSqmPST$ ð "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 PROGRAMnS� *** IN ROUTINE (EF) ***BnX� ),@:� RAISE ODR - DONT MISS EFbnb� 4,:� POLL ON NEXT READtnlˆ 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#� ¼4p*� 4,:� POLL ON NEXT READ.p4ˆ IR ð ÿ�(4)ap9‰ R:� TEMPORARY BYPASS,MUST DELETE THIS LINEup>‹ IR ñ € Ï *ŸpH‹ IR ð € Ï R :¢ ¢ :� LOOK FOR EF°pRAFA ð ÿ�(D)Áp\AFB ð ÿ�(E)ÒpfAFC ð ÿ�(F)ãppAFD ð ÿ�(H)ôpzAFE ð ÿ�(I)þp}� ­6q� 4, :� EOI'q„� ),:� LOWER ODR1q‡�  57qŽŽ€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� ¼4rJ� 4,:� POLL ON NEXT READ&rTIR ð ÿ�(4):r^‹ IR ñ € Ï Jdrh‹ IR ð ‚ Ï r :¢  :� LOOK FOR OAtrrDA ð ÿ�(D)„r|DB ð ÿ�(E)”r†DC ð ÿ�(F)¤r�DD ð ÿ�(H)´ršDE ð ÿ�(I)¾r�� 13ÍrŸX ð ÿ�(L)Ür X ð ÿ�(M)îr¡� 4, :� EOIs¤� ),:� LOWER ODRs§�  5s¸Ž`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þ� $,ODA8t � %,ODBEt � &,ODCRt � (,ODD_t& � ),ODEwt0 � ),%:� RAISE IDR�t3 � ¡8¡t: � 4,:� POLL ON NEXT READ±tD IR ð ÿ�(4)ÅtN ‹ IR ñ € Ï : ïtX ‹ IR ð � Ï [ :¢ £ :� LOOK FOR IAùt[ � l9ub X ð ÿ�(L)ul X ð ÿ�(M))uv � 4, :� EOI@u€ � ),:� LOWER IDRJuƒ � Ð9PuРހ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 = ";IRlv­ Ž˜v4!� *** MAID-III OUT ROUTINE (STATUS) ***¸v>!� 4,:� POLL ON NEXT READÈvH!IR ð ÿ�(4)wR!‹ IR ñ € Ï \! :¢ " :� SHOULD NOT HAVE INTERRUPTS w\!� $,SAwf!� %,SB%wp!� &,SC1wz!� (,SD=w„!� ),SETwŽ!� ),:� 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, :� EOIxò!� ),:� LOWER EIdx÷!� OUT 41,64 - RAISE ODR, DONT MISS EF IF MAID-II IS IN RECYCLE MODEpxù!� ),@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‰ Ò2zÏ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 :¢ >36{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) ***4­6‹ PTG$ ð "Y" Ï °6 :¢ ¶6x°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‰ VOZ‰è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ƒ PABŠ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$(Œ