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