Listing of file='MECI' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'
# Sector 2790, program filename = 'MECI'
0010 REM %^MECI -- MEMORY ERROR CHIP IDENTIFIER
: REM 06/12/79
: REM B. Patterson
0020 REM %REVISIONS (9/22/78).............................
: REM 1. Bank logic added for data memory (for 256K MVP).
: REM 2. 16K RAM logic added.
0030 REM %REVISIONS (10/08/78).............................
: REM 1. PECM corrected to display XOR of data with expected data.
0040 REM %REVISIONS (06/12/79).............................
: REM 1. 32K 7588 logic added.
0045 REM %REVISIONS (04/01/84).............................
: REM 1. 512K data memory logic added
: REM 2. 64K control memory logic added
: REM 3. graphics display added
: REM 4. stoped error reverse on odd address -- line 800
0050 REM %^HARDWARE REQUIRED..............................
: REM 1. 2200VP or MVP with 16K memory.
: REM 2. 24 x 80 CRT.
0060 REM %^INSTRUCTIONS......................................
: REM 1. Edit system error -- ('RETURN' must be keyed after each field)
: REM a. error type (eg, PEDM).
: REM b. error address.
: REM c. error data (if any).
0070 REM 2. Specify disk file to compare PECM data against (if desired).
: REM 3. Questionable locations on memory board will be displayed.
: REM 4. Press any key to clear display & enter next error.
: REM Or press any SF key to enter different memory configuration.
0080 REM 5. Notice that board 1 is located closer to CPU.
: REM Board 2 is closer to power supply.
0090 REM %^VARIABLES..........................
: REM A,L1,L$,T$ -- work variables
0100 REM A$,A9$ -- system error address (binary)
: REM A2$ -- system error 2nd address
: REM A1$ -- system error address (ASCII)
: REM B -- board# (1 or 2)
: REM C$(I) -- "E" if chip is bad (corresponds to 1's in X$)
0110 REM B,B2 -- board# (1 or 2)
: REM C$(I) -- "E" if chip is bad (corresponds to 1's in X$)
: REM P$,P9$ -- data memory page (0,4,8,C)
: REM P2$ -- data memory page (2nd address)
0120 REM S$ -- data memory size
: REM M$ -- control memory size
: REM S$(I),M$(I) -- board I type
: REM R$,R1$ -- chip row order
: REM Q,Q2,Q$ -- chip row
0130 REM D$ -- system error data (binary)
: REM D1$ -- sytem error data (ASCII)
: REM E -- error type (1=BECM,2=PECM,3=VECM,4=BEDM,5=PEDM,6=REDM,7=VEDM)
: REM E$ -- error mnemonic (eg, PEDM)
0140 REM F$ -- disk file name
: REM F1$ -- disk address
: REM F1,F2,F3 -- start,end,current file address
: REM F4 -- file status
: REM F2$ -- record type
: REM F3$ -- record data address & count
: REM F$() -- record data
0150 REM F5$ -- instruction from file
: REM F6$ -- found/not found flag
: REM I,I1,I2 -- counter
: REM T -- tab value
: REM L -- chip location on board
: REM X -- number of chip rows on board
: REM X$ -- bad data bits are 1's
: REM Z$,Z1$,Z2$,Z3$ -- board display
: REM
0160 DIM A1$7,A$2,A2$2,D1$6,D$3,F$8,F1$4,F2$2,F3$3,F$(4)60,F4$2,F5$3,G$,I1,I2,
L$2,C$3,C$(24)1,Z$80,Z1$80,Z2$100,Z3$80,Z4$80,E$4,X,X$3,T$80,P$1,P2$1,S$(
4),R$8,Q$1,R1$6,M$(2)
0170 G$="Y"
: PRINT HEX(03);AT(12,25);
: LINPUT "Do you want graphic displays" G$
0180 DEFFN'31
: RETURN CLEAR ALL
: F$="@@"
: F1$="/310"
: Z$=ALL("-")
: Z2$="-!"&HEX(080A)&"!--------------------!"&HEX(080C)&"!------"&STR(Z2$,2
,34)&STR(Z2$,2,29)
: Z1$="! ! ! ! ! ! ! ! ! ! !
! ! !"
0190 Z3$="! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! !"
: Z4$="!
!"
0200 REM %^INPUT DATA MEMORY CONFIGURATION................
: SELECT PRINT /005(80)
: PRINT HEX(0D03);AT(0,20);BOX(1,37);AT(0,21);"MECI -- Memory Error Chip Id
entifier"
: PRINT AT(3,0);" SIZE","BOARD #1","BOARD #2","BOARD #3","BOARD #4"
: I=0
: RESTORE LINE 260
0210 READ S$,S$(1),S$(2),S$(3),S$(4),R$
: IF S$="end" THEN 220
: PRINTUSING "SF'## ",I;
: PRINT S$,S$(1),S$(2),S$(3),S$(4)
: I=I+1
: GOTO 210
0220 PRINT "SF'31","Return to main menu"
: PRINT
: PRINT "Enter the data memory configuration, SF'?";HEX(06)
0230 KEYIN S$,,240
: GOTO 230
0240 IF STR(S$,,1) =HEX(1F) THEN LOAD T"@MENU"
: ERRORGOTO 180
0245 IF STR(S$,,1) =HEX(1F) THEN LOAD T"@MENU"
: IF VAL(S$)>=I THEN 230
: RESTORE LINE 260,6*VAL(S$)+1
: READ S$,S$(1),S$(2),S$(3),S$(4),R$
0250 REM DATA "memory size","board 1 type","board 2 type","chip row order"
0260 DATA "16K","6787-A (16K)"," "," "," ","--12----"
: DATA "32K","6787-1A (32K)"," "," "," ","3412----"
: DATA "32K","7587-1B (32K)"," "," "," ","---1----"
0270 DATA "48K","6787-1A (32K)","6787-A (16K)"," "," ","3412--56"
: DATA "64K","6787-1A (32K)","6787-1A (32K)"," "," ","34127856"
0280 DATA "64K","6787-1A (32K)","7587-1B (32K)"," "," ","3412--5-"
: DATA "64K","7587-1A (64K)"," "," "," ","--21----"
: DATA "96K","6787-1A (32K)","7587-1A (64K)"," "," ","3412-65-"
0290 DATA "96K","7587-3B (96K)"," "," "," ","-321----"
: DATA "128K","6787-1A (32K)","7587-3B (96K)"," "," ","3412765-"
0300 DATA "128K","7587-3A (128K)"," "," "," ","4321----"
: DATA "160K","7587-3A (128K)","7587-1B (32K)"," "," ","4321---5"
: DATA "160K","6787-1A (32K)","7587-3A (128K)"," "," ","34127658"
: DATA "192K","7587-3A (128K)","7587-1A (64K)"," "," ","4321--65"
0310 DATA "256K","7587-3A (128K)","7587-3A (128K)"," "," ","43218765"
: DATA "512K","7587-3A (128K)","7587-3A (128K)","7587-3A (128K)","7587-3A (
128K)","43218765"
: DATA "end"," "," "," "," "," "
0320 REM ^%INPUT CONTROL MEMORY CONFIGURATION.............
: SELECT PRINT /005(80)
: PRINT AT(2,0,)
: PRINT
: PRINT " SIZE","BOARD #1","BOARD #2"
: I=0
: RESTORE LINE 370
0330 READ M$,M$(1),M$(2),R1$
: IF M$="end" THEN 340
: PRINTUSING "SF'## ",I;
: PRINT ; M$,M$(1),M$(2)
: I=I+1
: GOTO 330
0340 PRINT
: PRINT "Enter the control memory configuration, SF'?";
0350 KEYIN M$,,360
: GOTO 350
0360 IF STR(M$,,1) =HEX(1F) THEN 180
: IF VAL(M$)>=I THEN 350
: RESTORE LINE 370,4*VAL(M$)+1
: READ M$,M$(1),M$(2),R1$
0370 REM DATA "memory size","board 1 type","board 2 type","chip row order"
: DATA "16K","6788-A (8K)","6788-A (8K)","12-43-"
: DATA "16K","7588-A (16K)"," ","-1----"
0380 DATA "20K","6788-1A (12K)","6788-A (8K)","12543-"
: DATA "24K","6788-1A (12K)","6788-1A (12K)","125436"
: DATA "32K","7588-1A (32K)"," ","21----"
: DATA "64K","7588-1A (32K)","7588-1A (32K)","21-43-"
: DATA "end"," "," "," "
0390 REM %^INPUT SYSTEM ERROR..................................
: REM EXIT -- E=ERR TYPE (1=AECM,2=BECM,3=PECM,4=VECM,5=AEDM,6=BEDM,7=PEDM,
8=REDM,9=VEDM)
: REM -- E$=ERR MNEMONIC (EG, PEDM)
: REM -- A$=BINARY ADDRESS
: REM -- D$=BINARY DATA (IF ANY)
0400 REM -- A2$=BINARY ADDRESS OF CONFLICT LOCATION (ADDRESSING ERRORS)
: REM
0410 PRINT HEX(0D03);"Edit SYSTEM ERROR. SYSTEM ERROR (
)"
: E$="PECM"
: T=42
0420 REM ERROR TYPE
: PRINT AT(0,T);
: LINPUT ?-E$
: MAT SEARCH "AECMBECMPECMVECMAEDMBEDMPEDMREDMVEDM",=STR(E$) TO L$ STEP 4
: IF L$=HEX(0000) THEN 420
: E=INT(VAL(L$,2)+3)/4
: T=T+5
0430 REM ADDRESS
: A1$=ALL("0")
: GOSUB 480
: HEXPACK A$ FROM STR(A1$,4)
: P$=A1$
: IF STR(E$,,1)<>"A" THEN 440
: GOSUB 480
: HEXPACK A2$ FROM STR(A1$,4)
: P2$=A1$
0440 REM DATA
: T$=HEX(060606000404000200)
: L=VAL(STR(T$,E))
: IF L=0 THEN 470
: D1$=ALL("0")
0450 IF STR(E$,3,2)<>"DM" OR E$="REDM" THEN 460
: PRINT AT(2,T-2);BOX(0,4); AT(1,T-5);"even "; BOX(1,0);" ";BOX(1,0);" ";
BOX (1,0);" ";BOX(1,0);" odd";AT(2,T+3);BOX(0,4);
0460 PRINT AT(0,T);
: LINPUT ?-STR(D1$,,L)
: IF VER(D1$,"HHHHHH")<>6 THEN 450
: HEXPACK D$FROM D1$
0470 REM DONE EDIT
: PRINT AT(0,0,18)
: ON E GOTO 520,560,570,700,710,770,780,790,810
: STOP "SHOULD NEVER GET HERE"#
0480 REM ADDRESS
: REM ENTRY -- E$ = ERR MNEMONIC
: REM EXIT -- A1$ = ASCII ADDRESS (RIGHT JUSTIFIED)
: IF STR(E$,3,1)="D" THEN 500
0490 REM CONTROL MEMORY ADDRESS
: PRINT AT(0,T);
: LINPUT ?-STR(A1$,4)
: IF VER(STR(A1$,4),"HHHH")<>4 THEN 490
: T=T+5
: RETURN
0500 REM DATA MEMORY ADDRESS
: STR(A1$,3,1)="."
: PRINT AT(0,T);
: LINPUT ?-STR(A1$,1,3)
: PRINT AT(0,(T+3));
: LINPUT "."? -STR(A1$,4,4)
: IF VER(STR(A1$),"HHHH ")<>7 THEN 510
: MAT COPY -STR(A1$,,4) TO -STR(A1$)
: STR(A1$,,3)="00."
0510 IF VER(A1$,"H0.HHHH")<>7 OR POS("048C26AE"=STR(A1$,1,1))=0 THEN 500
: PRINT AT(0,T+1,8); A1$;
: T=T+8
: RETURN
0520 REM %AECM....................................
: REM WHICH BOARD(S)?
: GOSUB '57(A2$)
: B2=B
: Q2=Q
: GOSUB '57(A$)
: REM CHECK FOR ADDRESSING ERROR WITHIN CHIP
: IF Q=Q2 THEN 560
0530 PRINT AT(0,0);
: IF B=B2 THEN PRINT "Error in board";B
: ELSE PRINT "Error in boards";B;"&";B2
0540 PRINT AT(4,0);"Writing to location ";HEXOF(A2$);" seems to modify locatio
n ";HEXOF(A$);" bits ";HEXOF(D$)
0550 PRINT
: PRINT "or the following chip failure may have occured:"
: PRINT " BECM ";HEXOF(A$);" ";HEXOF(D$)
: GOTO 690
0560 REM %BECM....................................
: X$=D$
: GOTO 620
0570 REM %PECM....................................
: REM GET DISK FILE TO COMPARE WITH
: PRINT AT(2,0);"Disk file to compare instruction with (";HEX(222022);" if
none):";
: LINPUT ?-F$
: IF F$<>" " THEN 580
: X$=ALL(FF)
: GOTO 620
0580 PRINT AT(3,0);
: LINPUT " Disk address (/310,/B10,/320 OR /B20):"?-F1$
: MAT SEARCH "/310/B10/320/B20",=STR(F1$) TO L$
: IF L$=HEX(0000) THEN 580
: ON (VAL(L$,2)+3)/4 SELECT #1/310;#1/B10;#1/320;#1/B20
0590 LIMITS T#1,F$,F1,F2,F3,F4
: ERRORPRINT "DISK ERROR";ERR
: GOTO 570
0600 IF F4=2 THEN 610
: PRINT "FILE NOT ON DISK"
: GOTO 570
0610 REM SEARCH DISK FILE
: GOSUB '52(A$)
: IF F6$="FOUND" THEN X$=D$ XOR F5$
: ELSE X$=ALL(FF)
: PRINT AT(1,33,210);
: IF F6$="FOUND" THEN PRINT "XOR with disk file ";HEXOF(X$)
: ELSE PRINT "Instruction not in disk file."
0620 REM WHICH BOARD? ROW?
: GOSUB '57(A$)
: Q=MOD(Q-1,3)
: PRINT AT(0,0);
: IF B=3 THEN PRINT "Error in bootstrap."
: IF B=1 OR B=2 THEN PRINT "Error in ";STR(M$(B),,4);",Board";B
: ELSE GOTO 690
0630 REM WHICH CHIPS?
: GOSUB '53(X$,24)
0640 REM DISPLAY BOARD
: IF STR(M$(B),,4)="6788" THEN GOSUB '54(6)
: ELSE GOSUB '54(4)
: FOR I=1 TO 24
: IF C$(I)<>"E" THEN 680
: IF G$="Y" THEN GOTO 660
: PRINT AT(3*(INT((I-1)/12)+Q*2)+3,4*MOD(I-1,6)+1+55*INT(MOD(I-1,12)/6));"(
X)"
0650 PRINT AT(3*(INT((I-1)/12)+Q*2)+4,4*MOD(I-1,6)+1+55*INT(MOD(I-1,12)/6));"(
X)";
: GOTO 680
0660 PRINT AT(3*(INT((I-1)/12)+Q*2)+3,3*MOD(I-1,6)+2+59*INT(MOD(I-1,12)/6));HE
X(020402020E);" "
0670 PRINT AT(3*(INT((I-1)/12)+Q*2)+4,3*MOD(I-1,6)+2+59*INT(MOD(I-1,12)/6));"
";HEX(0F)
0680 NEXT I
0690 KEYIN K$,,180
: GOTO 390
0700 REM %VECM....................................
: X$=HEX(FFFFFF)
: GOTO 620
0710 REM %AEDM....................................
0720 REM WHICH BOARD(S)?
: GOSUB '56(P2$,A2$)
: P2$=P9$
: B2=B
: Q2=Q
: GOSUB '56(P$,A$)
: P$=P9$
0730 REM CHECK FOR ADDRESSING ERROR WITHIN CHIP
: IF Q<>Q2 THEN 740
: T$=A$ XOR A2$ AND HEX(0001)
: IF STR(T$,,2)=HEX(0000) THEN 770
0740 PRINT AT(0,0);
: IF B=B2 THEN PRINT "Error in board";B
: ELSE PRINT "Error in boards";B;"&";B2
0750 PRINT AT(4,0);"Writing to location ";P2$;"0.";HEXOF(A2$);" seems to modif
y location ";P$;"0.";HEXOF(A$);" bits ";HEXOF(STR(D$,,2))
0760 PRINT
: PRINT "or the following chip failure may have occured:"
: PRINT " BEDM ";P$;"0.";HEXOF(A$);" ";HEXOF(STR(D$,,2))
: GOTO 900
0770 REM %BEDM....................................
: IF STR(D$,,2)<>HEX(0000) THEN X$=STR(D$,,2) & HEX(00)
: ELSE X$=HEX(0000C0)
: GOTO 800
0780 REM %PEDM....................................
: X$=HEX(FFFFC0)
: GOTO 820
0790 REM %REDM....................................
: IF STR(D$,,1)<>HEX(00) THEN X$=STR(D$,,1) & HEX(0000)
: ELSE X$=HEX(00FFC0)
0800 REM CHECK FOR EVEN/ODD ADDRESS
: REM THIS IF WILL CAUSE THE ERROR DATA TO REVERSE ON ODD ADDRESS IF MOD(V
AL(STR(A$,2)),2)=1 THEN 820
: X1$=STR(X$,2,1) & STR(X$,,1)
: STR(X$,,2)=X1$
: GOTO 820
0810 REM %VEDM....................................
: X$=HEX(FFFFC0)
0820 REM WHICH BOARD? ROW?
: GOSUB '56(P$,A$)
: PRINT AT(0,0);"Error in ";STR(S$(B),,4);",Board";B
: Q=MOD(Q-1,4)
0830 REM WHICH CHIPS?
: GOSUB '53(X$,18)
0840 REM DISPLAY BOARD
: GOSUB '55(4)
: FOR I=1 TO 18
: IF C$(I)<>"E" THEN 890
: L=I-2
: IF I>10 THEN L=L+1
: IF I=1 THEN L=9
: IF I=2 THEN L=18
0850 IF G$<>"Y" THEN 870
: PRINT AT(3*Q+4,3*MOD(L-1,9)+2+50*INT((L-1)/9));HEX(06020402020E);" ";
0860 PRINT AT(3*Q+5,3*MOD(L-1,9)+2+50*INT((L-1)/9));" ";HEX(0F);
: GOTO 890
0870 PRINT AT(3*Q+5,4*MOD(L-1,9)+1+43*INT((L-1)/9));"(X)";
0880 PRINT AT(3*Q+6,4*MOD(L-1,9)+1+43*INT((L-1)/9));"(X)";
0890 NEXT I
0900 KEYIN K$,,390
: GOTO 390
0910 REM %FIND INSTRUCTION IN DISK FILE..........................
: REM ENTRY -- L$=INSTRUCTION ADDRESS
0920 DEFFN'52 (L$)
: FOR S=F1+F3-3 TO F1 STEP -1
: DATA LOAD DA T#1,(S) F2$,F3$,F$()
: F4$=F3$ ADDC STR(F3$,3,1)
: IF STR(F2$,2,1)=HEX(03) AND L$>=STR(F3$,,2) AND L$<F4$ THEN 930
: NEXT S
: F6$="NOT FOUND"
: RETURN
0930 F4$=L$ SUBC STR(F3$,,2)
: F5$=STR(F$(),VAL(F4$,2)*3+1,3)
: F6$="FOUND"
: RETURN
0940 REM %FIND BAD CHIPS.................................
: REM ENTRY -- C$ = XOR OF DATA
: REM -- C = 8 OR 24 (BIT)
: REM EXIT -- C$(I) ="E" IFF BAD CHIP (I=1-18 OR 24)
0950 DEFFN'53(C$,C)
: C$()=" "
: FOR I=C TO 1 STEP -1
: IF C$>=HEX(800000) THEN C$(I)="E"
: ROTATEC (C$,1)
: NEXT I
: RETURN
0960 REM %^DISPLAY CONTROL MEMORY BOARD.........................
: REM ENTRY-- X=no. of chip rows on board
: REM
0970 DEFFN'54(X)
: PRINT AT(2,0);HEX(06);
: IF G$="Y" THEN GOTO 2000
: FOR I=1 TO X
: PRINT Z$,Z1$,Z1$
: NEXT I
: PRINT Z4$,Z4$
: SELECT PRINT /005(0)
: PRINT Z2$
: SELECT PRINT /005(80)
: RETURN
0980 REM %DISPLAY DATA MEMORY BOARD.........................
: REM ENTRY X = numnber of chip rows on the board
0990 DEFFN'55(X)
: IF G$="Y" THEN GOTO 2100
: PRINT AT(4,0);HEX(06);
: FOR I=1 TO 4
: PRINT Z$,Z3$,Z3$
: NEXT I
: PRINT Z4$,Z4$
1000 SELECT PRINT /005(0)
: PRINT Z2$
: SELECT PRINT /005(80)
: RETURN
1010 REM %^FIND DM BOARD & ROW........................
: REM ENTRY-- P9$=page (0,4,8,C)
: REM A9$=address
: REM EXIT-- B=board (1 or 2)
: REM Q=row (1-8)
: REM
1020 DEFFN'56(P9$,A9$)
: REM WHICH BOARD?
: IF A9$<HEX(2000) THEN P9$="0"
: Q=INT(VAL(A9$)/4)+64*(POS("048C26AE"=P9$)-1)+1
: CONVERT STR(S$,,LEN(S$)-1) TO X
: IF Q<=X THEN 1040
1030 PRINT AT(5,0);"Invalid address -- not within specified memory configurati
on."
: RETURN CLEAR ALL
: GOTO 690
1040 B=1
: IF STR(S$(1),1,4)="6787" AND Q>32 THEN B=2
: IF STR(S$(1),1,4)="7587" AND Q>128 THEN B=2
: IF STR(S$(1),1,4)="7587" AND Q>256 THEN B=3
: IF STR(S$(1),1,4)="7587" AND Q>384 THEN B=4
1050 REM DETERMINE CHIP ROW (1-8)
: IF B=2 AND STR(S$(1),1,4)="6787"THEN Q=Q-32
: IF B=2 AND STR(S$(1),1,4)="7587"THEN Q=Q-128
: IF B=3 AND STR(S$(1),1,4)="7587"THEN Q=Q-256
: IF B=4 AND STR(S$(1),1,4)="7587" THEN Q=Q-384
1060 IF STR(S$(B),1,4)="6787"THEN Q=INT((Q+7)/8)
: ELSE Q=INT((Q+31)/32)
: IF B=2 THEN Q=Q+4
: IF B=4 THEN Q=Q+4
: CONVERT Q TO Q$,(#)
: Q=POS(R$=Q$)
: RETURN
1070 REM %^FIND CM BOARD & ROW........................
: REM ENTRY-- A9$=address
: REM EXIT-- B=board (1,2 or 3)
: REM Q=row (1-6)
: REM
1080 DEFFN'57(A9$)
: REM WHICH BOARD?
: B=3
: Q=INT(VAL(A9$)/16)+1
: IF A9$>=HEX(8000) AND A9$<HEX(8400) THEN RETURN
: CONVERT STR(M$,,LEN(M$)-1) TO X
: IF Q*4>X THEN 1030
: B=1
: IF STR(M$(1),,4)="7588" THEN 1100
: IF Q=3 OR Q=4 OR Q=6 THEN B=2
1090 REM WHICH ROW?
: CONVERT Q TO Q$,(#)
: Q=POS(R1$=Q$)
: RETURN
1100 CONVERT INT((Q-1)/4)+1 TO Q$,(#)
: IF Q$="3" OR Q$="4" THEN B=2
: Q=POS(R1$=Q$)
: RETURN
2000 REM %^DISPLAY CONTROL MEMORY BOARD WITH GRAPHICS
: REM ENTRY X = number of chip rows on the board
2010 PRINT AT(2,0,); BOX(0,79);
2020 FOR I=1 TO X
: PRINT HEX(0D); BOX(3,0);" ";HEX(0A);
: FOR I1=1 TO 2
: FOR I2=1 TO 6
: PRINT BOX(2,2);I2;
: NEXT I2
: IF I1=1 THEN PRINT TAB(60);
: NEXT I1
: PRINT " ";HEX(0C); BOX(3,0);HEX(0A0A)
: NEXT I
2030 IF X>=6 THEN GOTO 2200
: FOR I=X TO 6
: PRINT BOX (2,0); TAB(79); BOX(2,0); HEX(0A)
: NEXT I
: GOTO 2200
2100 REM %DISPLAY DATA MEMORY BOARD WITH GRAPHICS
: REM ENTRY X = number of chip rows on the board
2110 PRINT AT(3,0,); BOX(0,79);
2120 FOR I=1 TO X
: PRINT HEX(0D); BOX(3,0);" ";HEX(0A);
: FOR I1=1 TO 2
: FOR I2=1 TO 9
: PRINT BOX(2,2);
: IF I2=9 THEN PRINT " P ";
: ELSE PRINT I2;
: NEXT I2
: IF I1=1 THEN PRINT TAB(51);
: NEXT I1
: PRINT " ";HEX(0C); BOX(3,0);HEX(0A0A)
: NEXT I
2130 IF X>=6 THEN GOTO 2200
: FOR I=X+1 TO 6
: PRINT BOX (2,0); TAB(79); BOX(2,0); HEX(0A)
: NEXT I
: GOTO 2200
2200 REM % DRAW BOTTOM OF BOARD
: PRINT BOX(1,0);TAB(79); BOX(1,0)
2210 PRINT BOX(0,1); " "; BOX(2,0); HEX(0A0A); BOX(0,26); TAB(27); HEX(0C0C);
BOX(2,0); BOX(0,3); TAB(30); BOX(2,0); HEX(0A0A); BOX(0,26); TAB(56); HEX
(0C0C); BOX(2,0); BOX(0,3); TAB(59); BOX(2,0); HEX(0A0A); BOX(0,19); TAB(
78); HEX(0C0C); BOX(2,0); BOX(0,1);
2220 RETURN
2500 STOP " DONE"
8000 REM %^SAVE FILE..........................
: SCRATCH T"MECI"
: SAVE T()"MECI"
: STOP "SAVED MECI"
: REM %
9000 REM %LIST...............................
: SELECT LIST /215(132)
: LIST "MECI"D
: LIST "MECI"V
: LIST "MECI"#
: LIST '
: SELECT LIST /005(80)