Source Code

001964,000001: # Copyright 2004 Ronald S. Burkey <info@sandroid.org> 001965,000002: # 001966,000003: # This file is part of yaAGC. 001967,000004: 001968,000005: # yaAGC is free software; you can redistribute it and/or modify 001969,000006: # it under the terms of the GNU General Public License as published by 001970,000007: # the Free Software Foundation; either version 2 of the License, or 001971,000008: # (at your option) any later version. 001972,000009: 001973,000010: # yaAGC is distributed in the hope that it will be useful, 001974,000011: # but WITHOUT ANY WARRANTY; without even the implied warranty of 001975,000012: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 001976,000013: # GNU General Public License for more details. 001977,000014: 001978,000015: # You should have received a copy of the GNU General Public License 001979,000016: # along with yaAGC; if not, write to the Free Software 001980,000017: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 001981,000018: 001982,000019: # Filename: ValidateIO.agc 001983,000020: # Purpose: This is the part of the Validation program that validates 001984,000021: # just the i/o instructions like READ, WRITE, etc. 001985,000022: # Mod history: 07/05/04 RSB. Began. 001986,000023: 001987,000024: # There is no good way to test the i/o channel functions solely within the 001988,000025: # CPU, as both peripheral devices and user interaction are really required. 001989,000026: # We compromise (knowing that the CPU is virtual), and use the i/o channels 001990,000027: # 20-27 (octal), which are not used either in Colossus or Luminary. 001991,000028: 001992,000029: 6425 24061 INCR ERRNUM 001993,000030: 001994,000031: # First check that L is channel 1 and Q is channel 2. 001995,000032: # Also, perform normal READs and WRITEs on channel 27. 001996,000033: 6426 24062 INCR ERRSUB # 1 001997,000034: 6427 37435 CA TEN 001998,000035: 6430 00006 EXTEND 001999,000036: 6431 01001 WRITE L 002000,000037: 6432 37433 CA FIVE 002001,000038: 6433 00006 EXTEND 002002,000039: 6434 01002 WRITE Q 002003,000040: 6435 37434 CA NINE 002004,000041: 6436 00006 EXTEND 002005,000042: 6437 01027 WRITE CH27 002006,000043: 6440 30001 CA L 002007,000044: 6441 40000 COM 002008,000045: 6442 67435 AD TEN 002009,000046: 6443 00006 EXTEND 002010,000047: 6444 16446 BZF IO1 002011,000048: 6445 17162 TCF IOERROR 002012,000049: 6446 24062 IO1 INCR ERRSUB # 2 002013,000050: 6447 30002 CA Q 002014,000051: 6450 40000 COM 002015,000052: 6451 67433 AD FIVE 002016,000053: 6452 00006 EXTEND 002017,000054: 6453 16455 BZF IO2 002018,000055: 6454 17162 TCF IOERROR 002019,000056: 6455 24062 IO2 INCR ERRSUB # 3 002020,000057: 6456 00006 EXTEND 002021,000058: 6457 00001 READ L 002022,000059: 6460 40000 COM 002023,000060: 6461 67435 AD TEN 002024,000061: 6462 00006 EXTEND 002025,000062: 6463 16465 BZF IO3 002026,000063: 6464 17162 TCF IOERROR 002027,000064: 6465 24062 IO3 INCR ERRSUB # 4 002028,000065: 6466 00006 EXTEND 002029,000066: 6467 00002 READ Q 002030,000067: 6470 40000 COM 002031,000068: 6471 67433 AD FIVE 002032,000069: 6472 00006 EXTEND 002033,000070: 6473 16475 BZF IO4 002034,000071: 6474 17162 TCF IOERROR 002035,000072: 6475 24062 IO4 INCR ERRSUB # 5 002036,000073: 6476 00006 EXTEND 002037,000074: 6477 00027 READ CH27 002038,000075: 6500 40000 COM 002039,000076: 6501 67434 AD NINE 002040,000077: 6502 00006 EXTEND 002041,000078: 6503 16505 BZF IO5 002042,000079: 6504 17162 TCF IOERROR 002043,000080: 6505 IO5 002044,000081: 002045,000082: # Test RAND. 002046,000083: 6505 24062 INCR ERRSUB # 6 002047,000084: 6506 37505 CA MASKL1 002048,000085: 6507 00006 EXTEND 002049,000086: 6510 01001 WRITE L 002050,000087: 6511 37505 CA MASKL1 002051,000088: 6512 00006 EXTEND 002052,000089: 6513 01002 WRITE Q 002053,000090: 6514 37506 CA MASKR1 002054,000091: 6515 00006 EXTEND 002055,000092: 6516 01026 WRITE CH26 002056,000093: 6517 37506 CA MASKR1 002057,000094: 6520 00006 EXTEND 002058,000095: 6521 01027 WRITE CH27 002059,000096: 6522 37507 CA MASKL2 002060,000097: 6523 00006 EXTEND 002061,000098: 6524 02001 RAND L 002062,000099: 6525 40000 COM 002063,000100: 6526 67511 AD ANDL1L2 002064,000101: 6527 00006 EXTEND 002065,000102: 6530 16532 BZF IO6A 002066,000103: 6531 17162 TCF IOERROR 002067,000104: 6532 24062 IO6A INCR ERRSUB # 7 002068,000105: 6533 37510 CA MASKR2 002069,000106: 6534 00006 EXTEND 002070,000107: 6535 02002 RAND Q 002071,000108: 6536 40000 COM 002072,000109: 6537 67512 AD ANDL1R2 002073,000110: 6540 00006 EXTEND 002074,000111: 6541 16543 BZF IO7A 002075,000112: 6542 17162 TCF IOERROR 002076,000113: 6543 24062 IO7A INCR ERRSUB # 10 octal 002077,000114: 6544 37507 CA MASKL2 002078,000115: 6545 00006 EXTEND 002079,000116: 6546 02026 RAND CH26 002080,000117: 6547 40000 COM 002081,000118: 6550 67513 AD ANDR1L2 002082,000119: 6551 00006 EXTEND 002083,000120: 6552 16554 BZF IO8A 002084,000121: 6553 17162 TCF IOERROR 002085,000122: 6554 24062 IO8A INCR ERRSUB # 11 002086,000123: 6555 37510 CA MASKR2 002087,000124: 6556 00006 EXTEND 002088,000125: 6557 02027 RAND CH27 002089,000126: 6560 40000 COM 002090,000127: 6561 67514 AD ANDR1R2 002091,000128: 6562 00006 EXTEND 002092,000129: 6563 16565 BZF IO9A 002093,000130: 6564 17162 TCF IOERROR 002094,000131: 6565 IO9A 002095,000132: 002096,000133: # Test ROR. 002097,000134: 6565 24062 INCR ERRSUB # 12 002098,000135: 6566 37505 CA MASKL1 002099,000136: 6567 00006 EXTEND 002100,000137: 6570 01001 WRITE L 002101,000138: 6571 37505 CA MASKL1 002102,000139: 6572 00006 EXTEND 002103,000140: 6573 01002 WRITE Q 002104,000141: 6574 37506 CA MASKR1 002105,000142: 6575 00006 EXTEND 002106,000143: 6576 01026 WRITE CH26 002107,000144: 6577 37506 CA MASKR1 002108,000145: 6600 00006 EXTEND 002109,000146: 6601 01027 WRITE CH27 002110,000147: 6602 37507 CA MASKL2 002111,000148: 6603 00006 EXTEND 002112,000149: 6604 04001 ROR L 002113,000150: 6605 40000 COM 002114,000151: 6606 67515 AD ORL1L2 002115,000152: 6607 00006 EXTEND 002116,000153: 6610 16612 BZF IO6O 002117,000154: 6611 17162 TCF IOERROR 002118,000155: 6612 24062 IO6O INCR ERRSUB # 13 002119,000156: 6613 37510 CA MASKR2 002120,000157: 6614 00006 EXTEND 002121,000158: 6615 04002 ROR Q 002122,000159: 6616 40000 COM 002123,000160: 6617 67516 AD ORL1R2 002124,000161: 6620 00006 EXTEND 002125,000162: 6621 16623 BZF IO7O 002126,000163: 6622 17162 TCF IOERROR 002127,000164: 6623 24062 IO7O INCR ERRSUB # 14 002128,000165: 6624 37507 CA MASKL2 002129,000166: 6625 00006 EXTEND 002130,000167: 6626 04026 ROR CH26 002131,000168: 6627 40000 COM 002132,000169: 6630 67517 AD ORR1L2 002133,000170: 6631 00006 EXTEND 002134,000171: 6632 16634 BZF IO8O 002135,000172: 6633 17162 TCF IOERROR 002136,000173: 6634 24062 IO8O INCR ERRSUB # 15 002137,000174: 6635 37510 CA MASKR2 002138,000175: 6636 00006 EXTEND 002139,000176: 6637 04027 ROR CH27 002140,000177: 6640 40000 COM 002141,000178: 6641 67520 AD ORR1R2 002142,000179: 6642 00006 EXTEND 002143,000180: 6643 16645 BZF IO9O 002144,000181: 6644 17162 TCF IOERROR 002145,000182: 6645 IO9O 002146,000183: 002147,000184: # Test RXOR. 002148,000185: 6645 24062 INCR ERRSUB # 16 002149,000186: 6646 37505 CA MASKL1 002150,000187: 6647 00006 EXTEND 002151,000188: 6650 01001 WRITE L 002152,000189: 6651 37505 CA MASKL1 002153,000190: 6652 00006 EXTEND 002154,000191: 6653 01002 WRITE Q 002155,000192: 6654 37506 CA MASKR1 002156,000193: 6655 00006 EXTEND 002157,000194: 6656 01026 WRITE CH26 002158,000195: 6657 37506 CA MASKR1 002159,000196: 6660 00006 EXTEND 002160,000197: 6661 01027 WRITE CH27 002161,000198: 6662 37507 CA MASKL2 002162,000199: 6663 00006 EXTEND 002163,000200: 6664 06001 RXOR L 002164,000201: 6665 40000 COM 002165,000202: 6666 67521 AD XORL1L2 002166,000203: 6667 00006 EXTEND 002167,000204: 6670 16672 BZF IO6X 002168,000205: 6671 17162 TCF IOERROR 002169,000206: 6672 24062 IO6X INCR ERRSUB # 17 002170,000207: 6673 37510 CA MASKR2 002171,000208: 6674 00006 EXTEND 002172,000209: 6675 06002 RXOR Q 002173,000210: 6676 40000 COM 002174,000211: 6677 67522 AD XORL1R2 002175,000212: 6700 00006 EXTEND 002176,000213: 6701 16703 BZF IO7X 002177,000214: 6702 17162 TCF IOERROR 002178,000215: 6703 24062 IO7X INCR ERRSUB # 20 octal 002179,000216: 6704 37507 CA MASKL2 002180,000217: 6705 00006 EXTEND 002181,000218: 6706 06026 RXOR CH26 002182,000219: 6707 40000 COM 002183,000220: 6710 67523 AD XORR1L2 002184,000221: 6711 00006 EXTEND 002185,000222: 6712 16714 BZF IO8X 002186,000223: 6713 17162 TCF IOERROR 002187,000224: 6714 24062 IO8X INCR ERRSUB # 21 002188,000225: 6715 37510 CA MASKR2 002189,000226: 6716 00006 EXTEND 002190,000227: 6717 06027 RXOR CH27 002191,000228: 6720 40000 COM 002192,000229: 6721 67524 AD XORR1R2 002193,000230: 6722 00006 EXTEND 002194,000231: 6723 16725 BZF IO9X 002195,000232: 6724 17162 TCF IOERROR 002196,000233: 6725 IO9X 002197,000234: 002198,000235: # Test WAND. 002199,000236: 6725 24062 INCR ERRSUB # 22 002200,000237: 6726 37505 CA MASKL1 002201,000238: 6727 00006 EXTEND 002202,000239: 6730 01001 WRITE L 002203,000240: 6731 37505 CA MASKL1 002204,000241: 6732 00006 EXTEND 002205,000242: 6733 01002 WRITE Q 002206,000243: 6734 37506 CA MASKR1 002207,000244: 6735 00006 EXTEND 002208,000245: 6736 01026 WRITE CH26 002209,000246: 6737 37506 CA MASKR1 002210,000247: 6740 00006 EXTEND 002211,000248: 6741 01027 WRITE CH27 002212,000249: 6742 37507 CA MASKL2 002213,000250: 6743 00006 EXTEND 002214,000251: 6744 03001 WAND L 002215,000252: 6745 40000 COM 002216,000253: 6746 60001 AD L 002217,000254: 6747 00006 EXTEND 002218,000255: 6750 16752 BZF IO10A 002219,000256: 6751 17162 TCF IOERROR 002220,000257: 6752 24062 IO10A INCR ERRSUB # 23 002221,000258: 6753 37511 CA ANDL1L2 002222,000259: 6754 40000 COM 002223,000260: 6755 60001 AD L 002224,000261: 6756 00006 EXTEND 002225,000262: 6757 16761 BZF IO11A 002226,000263: 6760 17162 TCF IOERROR 002227,000264: 6761 24062 IO11A INCR ERRSUB # 24 002228,000265: 6762 37510 CA MASKR2 002229,000266: 6763 00006 EXTEND 002230,000267: 6764 03002 WAND Q 002231,000268: 6765 40000 COM 002232,000269: 6766 60002 AD Q 002233,000270: 6767 00006 EXTEND 002234,000271: 6770 16772 BZF IO12A 002235,000272: 6771 17162 TCF IOERROR 002236,000273: 6772 24062 IO12A INCR ERRSUB # 25 002237,000274: 6773 37512 CA ANDL1R2 002238,000275: 6774 40000 COM 002239,000276: 6775 60002 AD Q 002240,000277: 6776 00006 EXTEND 002241,000278: 6777 17001 BZF IO13A 002242,000279: 7000 17162 TCF IOERROR 002243,000280: 7001 24062 IO13A INCR ERRSUB # 26 002244,000281: 7002 37507 CA MASKL2 002245,000282: 7003 00006 EXTEND 002246,000283: 7004 03026 WAND CH26 002247,000284: 7005 40000 COM 002248,000285: 7006 67513 AD ANDR1L2 002249,000286: 7007 00006 EXTEND 002250,000287: 7010 17012 BZF IO14A 002251,000288: 7011 17162 TCF IOERROR 002252,000289: 7012 24062 IO14A INCR ERRSUB # 27 002253,000290: 7013 00006 EXTEND 002254,000291: 7014 00026 READ CH26 002255,000292: 7015 40000 COM 002256,000293: 7016 67513 AD ANDR1L2 002257,000294: 7017 00006 EXTEND 002258,000295: 7020 17022 BZF IO15A 002259,000296: 7021 17162 TCF IOERROR 002260,000297: 7022 24062 IO15A INCR ERRSUB # 30 octal 002261,000298: 7023 37510 CA MASKR2 002262,000299: 7024 00006 EXTEND 002263,000300: 7025 03027 WAND CH27 002264,000301: 7026 40000 COM 002265,000302: 7027 67514 AD ANDR1R2 002266,000303: 7030 00006 EXTEND 002267,000304: 7031 17033 BZF IO16A 002268,000305: 7032 17162 TCF IOERROR 002269,000306: 7033 24062 IO16A INCR ERRSUB # 31 002270,000307: 7034 00006 EXTEND 002271,000308: 7035 00027 READ CH27 002272,000309: 7036 40000 COM 002273,000310: 7037 67514 AD ANDR1R2 002274,000311: 7040 00006 EXTEND 002275,000312: 7041 17043 BZF IO17A 002276,000313: 7042 17162 TCF IOERROR 002277,000314: 7043 IO17A 002278,000315: 002279,000316: # Test WOR. 002280,000317: 7043 24062 INCR ERRSUB # 32 002281,000318: 7044 37505 CA MASKL1 002282,000319: 7045 00006 EXTEND 002283,000320: 7046 01001 WRITE L 002284,000321: 7047 37505 CA MASKL1 002285,000322: 7050 00006 EXTEND 002286,000323: 7051 01002 WRITE Q 002287,000324: 7052 37506 CA MASKR1 002288,000325: 7053 00006 EXTEND 002289,000326: 7054 01026 WRITE CH26 002290,000327: 7055 37506 CA MASKR1 002291,000328: 7056 00006 EXTEND 002292,000329: 7057 01027 WRITE CH27 002293,000330: 7060 37507 CA MASKL2 002294,000331: 7061 00006 EXTEND 002295,000332: 7062 05001 WOR L 002296,000333: 7063 40000 COM 002297,000334: 7064 60001 AD L 002298,000335: 7065 00006 EXTEND 002299,000336: 7066 17070 BZF IO10O 002300,000337: 7067 17162 TCF IOERROR 002301,000338: 7070 24062 IO10O INCR ERRSUB # 33 002302,000339: 7071 37515 CA ORL1L2 002303,000340: 7072 40000 COM 002304,000341: 7073 60001 AD L 002305,000342: 7074 00006 EXTEND 002306,000343: 7075 17077 BZF IO11O 002307,000344: 7076 17162 TCF IOERROR 002308,000345: 7077 24062 IO11O INCR ERRSUB # 34 002309,000346: 7100 37510 CA MASKR2 002310,000347: 7101 00006 EXTEND 002311,000348: 7102 05002 WOR Q 002312,000349: 7103 40000 COM 002313,000350: 7104 60002 AD Q 002314,000351: 7105 00006 EXTEND 002315,000352: 7106 17110 BZF IO12O 002316,000353: 7107 17162 TCF IOERROR 002317,000354: 7110 24062 IO12O INCR ERRSUB # 35 002318,000355: 7111 37516 CA ORL1R2 002319,000356: 7112 40000 COM 002320,000357: 7113 60002 AD Q 002321,000358: 7114 00006 EXTEND 002322,000359: 7115 17117 BZF IO13O 002323,000360: 7116 17162 TCF IOERROR 002324,000361: 7117 24062 IO13O INCR ERRSUB # 36 002325,000362: 7120 37507 CA MASKL2 002326,000363: 7121 00006 EXTEND 002327,000364: 7122 05026 WOR CH26 002328,000365: 7123 40000 COM 002329,000366: 7124 67517 AD ORR1L2 002330,000367: 7125 00006 EXTEND 002331,000368: 7126 17130 BZF IO14O 002332,000369: 7127 17162 TCF IOERROR 002333,000370: 7130 24062 IO14O INCR ERRSUB # 37 002334,000371: 7131 00006 EXTEND 002335,000372: 7132 00026 READ CH26 002336,000373: 7133 40000 COM 002337,000374: 7134 67517 AD ORR1L2 002338,000375: 7135 00006 EXTEND 002339,000376: 7136 17140 BZF IO15O 002340,000377: 7137 17162 TCF IOERROR 002341,000378: 7140 24062 IO15O INCR ERRSUB # 40 octal 002342,000379: 7141 37510 CA MASKR2 002343,000380: 7142 00006 EXTEND 002344,000381: 7143 05027 WOR CH27 002345,000382: 7144 40000 COM 002346,000383: 7145 67520 AD ORR1R2 002347,000384: 7146 00006 EXTEND 002348,000385: 7147 17151 BZF IO16O 002349,000386: 7150 17162 TCF IOERROR 002350,000387: 7151 24062 IO16O INCR ERRSUB # 41 002351,000388: 7152 00006 EXTEND 002352,000389: 7153 00027 READ CH27 002353,000390: 7154 40000 COM 002354,000391: 7155 67520 AD ORR1R2 002355,000392: 7156 00006 EXTEND 002356,000393: 7157 17161 BZF IO17O 002357,000394: 7160 17162 TCF IOERROR 002358,000395: 7161 IO17O 002359,000396: 002360,000397: # Test EDRUPT. (I believe it ... sure ... why not?) 002361,000398: # ... later ... 002362,000399: 002363,000400: # All done! 002364,000401: 7161 17163 TCF IODONE 002365,000402: 7162 07240 IOERROR TC ERRORDSP 002366,000403: 7163 30007 IODONE CA ZEROES 002367,000404: 7164 54062 TS ERRSUB 002368,000405: 002369,000406: End of include-file ValidateIO.agc. Parent file is Validation.agc