================================================================================ Note 7.0 Falcon(+) Memory Maps No replies JAWS::KAISER 691 lines 25-MAR-1985 09:16 -------------------------------------------------------------------------------- +---------------+ +-----------------+ | d i g i t a l | | uNOTE # 007 | +---------------+ +-----------------+ +----------------------------------------------------+-----------------+ | Title: User Defined Memory Maps for the FALCON | Date: 01-May-84 | | and the FALCON+ | | +----------------------------------------------------+-----------------+ | Originator: Jack Toto | Page 1 of 12 | +----------------------------------------------------+-----------------+ The memory maps on the Falcon, and Falcon Plus are defined by the FPLA (Field Programmable Logic Array) that is located on board in socket XE41. This micronote explains how to redefine the existing maps. The equipment needed to custom build the FPLA is as follows: 1. Signetics NS82S100N FPLA. 2. Signetics NS82S100N FPLA worksheet. 3. PROM programmer that supports Signetics NS82S100N FPLA. 4. User written routine to convert binary into hex form, needed for the PROM programmer. The Falcon or Falcon Plus can be configured to any one of four standard memory maps. When you custom build the memory map FPLA, you may keep this ability to select any one of four memory map schemes, however it is not nessecary to build in the four maps, you may build an FPLA with only one map for the Falcon. Further the addresses of the SLUs and Parallel I/O Port can be be changed to some other addresses on the module, or they can be relocated off the module to some other device such as an MXV11-A/B, DLV11-J, DRV11-J, etc. The memory map is defined by: 1. Selecting a range of addresses, for example addresses 077777 - 037777. This includes selecting the addresses of the boards SLUs and PIO. 2. Asserting or deasserting the bits which define that range. 3. Defining which one of four memory maps the selected range of addresses will respond. 4. Selecting an enable bit (A7 -A0), which tells the T-11 where to find that range of addresses: on the Q-bus, on board the Falcon Plus in one of the two sockets, or in the local RAM. When mapping an FPLA to be used with the KXT11-A2 or KXT11-A5 ODT ROMs, you must map addresses 177600 - 177777 to the local RAM that comes on board the Falcon or Falcon Plus. This space is used for a scratch pad area by Macro ODT. If Macro ODT is not going to be used than this address range can be left to be selected by the user. Beyond this all addresses and functions can be mapped off board. Below is an example of an FPLA worksheet that was completed specifying one map (map 0) which maps all of memory to the Q-bus, and changes the address of SLU2 from 176540 - 176547, to 176500 - 176507. This format Page 2 is simalar to the Signetics FPLA worksheet. For each address range shown, the combination of bits set (H), cleared (L), or in the don't care state (-) define that range. Further each address range has associated with it an output enable bit (A) that identifies the location of the memory containing that range. It is possible to define larger or smaller ranges then the ones shown here, if needed. More examples are provided in the Falcon Plus User's Guide Appendix H. THIS IS AN FPLA MAP FOR COMPANY: XYZ I I I I I I I I I I I I I I I I 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 7 8 6 9 5 0 4 1 3 2 2 3 1 5 0 4 F F F F F F F -------------------------------------------------------------------------- ADDRESS X 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 RANGE X 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 177600-177777 RAM - - - H H H H H H - - - - L L H A 00 177570-177577 QB - - - H H H H H L H H H H L L H A 01 177560-177567 DL0 - - - H H H H H L H H H L L L H A 02 177540-177557 QB - - - H H H H H L H H L - L L H A 03 177500-177537 QB - - - H H H H H L H L - - L L H A 04 177400-177477 QB - - - H H H H H L L - - - L L H A 05 177000-177377 QB - - - H H H H L - - - - - L L H A 06 176600-176777 QB - - - H H H L H H - - - - L L H A 07 176560-176577 QB - - - H H H L H L H H H - L L H A 08 176550-176557 QB - - - H H H L H L H H L H L L H A 09 176540-176547 QB - - - H H H L H L H H L L L L H A 10 176510-176537 QB - - - H H H L H L H L - H L L H A 11 176500-176507 DL1 - - - H H H L H L H L L L L L H A 12 176400-176477 QB - - - H H H L H L L - - - L L H A 13 176300-176377 QB - - - H H H L L H H - - - L L H A 14 176240-176277 QB - - - H H H L L H L H - - L L H A 15 176220-176237 QB - - - H H H L L H L L H - L L H A 16 176210-176217 QB - - - H H H L L H L L L H L L H A 17 176200-176207 PIO - - - H H H L L H L L L L L L H A 18 176000-176177 QB - - - H H H L L L - - - - L L H A 19 174000-175777 QB - - - H H L - - - - - - - L L H A 20 170000-173777 QB - - - H L - - - - - - - - L L H A 21 160000-167777 QB - - - L - - - - - - - - - L L H A 22 140000-157777 QB H H L - - - - - - - - - - L L L A 23 100000-137777 QB H L - - - - - - - - - - - L L L A 24 000000-077777 QB L - - - - - - - - - - - - L L L A 25 7 6 5 4 3 2 1 0 Page 3 Once the address ranges have been coded, they need to be converted into the formatted file shown directly below. This file will be used as the input file to a program (see end of Micronote) that will output the FPLA terms in a format that is usable by the PROM Programmer itself. When converting the above worksheet to FPLA terms, the following should be considered: 1. The area at the beginning of the file may be used as a comment area as long as the word "START" is not used in the comments. "START" is the key word to begin the formatting process while the word "END" is the key word used to signal the formatter that the processing must be terminated. Both words MUST appear in capital letters. 2. The layout of the map must be as follows: ----- I15 I14 I13 I12 I11 I10 I09 I08 I07 I06 I05 I04 I03 I02 I01 I00 | TERM1 O7 O6 O5 O4 O3 O2 O1 O0 | ----- ----- I15 I14 I13 I12 I11 I10 I09 I08 I07 I06 I05 I04 I03 I02 I01 I00 | TERM2 O7 O6 O5 O4 O3 O2 O1 O0 | ---- Where I15 is input 15 on the FPLA ,I14 is input 14 on the PLA etc. further O7 is output 7 on the FPLA and O6 is output 6 on the PLA. 3. "-" indicates a "DON'T CARE ON THAT INPUT" AND * indicates a "DON'T CARE ON THIS OUTPUT". The following is the formatted FPLA map for the worksheet shown above. Notice that bus address bit 00 is translated to FPLA bit I14, that bus address 01 is translated to FPLA bit I00, that is, the bus address bits are not directly translated to the FPLA bits, however the worksheet activity (output) bits F7 - F0 translate directly to FPLA bits A7 - A0. START LH--HHH---HHH--L A******* LHHHHHH---HHLHHL *****A** LHHHHHH---HHLHLL **A***** LHLHHHH---HHLH-L *****A** LH-HHHH---HHLL-L *****A** LH-LHHH---HHL--L *****A** LH--LHH---HH---L *****A** LH--HHH---HLH--L *****A** LHHHHHH---HLLH-L *****A** Page 4 LHLHHHH---HLLHHL *****A** LHLHHHH---HLLHLL *****A** LH-HHHH---HLLLHL *****A** LHLHHHH---HLLLLL ******A* LH-LHHH---HLL--L *****A** LH-HLHH---HLH--L *****A** LH-LLHH---HLHH-L *****A** LHHLLHH---HLHL-L *****A** LHLLLHH---HLHLHL *****A** LHLLLHH---HLHLLL ***A**** LH--LHH---HLL--L *****A** LH---LH---H----L *****A** LH----H---L----L *****A** LH----L--------L *****A** LL-----HHL-----L *****A** LL-----LH------L *****A** LL------L------L *****A** Translation: The following is a translation of FPLA terms and FPLA activity outputs, and the actual pin name on the FPAL chip. I15....D15 (02 on worksheet above) used for high order bit of map decode. I14....LBS7 (00 on worksheet above) asserted for all I/O page addresses. I13....AD04 I12....AD06 I11....AD08 I10....AD10 I09....AD12 I08....AD14 I07....AD15 I06....AD13 I05....AD11 I04....AD09 I03....AD07 I02....AD05 I01....AD03 Page 5 I00....DO (01 on worksheet above) used for the low order bit of map decode. A7.....F7 on worksheet above, used for local RAM enable. A6.....F6 on worksheet above, used for socket A enable. A5.....F5 on worksheet above, used for DL0 enable. A4.....F4 on worksheet above, used for PIO enable. A3.....F3 on worksheet above, not used. A2.....F2 on worksheet above, used for all Q-bus enables. A1.....F1 on worksheet above, used for DL1 enable. A0.....F0 on worksheet above, used for socket B enable. The output file shown below is an example of one that would be loadable into a PROM Programmer in order to blast the FPLA chip. An example of a program that will produce the formatted output file shown below can be found at the end of this micronote. START $A0000, ( ADDRESS ) FF ( FIRST 8 BITS ) $A100, ( ADDRESS ) FF 00 FD FB F1 EF 7E C1 80 7F 00 FF FF FF FF FF FF FF . . ( OTHER TERMS IN HEX BYTES ) . . $A200 ( NEXT ADDRESS BOUNDARY ) . . ( TERMS ) . $A300 ( ADDRESS ) . . ( TERMS ) . $A400 ( ADRESSS ) . . ( TERMS ) . ETC. Page 6 Once the FPLA is built, it is placed into socket XE41, the memory will be configured to whatever the FPLA terms look like. The Falcon Plus needs to be strapped for a start address, a memory map (1 of 4) that matches the one called out in the FPLA, and other user configurable options. FPLA FORMAT PROGRAM ********** ============================== 1 REM THIS PROGRAM IS FOR NORMAL PLA MAP INPUTS 2 PRINT "INPUT DEVICE AND FILE NAME";H1$ 4 INPUT H1$ 5 OPEN H1$ FOR INPUT AS FILE #1 7 PRINT "DO YOU WISH OUTPUT COMPARE FILE ON LINE PRINTER,DEVICE,BOTH OR NONE ? " 8 PRINT "DEFAULT IS NONE (LP,DEV,B,N) ";N1$ 10 INPUT N1$ 12 IF N1$="LP" THEN GO TO 30 16 IF N1$="DEV" THEN GO TO 36 20 IF N1$="B" THEN GO TO 42 22 LET N$="N" 23 LET K1$="N" 24 GO TO 50 30 OPEN "LP:" FOR OUTPUT AS FILE #2 33 LET N$="Y" 34 LET K1$="N" 35 GO TO 50 36 PRINT "WHAT IS DEVICE AND FILE NAME";U1$ \ INPUT U1$ 37 OPEN U1$ FOR OUTPUT AS FILE #3 38 LET N$="N" 39 LET K1$="Y" 40 GO TO 50 42 OPEN "LP:" FOR OUTPUT AS FILE #2 45 LET N$="Y" 46 PRINT "WHAT IS DEVICE AND FILE NAME";U1$ \ INPUT U1$ 47 OPEN U1$ FOR OUTPUT AS FILE #3 48 LET K1$="Y" 50 PRINT "WHAT DEVICE AND FILE NAME FOR OUTPUT PROM PROGRAMMER FILE";W$ 52 INPUT W$ 55 OPEN W$ FOR OUTPUT AS FILE #4 60 LET Y1=1 62 LET H1$=CHR$(2) 64 LET H2$=CHR$(3) 66 LET Z$=CHR$(10)+CHR$(13) 68 LET L1$=" " 70 INPUT #1,A$ 71 IF N$="N" THEN GO TO 73 72 PRINT #2,A$ 73 IF K1$="N" THEN GO TO 76 74 PRINT #3,A$ 75 PRINT #4,A$ 76 IF A$="START" THEN GO TO 80 78 GO TO 70 80 LET S1$="$A0000," 82 PRINT #4,H1$;S1$ 84 PRINT #4,"FF " Page 7 86 LET S1$="$A100," 88 PRINT #4,S1$ 90 GO TO 92 91 PRINT #4,S1$ 93 INPUT #1,I1$ 92 IF I1$="END" THEN GO TO 120 94 INPUT #1,O1$ 95 INPUT #1,I2$ 96 IF I2$="END" THEN GO TO 130 97 INPUT #1,O2$ 98 INPUT #1,I3$ 99 IF I3$="END" THEN GO TO 140 100 INPUT #1,O3$ 101 INPUT #1,I4$ 102 IF I4$="END" THEN GO TO 150 103 INPUT #1,O4$ 104 INPUT #1,I5$ 105 IF I5$="END" THEN GO TO 160 106 INPUT #1,O5$ 107 INPUT #1,I6$ 108 IF I6$="END" THEN GO TO 170 109 INPUT #1,O6$ 110 INPUT #1,I7$ 111 IF I7$="END" THEN GO TO 180 112 INPUT #1,O7$ 113 INPUT #1,I8$ 114 IF I8$="END" THEN GO TO 190 115 INPUT #1,O8$ 117 GO TO 200 120 LET I1$="0000000000000000" \ LET O1$="AAAAAAAA" 121 LET I2$="0000000000000000" \ LET O2$="AAAAAAAA" 122 LET I3$="0000000000000000" \ LET O3$="AAAAAAAA" 123 LET I4$="0000000000000000" \ LET O4$="AAAAAAAA" 124 LET I5$="0000000000000000" \ LET O5$="AAAAAAAA" 125 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 126 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 127 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 128 LET E1=1 129 GO TO 200 130 LET I2$="0000000000000000" \ LET O2$="AAAAAAAA" 132 LET I3$="0000000000000000" \ LET O3$="AAAAAAAA" 133 LET I4$="0000000000000000" \ LET O4$="AAAAAAAA" 134 LET I5$="0000000000000000" \ LET O5$="AAAAAAAA" 135 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 136 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 137 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 138 LET E1=1 139 GO TO 200 140 LET I3$="0000000000000000" \ LET O3$="AAAAAAAA" 143 LET I4$="0000000000000000" \ LET O4$="AAAAAAAA" 144 LET I5$="0000000000000000" \ LET O5$="AAAAAAAA" 145 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 146 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 147 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 148 LET E1=1 Page 8 149 GO TO 200 150 LET I4$="0000000000000000" \ LET O4$="AAAAAAAA" 154 LET I5$="0000000000000000" \ LET O5$="AAAAAAAA" 155 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 156 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 157 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 158 LET E1=1 159 GO TO 200 160 LET I5$="0000000000000000" \ LET O5$="AAAAAAAA" 165 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 166 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 167 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 168 LET E1=1 169 GO TO 200 170 LET I6$="0000000000000000" \ LET O6$="AAAAAAAA" 176 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 177 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 178 LET E1=1 179 GO TO 200 180 LET I7$="0000000000000000" \ LET O7$="AAAAAAAA" 187 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 188 LET E1=1 189 GO TO 200 190 LET I8$="0000000000000000" \ LET O8$="AAAAAAAA" 198 LET E1=1 200 PRINT I1$,O1$,Z$,I2$,O2$,Z$,I3$,O3$,Z$,I4$,O4$ 210 PRINT I5$,O5$,Z$,I6$,O6$,Z$,I7$,O7$,Z$,I8$,O8$ 215 IF N$="N" THEN GO TO 218 216 PRINT #2,I1$,O1$,Z$,I2$,O2$,Z$,I3$,O3$,Z$,I4$,O4$ 217 PRINT #2,I5$,O5$,Z$,I6$,O6$,Z$,I7$,O7$,Z$,I8$,O8$ 218 IF K1$="N" THEN GO TO 221 219 PRINT #3,I1$,O1$,Z$,I2$,O2$,Z$,I3$,O3$,Z$,I4$,O4$ 220 PRINT #3,I5$,O5$,Z$,I6$,O6$,Z$,I7$,O7$,Z$,I8$,O8$ 221 LET X=16 235 LET D1$=SEG$(I1$,X,X) 240 IF D1$="H" GO TO 260 245 IF D1$="L" GO TO 270 250 IF D1$="-" GO TO 280 252 IF D1$="0" GO TO 256 255 GO TO 1340 256 LET A(1,0)=1 \ LET A(1,1)=1 257 GO TO 285 260 LET A(1,0)=1 \ LET A(1,1)=0 265 GO TO 285 270 LET A(1,0)=0 \ LET A(1,1)=1 275 GO TO 285 280 LET A(1,0)=0 \ LET A(1,1)=0 285 LET D2$=SEG$(I2$,X,X) 290 IF D2$="H" GO TO 315 300 IF D2$="L" GO TO 325 305 IF D2$="-" GO TO 335 306 IF D2$="0" GO TO 309 307 GO TO 1340 309 LET A(1,2)=1 \ LET A(1,3)=1 310 GO TO 340 Page 9 315 LET A(1,2)=1 \ LET A(1,3)=0 320 GO TO 340 325 LET A(1,2)=0 \ LET A(1,3)=1 330 GO TO 340 335 LET A(1,2)=0 \ LET A(1,3)=0 340 LET D3$=SEG$(I3$,X,X) 345 IF D3$="H" GO TO 365 350 IF D3$="L" GO TO 375 355 IF D3$="-" GO TO 385 357 IF D3$="0" GO TO 359 358 GO TO 1340 359 LET A(1,4)=1 \ LET A(1,5)=1 360 GO TO 390 365 LET A(1,4)=1 \ LET A(1,5)=0 370 GO TO 390 375 LET A(1,4)=0 \ LET A(1,5)=1 380 GO TO 390 385 LET A(1,4)=0 \ LET A(1,5)=0 390 LET D4$=SEG$(I4$,X,X) 400 IF D4$="H" GO TO 420 405 IF D4$="L" GO TO 430 410 IF D4$="-" GO TO 440 412 IF D4$="0" GO TO 414 413 GO TO 1340 414 LET A(1,6)=1 \ LET A(1,7)=1 415 GO TO 445 420 LET A(1,6)=1 \ LET A(1,7)=0 425 GO TO 445 430 LET A(1,6)=0 \ LET A(1,7)=1 435 GO TO 445 440 LET A(1,6)=0 \ LET A(1,7)=0 445 LET A8=A(1,0)*1+A(1,2)*2+A(1,4)*4+A(1,6)*8 450 LET A9=A(1,1)*1+A(1,3)*2+A(1,5)*4+A(1,7)*8 455 LET A8=15-A8 \ LET A9=15-A9 460 LET D5$=SEG$(I5$,X,X) 465 IF D5$="H" GO TO 485 470 IF D5$="L" GO TO 495 475 IF D5$="-" GO TO 505 476 IF D5$="0" GO TO 479 477 GO TO 1340 479 LET B(1,0)=1 \ LET B(1,1)=1 480 GO TO 510 485 LET B(1,0)=1 \ LET B(1,1)=0 490 GO TO 510 495 LET B(1,0)=0 \ LET B(1,1)=1 500 GO TO 510 505 LET B(1,0)=0 \ LET B(1,1)=0 510 LET D6$=SEG$(I6$,X,X) 515 IF D6$="H" GO TO 535 520 IF D6$="L" GO TO 545 525 IF D6$="-" GO TO 555 526 IF D6$="0" GO TO 529 527 GO TO 1340 529 LET B(1,2)=1 \ LET B(1,3)=1 530 GO TO 560 Page 10 535 LET B(1,2)=1 \ LET B(1,3)=0 540 GO TO 560 545 LET B(1,2)=0 \ LET B(1,3)=1 550 GO TO 560 555 LET B(1,2)=0 \ LET B(1,3)=0 560 LET D7$=SEG$(I7$,X,X) 565 IF D7$="H" GO TO 585 570 IF D7$="L" GO TO 595 575 IF D7$="-" GO TO 605 576 IF D7$="0" GO TO 579 577 GO TO 1340 579 LET B(1,4)=1 \ LET B(1,5)=1 580 GO TO 610 585 LET B(1,4)=1 \ LET B(1,5)=0 590 GO TO 610 595 LET B(1,4)=0 \ LET B(1,5)=1 600 GO TO 610 605 LET B(1,4)=0 \ LET B(1,5)=0 610 LET D8$=SEG$(I8$,X,X) 615 IF D8$="H" GO TO 635 620 IF D8$="L" GO TO 645 625 IF D8$="-" GO TO 655 626 IF D8$="0" GO TO 629 627 GO TO 1340 629 LET B(1,6)=1 \ LET B(1,7)=1 630 GO TO 660 635 LET B(1,6)=1 \ LET B(1,7)=0 640 GO TO 660 645 LET B(1,6)=0 \ LET B(1,7)=1 650 GO TO 660 655 LET B(1,6)=0 \ LET B(1,7)=0 660 LET B8=B(1,0)*1+B(1,2)*2+B(1,4)*4+B(1,6)*8 665 LET B9=B(1,1)*1+B(1,3)*2+B(1,5)*4+B(1,7)*8 670 LET B8=15-B8 \ LET B9=15-B9 675 IF B8<10 THEN LET P1=0 680 IF B8<10 THEN GO TO 720 685 IF B8=10 THEN LET B8$="A" 690 IF B8=11 THEN LET B8$="B" 695 IF B8=12 THEN LET B8$="C" 700 IF B8=13 THEN LET B8$="D" 705 IF B8=14 THEN LET B8$="E" 710 IF B8=15 THEN LET B8$="F" 715 LET P1=1 720 IF A8<10 THEN LET P0=0 725 IF A8<10 THEN GO TO 765 730 IF A8=10 THEN LET A8$="A" 735 IF A8=11 THEN LET A8$="B" 740 IF A8=12 THEN LET A8$="C" 745 IF A8=13 THEN LET A8$="D" 750 IF A8=14 THEN LET A8$="E" 755 IF A8=15 THEN LET A8$="F" 760 LET P0=1 765 IF P1=0 THEN GO TO 780 770 IF P0=0 THEN GO TO 805 775 GO TO 795 Page 11 780 IF P0=1 THEN GO TO 815 785 PRINT #4,STR$(B8);STR$(A8);L1$ 790 GO TO 820 795 PRINT #4,B8$;A8$;L1$ 800 GO TO 820 805 PRINT #4,B8$;STR$(A8);L1$ 810 GO TO 820 815 PRINT #4,STR$(B8);A8$;L1$ 820 IF B9<10 THEN LET P3=0 825 IF B9<10 THEN GO TO 865 830 IF B9=10 THEN LET B9$="A" 835 IF B9=11 THEN LET B9$="B" 840 IF B9=12 THEN LET B9$="C" 845 IF B9=13 THEN LET B9$="D" 850 IF B9=14 THEN LET B9$="E" 855 IF B9=15 THEN LET B9$="F" 860 LET P3=1 865 IF A9<10 THEN LET P2=0 870 IF A9<10 THEN GO TO 910 875 IF A9=10 THEN LET A9$="A" 880 IF A9=11 THEN LET A9$="B" 885 IF A9=12 THEN LET A9$="C" 890 IF A9=13 THEN LET A9$="D" 895 IF A9=14 THEN LET A9$="E" 900 IF A9=15 THEN LET A9$="F" 905 LET P2=1 910 IF P3=0 THEN GO TO 925 915 IF P2=0 THEN GO TO 945 920 GO TO 937 925 IF P2=1 THEN GO TO 955 930 PRINT #4,STR$(B9);STR$(A9);L1$ 935 GO TO 960 937 PRINT #4,B9$;A9$;L1$ 940 GO TO 960 945 PRINT #4,B9$;STR$(A9);L1$ 950 GO TO 960 955 PRINT #4,STR$(B9);A9$;L1$ 960 LET X=X-1 965 IF X>0 THEN GO TO 235 970 LET Y=8 975 LET C1$=SEG$(O1$,Y,Y) 980 IF C1$="A" THEN LET A1=1 985 IF C1$="*" THEN LET A1=0 990 LET C2$=SEG$(O2$,Y,Y) 995 IF C2$="A" THEN LET A2=1 1000 IF C2$="*" THEN LET A2=0 1005 LET C3$=SEG$(O3$,Y,Y) 1010 IF C3$="A" THEN LET A3=1 1015 IF C3$="*" THEN LET A3=0 1020 LET C4$=SEG$(O4$,Y,Y) 1025 IF C4$="A" THEN LET A4=1 1030 IF C4$="*" THEN LET A4=0 1035 LET C5$=SEG$(O5$,Y,Y) 1040 IF C5$="A" THEN LET A5=1 1045 IF C5$="*" THEN LET A5=0 Page 12 1050 LET C6$=SEG$(O6$,Y,Y) 1055 IF C6$="A" THEN LET A6=1 1060 IF C6$="*" THEN LET A6=0 1065 LET C7$=SEG$(O7$,Y,Y) 1070 IF C7$="A" THEN LET A7=1 1075 IF C7$="*" THEN LET A7=0 1080 LET C8$=SEG$(O8$,Y,Y) 1085 IF C8$="A" THEN LET F8=1 1090 IF C8$="*" THEN LET F8=0 1095 LET O9=(A1*1)+(A2*2)+(A3*4)+(A4*8) 1100 LET P9=(A5*1)+(A6*2)+(A7*4)+(F8*8) 1105 LET O9=15-O9 \ LET P9=15-P9 1110 IF P9<10 THEN LET T1=0 1115 IF P9<10 THEN GO TO 1155 1120 IF P9=10 THEN LET P9$="A" 1125 IF P9=11 THEN LET P9$="B" 1130 IF P9=12 THEN LET P9$="C" 1135 IF P9=13 THEN LET P9$="D" 1140 IF P9=14 THEN LET P9$="E" 1145 IF P9=15 THEN LET P9$="F" 1150 LET T1=1 1155 IF O9<10 THEN LET T0=0 1160 IF O9<10 THEN GO TO 1200 1165 IF O9=10 THEN LET O9$="A" 1170 IF O9=11 THEN LET O9$="B" 1175 IF O9=12 THEN LET O9$="C" 1180 IF O9=13 THEN LET O9$="D" 1185 IF O9=14 THEN LET O9$="E" 1190 IF O9=15 THEN LET O9$="F" 1195 LET T0=1 1200 IF T1=0 THEN GO TO 1215 1205 IF T0=0 THEN GO TO 1240 1210 GO TO 1230 1215 IF T0=1 THEN GO TO 1255 1220 PRINT #4,STR$(P9);STR$(O9);L1$ 1225 GO TO 1260 1230 PRINT #4,P9$;O9$;L1$ 1235 GO TO 1260 1240 PRINT #4,P9$;STR$(O9);L1$ 1250 GO TO 1260 1255 PRINT #4,STR$(P9);O9$;L1$ 1260 LET Y=Y-1 1265 IF Y>0 THEN GO TO 975 1270 PRINT #4,Z$ 1275 LET Y1=Y1+1 1280 IF Y1=2 THEN LET S1$="$A200," 1285 IF Y1=3 THEN LET S1$="$A300," 1290 IF Y1=4 THEN LET S1$="$A400," 1295 IF Y1=5 THEN LET S1$="$A500," 1300 IF Y1=6 THEN LET S1$="$A600," 1305 PRINT #4,Z$ 1310 IF Y1=7 THEN GO TO 1320 1315 IF E1=0 THEN GO TO 91 1320 PRINT #4,H2$ 1330 CLOSE 1335 GO TO 1345 1340 PRINT "INPUT LINE IN ERROR" 1345 END