Source Code

002022,000001: # Copyright 2004 Ronald S. Burkey <info@sandroid.org> 002023,000002: # 002024,000003: # This file is part of yaAGC. 002025,000004: 002026,000005: # yaAGC is free software; you can redistribute it and/or modify 002027,000006: # it under the terms of the GNU General Public License as published by 002028,000007: # the Free Software Foundation; either version 2 of the License, or 002029,000008: # (at your option) any later version. 002030,000009: 002031,000010: # yaAGC is distributed in the hope that it will be useful, 002032,000011: # but WITHOUT ANY WARRANTY; without even the implied warranty of 002033,000012: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 002034,000013: # GNU General Public License for more details. 002035,000014: 002036,000015: # You should have received a copy of the GNU General Public License 002037,000016: # along with yaAGC; if not, write to the Free Software 002038,000017: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 002039,000018: 002040,000019: # Filename: ValidateIO.agc 002041,000020: # Purpose: This is the part of the Validation program that validates 002042,000021: # just the i/o instructions like READ, WRITE, etc. 002043,000022: # Mod history: 07/05/04 RSB. Began. 002044,000023: 002045,000024: # There is no good way to test the i/o channel functions solely within the 002046,000025: # CPU, as both peripheral devices and user interaction are really required. 002047,000026: # We use CH11 and CH12 briefly, since both are 15 bits wide and both readable 002048,000027: # and writeable. 002049,000028: # CH11 controls status lights on the DSKY, so we back it up first. It also 002050,000029: # contains the Engine On and Engine Off bits, so care should be taken to NOT 002051,000030: # run Validation when an engine is attached. 002052,000031: 002053,000032: 6425 24061 INCR ERRNUM 002054,000033: 002055,000034: # First check that L is channel 1 and Q is channel 2. 002056,000035: # Also, perform normal READs and WRITEs on channel 11. 002057,000036: 6426 24062 INCR ERRSUB # 1 002058,000037: 6427 37642 CA TEN 002059,000038: 6430 00006 EXTEND 002060,000039: 6431 01001 WRITE L 002061,000040: 6432 37640 CA FIVE 002062,000041: 6433 00006 EXTEND 002063,000042: 6434 01002 WRITE Q 002064,000043: 6435 00006 EXTEND 002065,000044: 6436 00011 READ CH11 # Back up CH11 so we don't permanently 002066,000045: 6437 54073 TS SKEEP3 # screw up the DSKY display 002067,000046: 6440 37641 CA NINE 002068,000047: 6441 00006 EXTEND 002069,000048: 6442 01011 WRITE CH11 002070,000049: 6443 30001 CA L 002071,000050: 6444 40000 COM 002072,000051: 6445 67642 AD TEN 002073,000052: 6446 00006 EXTEND 002074,000053: 6447 16451 BZF IO1 002075,000054: 6450 17165 TCF IOERROR 002076,000055: 6451 24062 IO1 INCR ERRSUB # 2 002077,000056: 6452 30002 CA Q 002078,000057: 6453 40000 COM 002079,000058: 6454 67640 AD FIVE 002080,000059: 6455 00006 EXTEND 002081,000060: 6456 16460 BZF IO2 002082,000061: 6457 17165 TCF IOERROR 002083,000062: 6460 24062 IO2 INCR ERRSUB # 3 002084,000063: 6461 00006 EXTEND 002085,000064: 6462 00001 READ L 002086,000065: 6463 40000 COM 002087,000066: 6464 67642 AD TEN 002088,000067: 6465 00006 EXTEND 002089,000068: 6466 16470 BZF IO3 002090,000069: 6467 17165 TCF IOERROR 002091,000070: 6470 24062 IO3 INCR ERRSUB # 4 002092,000071: 6471 00006 EXTEND 002093,000072: 6472 00002 READ Q 002094,000073: 6473 40000 COM 002095,000074: 6474 67640 AD FIVE 002096,000075: 6475 00006 EXTEND 002097,000076: 6476 16500 BZF IO4 002098,000077: 6477 17165 TCF IOERROR 002099,000078: 6500 24062 IO4 INCR ERRSUB # 5 002100,000079: 6501 00006 EXTEND 002101,000080: 6502 00011 READ CH11 002102,000081: 6503 40000 COM 002103,000082: 6504 67641 AD NINE 002104,000083: 6505 00006 EXTEND 002105,000084: 6506 16510 BZF IO5 002106,000085: 6507 17165 TCF IOERROR 002107,000086: 6510 IO5 002108,000087: 002109,000088: # Test RAND. 002110,000089: 6510 24062 INCR ERRSUB # 6 002111,000090: 6511 37713 CA MASKL1 002112,000091: 6512 00006 EXTEND 002113,000092: 6513 01001 WRITE L 002114,000093: 6514 37713 CA MASKL1 002115,000094: 6515 00006 EXTEND 002116,000095: 6516 01002 WRITE Q 002117,000096: 6517 37714 CA MASKR1 002118,000097: 6520 00006 EXTEND 002119,000098: 6521 01012 WRITE CH12 002120,000099: 6522 37714 CA MASKR1 002121,000100: 6523 00006 EXTEND 002122,000101: 6524 01011 WRITE CH11 002123,000102: 6525 37715 CA MASKL2 002124,000103: 6526 00006 EXTEND 002125,000104: 6527 02001 RAND L 002126,000105: 6530 40000 COM 002127,000106: 6531 67717 AD ANDL1L2 002128,000107: 6532 00006 EXTEND 002129,000108: 6533 16535 BZF IO6A 002130,000109: 6534 17165 TCF IOERROR 002131,000110: 6535 24062 IO6A INCR ERRSUB # 7 002132,000111: 6536 37716 CA MASKR2 002133,000112: 6537 00006 EXTEND 002134,000113: 6540 02002 RAND Q 002135,000114: 6541 40000 COM 002136,000115: 6542 67720 AD ANDL1R2 002137,000116: 6543 00006 EXTEND 002138,000117: 6544 16546 BZF IO7A 002139,000118: 6545 17165 TCF IOERROR 002140,000119: 6546 24062 IO7A INCR ERRSUB # 10 octal 002141,000120: 6547 37715 CA MASKL2 002142,000121: 6550 00006 EXTEND 002143,000122: 6551 02012 RAND CH12 002144,000123: 6552 40000 COM 002145,000124: 6553 67721 AD ANDR1L2 002146,000125: 6554 00006 EXTEND 002147,000126: 6555 16557 BZF IO8A 002148,000127: 6556 17165 TCF IOERROR 002149,000128: 6557 24062 IO8A INCR ERRSUB # 11 002150,000129: 6560 37716 CA MASKR2 002151,000130: 6561 00006 EXTEND 002152,000131: 6562 02011 RAND CH11 002153,000132: 6563 40000 COM 002154,000133: 6564 67722 AD ANDR1R2 002155,000134: 6565 00006 EXTEND 002156,000135: 6566 16570 BZF IO9A 002157,000136: 6567 17165 TCF IOERROR 002158,000137: 6570 IO9A 002159,000138: 002160,000139: # Test ROR. 002161,000140: 6570 24062 INCR ERRSUB # 12 002162,000141: 6571 37713 CA MASKL1 002163,000142: 6572 00006 EXTEND 002164,000143: 6573 01001 WRITE L 002165,000144: 6574 37713 CA MASKL1 002166,000145: 6575 00006 EXTEND 002167,000146: 6576 01002 WRITE Q 002168,000147: 6577 37714 CA MASKR1 002169,000148: 6600 00006 EXTEND 002170,000149: 6601 01012 WRITE CH12 002171,000150: 6602 37714 CA MASKR1 002172,000151: 6603 00006 EXTEND 002173,000152: 6604 01011 WRITE CH11 002174,000153: 6605 37715 CA MASKL2 002175,000154: 6606 00006 EXTEND 002176,000155: 6607 04001 ROR L 002177,000156: 6610 40000 COM 002178,000157: 6611 67723 AD ORL1L2 002179,000158: 6612 00006 EXTEND 002180,000159: 6613 16615 BZF IO6O 002181,000160: 6614 17165 TCF IOERROR 002182,000161: 6615 24062 IO6O INCR ERRSUB # 13 002183,000162: 6616 37716 CA MASKR2 002184,000163: 6617 00006 EXTEND 002185,000164: 6620 04002 ROR Q 002186,000165: 6621 40000 COM 002187,000166: 6622 67724 AD ORL1R2 002188,000167: 6623 00006 EXTEND 002189,000168: 6624 16626 BZF IO7O 002190,000169: 6625 17165 TCF IOERROR 002191,000170: 6626 24062 IO7O INCR ERRSUB # 14 002192,000171: 6627 37715 CA MASKL2 002193,000172: 6630 00006 EXTEND 002194,000173: 6631 04012 ROR CH12 002195,000174: 6632 40000 COM 002196,000175: 6633 67725 AD ORR1L2 002197,000176: 6634 00006 EXTEND 002198,000177: 6635 16637 BZF IO8O 002199,000178: 6636 17165 TCF IOERROR 002200,000179: 6637 24062 IO8O INCR ERRSUB # 15 002201,000180: 6640 37716 CA MASKR2 002202,000181: 6641 00006 EXTEND 002203,000182: 6642 04011 ROR CH11 002204,000183: 6643 40000 COM 002205,000184: 6644 67726 AD ORR1R2 002206,000185: 6645 00006 EXTEND 002207,000186: 6646 16650 BZF IO9O 002208,000187: 6647 17165 TCF IOERROR 002209,000188: 6650 IO9O 002210,000189: 002211,000190: # Test RXOR. 002212,000191: 6650 24062 INCR ERRSUB # 16 002213,000192: 6651 37713 CA MASKL1 002214,000193: 6652 00006 EXTEND 002215,000194: 6653 01001 WRITE L 002216,000195: 6654 37713 CA MASKL1 002217,000196: 6655 00006 EXTEND 002218,000197: 6656 01002 WRITE Q 002219,000198: 6657 37714 CA MASKR1 002220,000199: 6660 00006 EXTEND 002221,000200: 6661 01012 WRITE CH12 002222,000201: 6662 37714 CA MASKR1 002223,000202: 6663 00006 EXTEND 002224,000203: 6664 01011 WRITE CH11 002225,000204: 6665 37715 CA MASKL2 002226,000205: 6666 00006 EXTEND 002227,000206: 6667 06001 RXOR L 002228,000207: 6670 40000 COM 002229,000208: 6671 67727 AD XORL1L2 002230,000209: 6672 00006 EXTEND 002231,000210: 6673 16675 BZF IO6X 002232,000211: 6674 17165 TCF IOERROR 002233,000212: 6675 24062 IO6X INCR ERRSUB # 17 002234,000213: 6676 37716 CA MASKR2 002235,000214: 6677 00006 EXTEND 002236,000215: 6700 06002 RXOR Q 002237,000216: 6701 40000 COM 002238,000217: 6702 67730 AD XORL1R2 002239,000218: 6703 00006 EXTEND 002240,000219: 6704 16706 BZF IO7X 002241,000220: 6705 17165 TCF IOERROR 002242,000221: 6706 24062 IO7X INCR ERRSUB # 20 octal 002243,000222: 6707 37715 CA MASKL2 002244,000223: 6710 00006 EXTEND 002245,000224: 6711 06012 RXOR CH12 002246,000225: 6712 40000 COM 002247,000226: 6713 67731 AD XORR1L2 002248,000227: 6714 00006 EXTEND 002249,000228: 6715 16717 BZF IO8X 002250,000229: 6716 17165 TCF IOERROR 002251,000230: 6717 24062 IO8X INCR ERRSUB # 21 002252,000231: 6720 37716 CA MASKR2 002253,000232: 6721 00006 EXTEND 002254,000233: 6722 06011 RXOR CH11 002255,000234: 6723 40000 COM 002256,000235: 6724 67732 AD XORR1R2 002257,000236: 6725 00006 EXTEND 002258,000237: 6726 16730 BZF IO9X 002259,000238: 6727 17165 TCF IOERROR 002260,000239: 6730 IO9X 002261,000240: 002262,000241: # Test WAND. 002263,000242: 6730 24062 INCR ERRSUB # 22 002264,000243: 6731 37713 CA MASKL1 002265,000244: 6732 00006 EXTEND 002266,000245: 6733 01001 WRITE L 002267,000246: 6734 37713 CA MASKL1 002268,000247: 6735 00006 EXTEND 002269,000248: 6736 01002 WRITE Q 002270,000249: 6737 37714 CA MASKR1 002271,000250: 6740 00006 EXTEND 002272,000251: 6741 01012 WRITE CH12 002273,000252: 6742 37714 CA MASKR1 002274,000253: 6743 00006 EXTEND 002275,000254: 6744 01011 WRITE CH11 002276,000255: 6745 37715 CA MASKL2 002277,000256: 6746 00006 EXTEND 002278,000257: 6747 03001 WAND L 002279,000258: 6750 40000 COM 002280,000259: 6751 60001 AD L 002281,000260: 6752 00006 EXTEND 002282,000261: 6753 16755 BZF IO10A 002283,000262: 6754 17165 TCF IOERROR 002284,000263: 6755 24062 IO10A INCR ERRSUB # 23 002285,000264: 6756 37717 CA ANDL1L2 002286,000265: 6757 40000 COM 002287,000266: 6760 60001 AD L 002288,000267: 6761 00006 EXTEND 002289,000268: 6762 16764 BZF IO11A 002290,000269: 6763 17165 TCF IOERROR 002291,000270: 6764 24062 IO11A INCR ERRSUB # 24 002292,000271: 6765 37716 CA MASKR2 002293,000272: 6766 00006 EXTEND 002294,000273: 6767 03002 WAND Q 002295,000274: 6770 40000 COM 002296,000275: 6771 60002 AD Q 002297,000276: 6772 00006 EXTEND 002298,000277: 6773 16775 BZF IO12A 002299,000278: 6774 17165 TCF IOERROR 002300,000279: 6775 24062 IO12A INCR ERRSUB # 25 002301,000280: 6776 37720 CA ANDL1R2 002302,000281: 6777 40000 COM 002303,000282: 7000 60002 AD Q 002304,000283: 7001 00006 EXTEND 002305,000284: 7002 17004 BZF IO13A 002306,000285: 7003 17165 TCF IOERROR 002307,000286: 7004 24062 IO13A INCR ERRSUB # 26 002308,000287: 7005 37715 CA MASKL2 002309,000288: 7006 00006 EXTEND 002310,000289: 7007 03012 WAND CH12 002311,000290: 7010 40000 COM 002312,000291: 7011 67721 AD ANDR1L2 002313,000292: 7012 00006 EXTEND 002314,000293: 7013 17015 BZF IO14A 002315,000294: 7014 17165 TCF IOERROR 002316,000295: 7015 24062 IO14A INCR ERRSUB # 27 002317,000296: 7016 00006 EXTEND 002318,000297: 7017 00012 READ CH12 002319,000298: 7020 40000 COM 002320,000299: 7021 67721 AD ANDR1L2 002321,000300: 7022 00006 EXTEND 002322,000301: 7023 17025 BZF IO15A 002323,000302: 7024 17165 TCF IOERROR 002324,000303: 7025 24062 IO15A INCR ERRSUB # 30 octal 002325,000304: 7026 37716 CA MASKR2 002326,000305: 7027 00006 EXTEND 002327,000306: 7030 03011 WAND CH11 002328,000307: 7031 40000 COM 002329,000308: 7032 67722 AD ANDR1R2 002330,000309: 7033 00006 EXTEND 002331,000310: 7034 17036 BZF IO16A 002332,000311: 7035 17165 TCF IOERROR 002333,000312: 7036 24062 IO16A INCR ERRSUB # 31 002334,000313: 7037 00006 EXTEND 002335,000314: 7040 00011 READ CH11 002336,000315: 7041 40000 COM 002337,000316: 7042 67722 AD ANDR1R2 002338,000317: 7043 00006 EXTEND 002339,000318: 7044 17046 BZF IO17A 002340,000319: 7045 17165 TCF IOERROR 002341,000320: 7046 IO17A 002342,000321: 002343,000322: # Test WOR. 002344,000323: 7046 24062 INCR ERRSUB # 32 002345,000324: 7047 37713 CA MASKL1 002346,000325: 7050 00006 EXTEND 002347,000326: 7051 01001 WRITE L 002348,000327: 7052 37713 CA MASKL1 002349,000328: 7053 00006 EXTEND 002350,000329: 7054 01002 WRITE Q 002351,000330: 7055 37714 CA MASKR1 002352,000331: 7056 00006 EXTEND 002353,000332: 7057 01012 WRITE CH12 002354,000333: 7060 37714 CA MASKR1 002355,000334: 7061 00006 EXTEND 002356,000335: 7062 01011 WRITE CH11 002357,000336: 7063 37715 CA MASKL2 002358,000337: 7064 00006 EXTEND 002359,000338: 7065 05001 WOR L 002360,000339: 7066 40000 COM 002361,000340: 7067 60001 AD L 002362,000341: 7070 00006 EXTEND 002363,000342: 7071 17073 BZF IO10O 002364,000343: 7072 17165 TCF IOERROR 002365,000344: 7073 24062 IO10O INCR ERRSUB # 33 002366,000345: 7074 37723 CA ORL1L2 002367,000346: 7075 40000 COM 002368,000347: 7076 60001 AD L 002369,000348: 7077 00006 EXTEND 002370,000349: 7100 17102 BZF IO11O 002371,000350: 7101 17165 TCF IOERROR 002372,000351: 7102 24062 IO11O INCR ERRSUB # 34 002373,000352: 7103 37716 CA MASKR2 002374,000353: 7104 00006 EXTEND 002375,000354: 7105 05002 WOR Q 002376,000355: 7106 40000 COM 002377,000356: 7107 60002 AD Q 002378,000357: 7110 00006 EXTEND 002379,000358: 7111 17113 BZF IO12O 002380,000359: 7112 17165 TCF IOERROR 002381,000360: 7113 24062 IO12O INCR ERRSUB # 35 002382,000361: 7114 37724 CA ORL1R2 002383,000362: 7115 40000 COM 002384,000363: 7116 60002 AD Q 002385,000364: 7117 00006 EXTEND 002386,000365: 7120 17122 BZF IO13O 002387,000366: 7121 17165 TCF IOERROR 002388,000367: 7122 24062 IO13O INCR ERRSUB # 36 002389,000368: 7123 37715 CA MASKL2 002390,000369: 7124 00006 EXTEND 002391,000370: 7125 05012 WOR CH12 002392,000371: 7126 40000 COM 002393,000372: 7127 67725 AD ORR1L2 002394,000373: 7130 00006 EXTEND 002395,000374: 7131 17133 BZF IO14O 002396,000375: 7132 17165 TCF IOERROR 002397,000376: 7133 24062 IO14O INCR ERRSUB # 37 002398,000377: 7134 00006 EXTEND 002399,000378: 7135 00012 READ CH12 002400,000379: 7136 40000 COM 002401,000380: 7137 67725 AD ORR1L2 002402,000381: 7140 00006 EXTEND 002403,000382: 7141 17143 BZF IO15O 002404,000383: 7142 17165 TCF IOERROR 002405,000384: 7143 24062 IO15O INCR ERRSUB # 40 octal 002406,000385: 7144 37716 CA MASKR2 002407,000386: 7145 00006 EXTEND 002408,000387: 7146 05011 WOR CH11 002409,000388: 7147 40000 COM 002410,000389: 7150 67726 AD ORR1R2 002411,000390: 7151 00006 EXTEND 002412,000391: 7152 17154 BZF IO16O 002413,000392: 7153 17165 TCF IOERROR 002414,000393: 7154 24062 IO16O INCR ERRSUB # 41 002415,000394: 7155 00006 EXTEND 002416,000395: 7156 00011 READ CH11 002417,000396: 7157 40000 COM 002418,000397: 7160 67726 AD ORR1R2 002419,000398: 7161 00006 EXTEND 002420,000399: 7162 17164 BZF IO17O 002421,000400: 7163 17165 TCF IOERROR 002422,000401: 7164 IO17O 002423,000402: 002424,000403: # Test EDRUPT. (I believe it ... sure ... why not?) 002425,000404: # ... later ... 002426,000405: 002427,000406: # All done! 002428,000407: 7164 17171 TCF IODONE 002429,000408: 7165 30073 IOERROR CA SKEEP3 # Fix CH11 before showing the error 002430,000409: 7166 00006 EXTEND 002431,000410: 7167 01011 WRITE CH11 002432,000411: 7170 07437 TC ERRORDSP 002433,000412: 7171 30007 IODONE CA ZEROES 002434,000413: 7172 54062 TS ERRSUB 002435,000414: 7173 30073 CA SKEEP3 # Fix CH11 before moving on 002436,000415: 7174 00006 EXTEND 002437,000416: 7175 01011 WRITE CH11 002438,000417: 002439,000418: End of include-file ValidateIO.agc. Parent file is Validation.agc