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