-` *** 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,CTRLWRD1g 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,SINGLEi 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,OCW3k P (PIC34)k PRINT"ISR = "Pk PIC34,OCW2k INPUT Zk2l *** MAID-III - RUN TIME SYSTEM CODE INTERPRETER (IN BASIC) ***ylPEF$ "Y" : Y = YES PRINT MAID-III INPUT EXTERNAL FUNCTION WORDSlPAF$ "Y" : Y = YES PRINT MAID-III INPUT ADDRESS FUNCTION WORDSl 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 WORDSmPTG$ "Y" : Y = YES PRINT ALL CONTROL TAGS (HOST AND MAID-III)mB$ "H" : B$ = BASE AND H = HEXm  N: JUMP TO MAIN PROGRAMnS *** IN ROUTINE (EF) ***BnX ),@: RAISE ODR - DONT MISS EFbnb 4,: POLL ON NEXT READtnl IR (4)nv IR  bn IR   :  : LOOK FOR EFnEFA (D)nEFB (E)nEFC (F)nEFD (H)oEFE (I)o 2#o 4, : EOI:o ),: LOWER ODR@oo"I WAS EXPECTING A FORCED EXTERNAL FUNCTION INTERRUPT (EF - CONTROL TAG) "o"I RECEIVED AN INTERRUPT = ";IRoo *** IN ROUTINE (AFW) ***o  ),@: RAISE ODRo# 4p* 4,: POLL ON NEXT READ.p4 IR (4)ap9 R: TEMPORARY BYPASS,MUST DELETE THIS LINEup> IR  *pH IR  R :  : LOOK FOR EFpRAFA (D)p\AFB (E)pfAFC (F)ppAFD (H)pzAFE (I)p} 6q 4, : EOI'q ),: LOWER ODR1q  57qq"I WAS EXPECTING AN ADDRESS FUNCTION INTERRUPT (EF - CONTROL TAG) "q"I RECEIVED AN INTERRUPT = ";IRqq; *** MAID-III IN ROUTINE (DATA) ***q@ ),@: RAISE ODRqC 4rJ 4,: POLL ON NEXT READ&rTIR (4):r^ IR  Jdrh IR  r :  : LOOK FOR OAtrrDA (D)r|DB (E)rDC (F)rDD (H)rDE (I)r 13rX (L)rX (M)r 4, : EOIs ),: LOWER ODRs  5s`s"I WAS EXPECTING AN OUTPUT ACKNOWLEDGE INTERRUPT (OA - CONTROL TAG) "s"I RECEIVED AN INTERRUPT = ";IRss *** MAID-III OUT ROUTINE (DATA) ***s 4,: POLL ON NEXT READsIR (4)t IR   :  : SHOULD NOT HAVE INTERRUPTS+t $,ODA8t %,ODBEt &,ODCRt (,ODD_t& ),ODEwt0 ),%: RAISE IDRt3 8t: 4,: POLL ON NEXT READtD IR (4)tN IR  : tX IR  [ :  : LOOK FOR IAt[ l9ub X (L)ul X (M))uv 4, : EOI@u ),: LOWER IDRJu 9Pu u "I RECEIVED AN UNEXPECTED INTERRUPT = ";IRu "I WAS ABOUT TO RAISE INPUT DATA REQUEST (IDR - CONTROL TAG) "u "AND TRANSMIT A DATA WORD = ";u J3u 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 READvH!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 READw!IR (4)w! IR  !w! IR  ! :  : LOOK FOR IAw! l9w!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! 3x"x""I RECEIVED AN UNEXPECTED INTERRUPT = ";IRx""I WAS ABOUT TO RAISE EXTERNAL INTERRUPT (EI - CONTROL TAG) "y$""AND TRANSMIT A STATUS WORD = ";#y." :)y8"Jy2 *** PRINT ROUTINE (EF) ***hy2 PTG$ "Y" 2 : 2y2"I RECEIVED AN EXTERNAL FUNCTION INTERRUPT (EF - CONTROL TAG) "y2 PEF$ "Y" 2 : y2 "ALONG WITH AN ";y2 2z2 PEF$ "Y" 2 : z2"I RECEIVED AN ";Fz2"EXTERNAL FUNCTION WORD (EFW) = ";bz2 B$ "H" 2 : 2z2 (EFE);(EFD);(EFC);(EFB);(EFA);" HEX"z2z2z,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 |h3D|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) "~>56 *** PRINT ROUTINE (AFW) ***46 PTG$ "Y" 6 : 6x6"I RECEIVED AN ADDRESS FUNCTION INTERRUPT (EF - CONTROL TAG) "6 PAF$ "Y" 6 : 6"ALONG WITH AN ";6 66 PAF$ "Y" 6 : 6"I RECEIVED AN ";6"ADDRESS FUNCTION WORD (AFW) = ";+6 B$ "H" 6 : 6`6 (AFE);(AFD);(AFC);(AFB);(AFA);" HEX"f6l68 *** 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"E8 PTG$ "Y" 8 : \8"ALONG WITH AN ";f8 88 PTG$ "Y" 8 : 8"I RAISED ";Á8"INPUT DATA REQUEST (IDR - CONTROL TAG) "Ɂ8ρ8g9 *** PRINT ROUTINE (RECEIVE IA) ***l9 PTG$ "Y" v9 : Yv9"I RECEIVED AN INPUT ACKNOWLEDGE INTERRUPT (IA - CONTROL TAG) "_99 *** 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:V4:"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 ";WCHN"IS THIS AN INPUT OR OUTPUT OPERATION (MAID-III), TYPE I OR O ";OP$kJNSA :SB  :SC :SD :SE : STATUS (CE,DE - BITS 10,11,27,28NN"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! "4pN" ">uN" "HzN" "[N HN: STUPIDN *** INPUT PACKET (MAID-III) ***N PA  RPN" ":"PACKET # ";PA:" "N XɈN  ߈N PB  WCN @N PBN >!N PB N PA)NPA 3N VOZN *** OUTPUT PACKET (MAID-III) ***NODA U:ODB U:ODC U:ODD U:ODE : 555555555 HEXN PA  RPʉN" ":"PACKET # ";PA:" "։N XO  O PB  WCO $O PB!.O >!.8O PB 7BO PABLOPA KVO" "T`O" "rjO"TEST PACKET COMPLETED "tO"TYPE R OR N (R = REPEAT SAME PACKET,N = NEW PACKET) ";ZZ$Ȋ~O ZZ$ "R" RNҊO  NP *** 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$(