-` *** 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 nEFA (D) nEFB (E) nEFC (F) nEFD (H) oEFE (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) rDC (F) rDD (H) rDE (I) r 13 rX (L) rX (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 sIR (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" Jy2 *** PRINT ROUTINE (EF) *** hy2 PTG$ "Y" 2 : 2 y2"I RECEIVED AN EXTERNAL FUNCTION INTERRUPT (EF - CONTROL TAG) " y2 PEF$ "Y" 2 : y2 "ALONG WITH AN "; y2 2 z2 PEF$ "Y" 2 : z2"I RECEIVED AN "; Fz2"EXTERNAL FUNCTION WORD (EFW) = "; bz2 B$ "H" 2 : 2 z2 (EFE);(EFD);(EFC);(EFB);(EFA);" HEX" z2 z2 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 x6"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" f6 l6 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" E8 PTG$ "Y" 8 : \8"ALONG WITH AN "; f8 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 : Yv9"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: 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 ";WC HN"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,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! " 4pN" " >uN" " HzN" " [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 3N VO ZN *** 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 7BO PA BLOPA 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 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$ (