More Front Panel improvements
This commit is contained in:
parent
caf0a728f8
commit
d5c7bf0b5d
23 changed files with 1514 additions and 1281 deletions
|
|
@ -1,89 +1,90 @@
|
|||
{"load":0xC000 /*140000*/,"exec":0xC000 /*140000*/,
|
||||
"words":[
|
||||
0x0005 /*000005*/,0x0A1F /*005037*/,0xFFFE /*177776*/,0x15C6 /*012706*/,0xC000 /*140000*/,0x0A1F /*005037*/,0xFF74 /*177564*/,0x15C0 /*012700*/,
|
||||
0xC251 /*141121*/,0x09F7 /*004767*/,0x0052 /*000122*/,0x15DF /*012737*/,0xC054 /*140124*/,0x0040 /*000100*/,0x15DF /*012737*/,0x00E0 /*000340*/,
|
||||
0x0042 /*000102*/,0x55DF /*052737*/,0x0040 /*000100*/,0xFF66 /*177546*/,0x15C0 /*012700*/,0xC269 /*141151*/,0x09F7 /*004767*/,0x0038 /*000070*/,
|
||||
0xE5C6 /*162706*/,0x00AE /*000256*/,0x1180 /*010600*/,0x09F7 /*004767*/,0x006A /*000152*/,0x0A00 /*005000*/,0x0001 /*000001*/,0x0A80 /*005200*/,
|
||||
0x0BF7 /*005767*/,0x000C /*000014*/,0x03FB /*001773*/,0x15E6 /*012746*/,0x5800 /*054000*/,0x1DE6 /*016746*/,0x0002 /*000002*/,0x0002 /*000002*/,
|
||||
0x0000 /*000000*/,0x0000 /*000000*/,0x0AB7 /*005267*/,0xFFFA /*177772*/,0x0002 /*000002*/,0x8BDF /*105737*/,0xFF74 /*177564*/,0x80FD /*100375*/,
|
||||
0x901F /*110037*/,0xFF76 /*177566*/,0x0087 /*000207*/,0x0000 /*000000*/,0xB5DF /*132737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x02FC /*001374*/,
|
||||
0x1037 /*010067*/,0xFFF2 /*177762*/,0x15DF /*012737*/,0xC088 /*140210*/,0x0034 /*000064*/,0x15DF /*012737*/,0x0080 /*000200*/,0x0036 /*000066*/,
|
||||
0xD5DF /*152737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x0087 /*000207*/,0x8BFF /*105777*/,0xFFDA /*177732*/,0x0306 /*001406*/,0x9FDF /*117737*/,
|
||||
0xFFD4 /*177724*/,0xFF76 /*177566*/,0x0AB7 /*005267*/,0xFFCE /*177716*/,0x0002 /*000002*/,0x8A1F /*105037*/,0xFF74 /*177564*/,0x0002 /*000002*/,
|
||||
0x0000 /*000000*/,0x0000 /*000000*/,0x1037 /*010067*/,0xFFF8 /*177770*/,0x0A37 /*005067*/,0xFFF6 /*177766*/,0x15DF /*012737*/,0xC0C0 /*140300*/,
|
||||
0x0030 /*000060*/,0x15DF /*012737*/,0x0080 /*000200*/,0x0032 /*000062*/,0xD5DF /*152737*/,0x0040 /*000100*/,0xFF70 /*177560*/,0x0087 /*000207*/,
|
||||
0x1026 /*010046*/,0x97C0 /*113700*/,0xFF72 /*177562*/,0xA017 /*120027*/,0x000D /*000015*/,0x032D /*001455*/,0xA017 /*120027*/,0x007F /*000177*/,
|
||||
0x0303 /*001403*/,0xA017 /*120027*/,0x0008 /*000010*/,0x020A /*001012*/,0x0BF7 /*005767*/,0xFFC6 /*177706*/,0x0306 /*001406*/,0x0AF7 /*005367*/,
|
||||
0xFFC0 /*177700*/,0x15C0 /*012700*/,0xC21F /*141037*/,0x09F7 /*004767*/,0xFF7E /*177576*/,0x012B /*000453*/,0xA017 /*120027*/,0x0020 /*000040*/,
|
||||
0x0528 /*002450*/,0xA017 /*120027*/,0x007F /*000177*/,0x0425 /*002045*/,0x09F7 /*004767*/,0xFF5E /*177536*/,0xA017 /*120027*/,0x007A /*000172*/,
|
||||
0x0605 /*003005*/,0xA017 /*120027*/,0x0061 /*000141*/,0x0502 /*002402*/,0xC5C0 /*142700*/,0x0020 /*000040*/,0x2DD7 /*026727*/,0xFF92 /*177622*/,
|
||||
0x00AC /*000254*/,0x0417 /*002027*/,0x9026 /*110046*/,0x1DC0 /*016700*/,0xFF86 /*177606*/,0x6DC0 /*066700*/,0xFF84 /*177604*/,0x9588 /*112610*/,
|
||||
0x0AB7 /*005267*/,0xFF7E /*177576*/,0x010E /*000416*/,0x1DC0 /*016700*/,0xFF76 /*177566*/,0x6DC0 /*066700*/,0xFF74 /*177564*/,0x8A08 /*105010*/,
|
||||
0x15DF /*012737*/,0xC146 /*140506*/,0x00A0 /*000240*/,0x15DF /*012737*/,0x0040 /*000100*/,0x00A2 /*000242*/,0x15DF /*012737*/,0x0400 /*002000*/,
|
||||
0xFFFA /*177772*/,0x1580 /*012600*/,0x0002 /*000002*/,0x0A1F /*005037*/,0xFFFA /*177772*/,0x1026 /*010046*/,0x1066 /*010146*/,0x10A6 /*010246*/,
|
||||
0x10E6 /*010346*/,0x1126 /*010446*/,0x15C0 /*012700*/,0xC21C /*141034*/,0x09F7 /*004767*/,0xFF0C /*177414*/,0xB5DF /*132737*/,0x0040 /*000100*/,
|
||||
0xFF74 /*177564*/,0x02FC /*001374*/,0x0A04 /*005004*/,0x15C3 /*012703*/,0xC223 /*141043*/,0x94C0 /*112300*/,0x0319 /*001431*/,0x1DC2 /*016702*/,
|
||||
0xFF2E /*177456*/,0x9481 /*112201*/,0x0319 /*001431*/,0xA057 /*120127*/,0x0020 /*000040*/,0x03FB /*001773*/,0xA001 /*120001*/,0x0208 /*001010*/,
|
||||
0x94C0 /*112300*/,0x030A /*001412*/,0x9481 /*112201*/,0x0308 /*001410*/,0xA057 /*120127*/,0x0020 /*000040*/,0x02F7 /*001367*/,0x0104 /*000404*/,
|
||||
0x94C0 /*112300*/,0x02FE /*001376*/,0x0A84 /*005204*/,0x01E9 /*000751*/,0x0CC4 /*006304*/,0x09FC /*004774*/,0xC1C0 /*140700*/,0x0104 /*000404*/,
|
||||
0x15C0 /*012700*/,0xC23F /*141077*/,0x09F7 /*004767*/,0xFEC0 /*177300*/,0x0A37 /*005067*/,0xFEF6 /*177366*/,0x15C0 /*012700*/,0xC269 /*141151*/,
|
||||
0x09F7 /*004767*/,0xFEB4 /*177264*/,0x1584 /*012604*/,0x1583 /*012603*/,0x1582 /*012602*/,0x1581 /*012601*/,0x1580 /*012600*/,0x0002 /*000002*/,
|
||||
0xC428 /*142050*/,0xC2A4 /*141244*/,0xC2B0 /*141260*/,0xC2F4 /*141364*/,0xC29A /*141232*/,0x4F43 /*047503*/,0x4D4D /*046515*/,0x4E41 /*047101*/,
|
||||
0x5344 /*051504*/,0x4120 /*040440*/,0x4552 /*042522*/,0x4220 /*041040*/,0x4F4F /*047517*/,0x2C54 /*026124*/,0x4820 /*044040*/,0x4C41 /*046101*/,
|
||||
0x2C54 /*026124*/,0x4C20 /*046040*/,0x4749 /*043511*/,0x5448 /*052110*/,0x2C53 /*026123*/,0x5420 /*052040*/,0x5345 /*051505*/,0x2054 /*020124*/,
|
||||
0x4E41 /*047101*/,0x2044 /*020104*/,0x4548 /*042510*/,0x504C /*050114*/,0x0A0D /*005015*/,0x4F42 /*047502*/,0x544F /*052117*/,0x4420 /*042040*/,
|
||||
0x5645 /*053105*/,0x4349 /*041511*/,0x5345 /*051505*/,0x4120 /*040440*/,0x4552 /*042522*/,0x5220 /*051040*/,0x3F4B /*037513*/,0x5220 /*051040*/,
|
||||
0x3F4C /*037514*/,0x4F20 /*047440*/,0x2052 /*020122*/,0x5052 /*050122*/,0x0D3F /*006477*/,0x000A /*000012*/,0x0A0D /*005015*/,0x0800 /*004000*/,
|
||||
0x0820 /*004040*/,0x4200 /*041000*/,0x4F4F /*047517*/,0x0054 /*000124*/,0x4148 /*040510*/,0x544C /*052114*/,0x5400 /*052000*/,0x5345 /*051505*/,
|
||||
0x0054 /*000124*/,0x494C /*044514*/,0x4847 /*044107*/,0x5354 /*051524*/,0x4800 /*044000*/,0x4C45 /*046105*/,0x0050 /*000120*/,0x5500 /*052400*/,
|
||||
0x4B4E /*045516*/,0x4F4E /*047516*/,0x4E57 /*047127*/,0x4320 /*041440*/,0x4D4F /*046517*/,0x414D /*040515*/,0x444E /*042116*/,0x0D0A /*006412*/,
|
||||
0x5000 /*050000*/,0x5044 /*050104*/,0x312D /*030455*/,0x2031 /*020061*/,0x4F4D /*047515*/,0x494E /*044516*/,0x4F54 /*047524*/,0x2052 /*020122*/,
|
||||
0x3156 /*030526*/,0x302E /*030056*/,0x0D0A /*006412*/,0x0D0A /*006412*/,0x4200 /*041000*/,0x4F4F /*047517*/,0x3E54 /*037124*/,0x0020 /*000040*/,
|
||||
0x4E55 /*047125*/,0x4E4B /*047113*/,0x574F /*053517*/,0x204E /*020116*/,0x4F42 /*047502*/,0x544F /*052117*/,0x4420 /*042040*/,0x5645 /*053105*/,
|
||||
0x4349 /*041511*/,0x0A45 /*005105*/,0x000D /*000015*/,0x2020 /*020040*/,0x2020 /*020040*/,0x2020 /*020040*/,0x4C43 /*046103*/,0x434F /*041517*/,
|
||||
0x204B /*020113*/,0x4954 /*044524*/,0x4B43 /*045503*/,0x0A53 /*005123*/,0x000D /*000015*/,0x15C0 /*012700*/,0xC1CA /*140712*/,0x09F7 /*004767*/,
|
||||
0xFDC6 /*176706*/,0x0087 /*000207*/,0x0000 /*000000*/,0x15C0 /*012700*/,0xC21C /*141034*/,0x09F7 /*004767*/,0xFDBA /*176672*/,0x0087 /*000207*/,
|
||||
0x0A37 /*005067*/,0xFD9E /*176636*/,0x15C5 /*012705*/,0x1A00 /*015000*/,0x115F /*010537*/,0xFF78 /*177570*/,0x1144 /*010504*/,0x0C84 /*006204*/,
|
||||
0x0A00 /*005000*/,0x1141 /*010501*/,0x7204 /*071004*/,0x1002 /*010002*/,0x7084 /*070204*/,0x60C1 /*060301*/,0x2045 /*020105*/,0x0301 /*001401*/,
|
||||
0x0000 /*000000*/,0x7F0A /*077412*/,0x7F4F /*077517*/,0x15C0 /*012700*/,0xC28B /*141213*/,0x1DC3 /*016703*/,0xFD74 /*176564*/,0x0A02 /*005002*/,
|
||||
0x7297 /*071227*/,0x0008 /*000010*/,0x65C3 /*062703*/,0x0030 /*000060*/,0x90E0 /*110340*/,0x1083 /*010203*/,0x02F8 /*001370*/,0x09F7 /*004767*/,
|
||||
0xFD76 /*176566*/,0x0087 /*000207*/,0x15C3 /*012703*/,0x7F06 /*077406*/,0x0A02 /*005002*/,0x0A01 /*005001*/,0x15C0 /*012700*/,0x0008 /*000010*/,
|
||||
0x10F1 /*010361*/,0xF4C0 /*172300*/,0x10B1 /*010261*/,0xF4E0 /*172340*/,0x10F1 /*010361*/,0xF4D0 /*172320*/,0x10B1 /*010261*/,0xF4F0 /*172360*/,
|
||||
0x10F1 /*010361*/,0xF480 /*172200*/,0x10B1 /*010261*/,0xF4A0 /*172240*/,0x10F1 /*010361*/,0xF490 /*172220*/,0x10B1 /*010261*/,0xF4B0 /*172260*/,
|
||||
0x10F1 /*010361*/,0xFF80 /*177600*/,0x10B1 /*010261*/,0xFFA0 /*177640*/,0x10F1 /*010361*/,0xFF90 /*177620*/,0x10F1 /*010361*/,0xFFB0 /*177660*/,
|
||||
0x65C2 /*062702*/,0x0080 /*000200*/,0x65C1 /*062701*/,0x0002 /*000002*/,0x7E1D /*077035*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xF4FE /*172376*/,
|
||||
0x55DF /*052737*/,0xFC00 /*176000*/,0xF4BE /*172276*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xFFBE /*177676*/,0x15DF /*012737*/,0x003F /*000077*/,
|
||||
0xF54E /*172516*/,0x15DF /*012737*/,0x0001 /*000001*/,0xFF7A /*177572*/,0x15DF /*012737*/,0x03C0 /*001700*/,0xF4A4 /*172244*/,0x15DF /*012737*/,
|
||||
0x03C0 /*001700*/,0xF4B4 /*172264*/,0x15DF /*012737*/,0x1000 /*010000*/,0xFFFE /*177776*/,0x15C3 /*012703*/,0x4080 /*040200*/,0x15C2 /*012702*/,
|
||||
0xC384 /*141604*/,0x14A6 /*012246*/,0x0D93 /*006623*/,0x2097 /*020227*/,0xC428 /*142050*/,0x87FB /*103773*/,0x15F7 /*012767*/,0x4080 /*040200*/,
|
||||
0xFCCE /*176316*/,0x0087 /*000207*/,0x15C0 /*012700*/,0x001F /*000037*/,0x15C1 /*012701*/,0xF800 /*174000*/,0x35DF /*032737*/,0x0001 /*000001*/,
|
||||
0xFF78 /*177570*/,0x030C /*001414*/,0x15C0 /*012700*/,0x0F0F /*007417*/,0x1001 /*010001*/,0x0A41 /*005101*/,0x35DF /*032737*/,0x0002 /*000002*/,
|
||||
0xFF78 /*177570*/,0x0304 /*001404*/,0x15C0 /*012700*/,0x3C73 /*036163*/,0x15C1 /*012701*/,0x3E00 /*037000*/,0x1042 /*010102*/,0xE5C2 /*162702*/,
|
||||
0x0002 /*000002*/,0x45C2 /*042702*/,0x0001 /*000001*/,0x1083 /*010203*/,0x45C3 /*042703*/,0xFFC1 /*177701*/,0x15F3 /*012763*/,0x0001 /*000001*/,
|
||||
0x4000 /*040000*/,0x65C3 /*062703*/,0x0002 /*000002*/,0x15F3 /*012763*/,0x004B /*000113*/,0x4000 /*040000*/,0x1084 /*010204*/,0x7517 /*072427*/,
|
||||
0xFFFA /*177772*/,0x45C4 /*042704*/,0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,0x1084 /*010204*/,0x7517 /*072427*/,
|
||||
0xFFF4 /*177764*/,0x45C4 /*042704*/,0xFFF1 /*177761*/,0x1174 /*010564*/,0xF4A0 /*172240*/,0x1043 /*010103*/,0x74D7 /*072327*/,0xFFF4 /*177764*/,
|
||||
0x45C3 /*042703*/,0xFFF1 /*177761*/,0x20C4 /*020304*/,0x030A /*001412*/,0x1044 /*010104*/,0x7517 /*072427*/,0xFFFA /*177772*/,0x45C4 /*042704*/,
|
||||
0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,0x1173 /*010563*/,0xF4A0 /*172240*/,0x15C4 /*012704*/,0x0003 /*000003*/,
|
||||
0x67C4 /*063704*/,0xFF78 /*177570*/,0x15C3 /*012703*/,0x0002 /*000002*/,0x61C3 /*060703*/,0x004A /*000112*/,0x7F02 /*077402*/,0x1002 /*010002*/,
|
||||
0x0C02 /*006002*/,0x0C41 /*006101*/,0x0C00 /*006000*/,0x01C2 /*000702*/,0x0A03 /*005003*/,0x9481 /*112201*/,0x0365 /*001545*/,0xA057 /*120127*/,
|
||||
0x0020 /*000040*/,0x03FB /*001773*/,0xA057 /*120127*/,0x0052 /*000122*/,0x0305 /*001405*/,0x15C0 /*012700*/,0xC270 /*141160*/,0x09F7 /*004767*/,
|
||||
0xFC26 /*176046*/,0x0087 /*000207*/,0x9481 /*112201*/,0x9480 /*112200*/,0x030E /*001416*/,0xA017 /*120027*/,0x0020 /*000040*/,0x030B /*001413*/,
|
||||
0xA017 /*120027*/,0x0037 /*000067*/,0x0619 /*003031*/,0xE5C0 /*162700*/,0x0030 /*000060*/,0x0516 /*002426*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,
|
||||
0x0CC3 /*006303*/,0x5003 /*050003*/,0x01F0 /*000760*/,0x0A02 /*005002*/,0x15D2 /*012722*/,0x005F /*000137*/,0x15D2 /*012722*/,0xC000 /*140000*/,
|
||||
0x15D2 /*012722*/,0xC000 /*140000*/,0x0A12 /*005022*/,0xA057 /*120127*/,0x004B /*000113*/,0x033E /*001476*/,0xA057 /*120127*/,0x004C /*000114*/,
|
||||
0x0308 /*001410*/,0xA057 /*120127*/,0x0050 /*000120*/,0x034F /*001517*/,0x15C0 /*012700*/,0xC23F /*141077*/,0x09F7 /*004767*/,0xFBD8 /*175730*/,
|
||||
0x0087 /*000207*/,0x0005 /*000005*/,0x00C3 /*000303*/,0x15C1 /*012701*/,0xF900 /*174400*/,0x15F1 /*012761*/,0x000B /*000013*/,0x0004 /*000004*/,
|
||||
0x55C3 /*052703*/,0x0004 /*000004*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x0008 /*000010*/,
|
||||
0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x1C42 /*016102*/,0x0006 /*000006*/,0x45C2 /*042702*/,0x003F /*000077*/,0x0A82 /*005202*/,
|
||||
0x10B1 /*010261*/,0x0004 /*000004*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x0006 /*000006*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,
|
||||
0x0A31 /*005061*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x15F1 /*012761*/,0xFE00 /*177000*/,0x0006 /*000006*/,0x8A03 /*105003*/,
|
||||
0x55C3 /*052703*/,0x000C /*000014*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x45C9 /*042711*/,0x00FF /*000377*/,0x0A02 /*005002*/,
|
||||
0x0A03 /*005003*/,0x0A04 /*005004*/,0x0A05 /*005005*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x00C3 /*000303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,
|
||||
0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x15C1 /*012701*/,0xFF0A /*177412*/,0x10C9 /*010311*/,0x0A21 /*005041*/,0x15E1 /*012741*/,
|
||||
0xFE00 /*177000*/,0x15E1 /*012741*/,0x0005 /*000005*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0A04 /*005004*/,0x0A05 /*005005*/,0x8BC9 /*105711*/,
|
||||
0x80FE /*100376*/,0x8A09 /*105011*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x15C1 /*012701*/,0xFDC0 /*176700*/,0x15F1 /*012761*/,0x0020 /*000040*/,
|
||||
0x0008 /*000010*/,0x10F1 /*010361*/,0x0008 /*000010*/,0x15C9 /*012711*/,0x0011 /*000021*/,0x15F1 /*012761*/,0x1000 /*010000*/,0x001A /*000032*/,
|
||||
0x15F1 /*012761*/,0xFE00 /*177000*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x0A31 /*005061*/,0x0006 /*000006*/,0x0A31 /*005061*/,
|
||||
0x001C /*000034*/,0x15C9 /*012711*/,0x0039 /*000071*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A09 /*105011*/,0x10C0 /*010300*/,0x0A07 /*005007*/]
|
||||
0xC255 /*141125*/,0x09F7 /*004767*/,0x0056 /*000126*/,0x15DF /*012737*/,0xC058 /*140130*/,0x0040 /*000100*/,0x15DF /*012737*/,0x00E0 /*000340*/,
|
||||
0x0042 /*000102*/,0x55DF /*052737*/,0x0040 /*000100*/,0xFF66 /*177546*/,0x15C0 /*012700*/,0xC26D /*141155*/,0x09F7 /*004767*/,0x003C /*000074*/,
|
||||
0xE5C6 /*162706*/,0x00AE /*000256*/,0x1180 /*010600*/,0x09F7 /*004767*/,0x006E /*000156*/,0x0A00 /*005000*/,0x101F /*010037*/,0xFF78 /*177570*/,
|
||||
0x0001 /*000001*/,0x0A80 /*005200*/,0x0BF7 /*005767*/,0x000C /*000014*/,0x03F9 /*001771*/,0x15E6 /*012746*/,0x5800 /*054000*/,0x1DE6 /*016746*/,
|
||||
0x0002 /*000002*/,0x0002 /*000002*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0AB7 /*005267*/,0xFFFA /*177772*/,0x0002 /*000002*/,0x8BDF /*105737*/,
|
||||
0xFF74 /*177564*/,0x80FD /*100375*/,0x901F /*110037*/,0xFF76 /*177566*/,0x0087 /*000207*/,0x0000 /*000000*/,0xB5DF /*132737*/,0x0040 /*000100*/,
|
||||
0xFF74 /*177564*/,0x02FC /*001374*/,0x1037 /*010067*/,0xFFF2 /*177762*/,0x15DF /*012737*/,0xC08C /*140214*/,0x0034 /*000064*/,0x15DF /*012737*/,
|
||||
0x0080 /*000200*/,0x0036 /*000066*/,0xD5DF /*152737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x0087 /*000207*/,0x8BFF /*105777*/,0xFFDA /*177732*/,
|
||||
0x0306 /*001406*/,0x9FDF /*117737*/,0xFFD4 /*177724*/,0xFF76 /*177566*/,0x0AB7 /*005267*/,0xFFCE /*177716*/,0x0002 /*000002*/,0x8A1F /*105037*/,
|
||||
0xFF74 /*177564*/,0x0002 /*000002*/,0x0000 /*000000*/,0x0000 /*000000*/,0x1037 /*010067*/,0xFFF8 /*177770*/,0x0A37 /*005067*/,0xFFF6 /*177766*/,
|
||||
0x15DF /*012737*/,0xC0C4 /*140304*/,0x0030 /*000060*/,0x15DF /*012737*/,0x0080 /*000200*/,0x0032 /*000062*/,0xD5DF /*152737*/,0x0040 /*000100*/,
|
||||
0xFF70 /*177560*/,0x0087 /*000207*/,0x1026 /*010046*/,0x97C0 /*113700*/,0xFF72 /*177562*/,0xA017 /*120027*/,0x000D /*000015*/,0x032D /*001455*/,
|
||||
0xA017 /*120027*/,0x007F /*000177*/,0x0303 /*001403*/,0xA017 /*120027*/,0x0008 /*000010*/,0x020A /*001012*/,0x0BF7 /*005767*/,0xFFC6 /*177706*/,
|
||||
0x0306 /*001406*/,0x0AF7 /*005367*/,0xFFC0 /*177700*/,0x15C0 /*012700*/,0xC223 /*141043*/,0x09F7 /*004767*/,0xFF7E /*177576*/,0x012B /*000453*/,
|
||||
0xA017 /*120027*/,0x0020 /*000040*/,0x0528 /*002450*/,0xA017 /*120027*/,0x007F /*000177*/,0x0425 /*002045*/,0x09F7 /*004767*/,0xFF5E /*177536*/,
|
||||
0xA017 /*120027*/,0x007A /*000172*/,0x0605 /*003005*/,0xA017 /*120027*/,0x0061 /*000141*/,0x0502 /*002402*/,0xC5C0 /*142700*/,0x0020 /*000040*/,
|
||||
0x2DD7 /*026727*/,0xFF92 /*177622*/,0x00AC /*000254*/,0x0417 /*002027*/,0x9026 /*110046*/,0x1DC0 /*016700*/,0xFF86 /*177606*/,0x6DC0 /*066700*/,
|
||||
0xFF84 /*177604*/,0x9588 /*112610*/,0x0AB7 /*005267*/,0xFF7E /*177576*/,0x010E /*000416*/,0x1DC0 /*016700*/,0xFF76 /*177566*/,0x6DC0 /*066700*/,
|
||||
0xFF74 /*177564*/,0x8A08 /*105010*/,0x15DF /*012737*/,0xC14A /*140512*/,0x00A0 /*000240*/,0x15DF /*012737*/,0x0040 /*000100*/,0x00A2 /*000242*/,
|
||||
0x15DF /*012737*/,0x0400 /*002000*/,0xFFFA /*177772*/,0x1580 /*012600*/,0x0002 /*000002*/,0x0A1F /*005037*/,0xFFFA /*177772*/,0x1026 /*010046*/,
|
||||
0x1066 /*010146*/,0x10A6 /*010246*/,0x10E6 /*010346*/,0x1126 /*010446*/,0x15C0 /*012700*/,0xC220 /*141040*/,0x09F7 /*004767*/,0xFF0C /*177414*/,
|
||||
0xB5DF /*132737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x02FC /*001374*/,0x0A04 /*005004*/,0x15C3 /*012703*/,0xC227 /*141047*/,0x94C0 /*112300*/,
|
||||
0x0319 /*001431*/,0x1DC2 /*016702*/,0xFF2E /*177456*/,0x9481 /*112201*/,0x0319 /*001431*/,0xA057 /*120127*/,0x0020 /*000040*/,0x03FB /*001773*/,
|
||||
0xA001 /*120001*/,0x0208 /*001010*/,0x94C0 /*112300*/,0x030A /*001412*/,0x9481 /*112201*/,0x0308 /*001410*/,0xA057 /*120127*/,0x0020 /*000040*/,
|
||||
0x02F7 /*001367*/,0x0104 /*000404*/,0x94C0 /*112300*/,0x02FE /*001376*/,0x0A84 /*005204*/,0x01E9 /*000751*/,0x0CC4 /*006304*/,0x09FC /*004774*/,
|
||||
0xC1C4 /*140704*/,0x0104 /*000404*/,0x15C0 /*012700*/,0xC243 /*141103*/,0x09F7 /*004767*/,0xFEC0 /*177300*/,0x0A37 /*005067*/,0xFEF6 /*177366*/,
|
||||
0x15C0 /*012700*/,0xC26D /*141155*/,0x09F7 /*004767*/,0xFEB4 /*177264*/,0x1584 /*012604*/,0x1583 /*012603*/,0x1582 /*012602*/,0x1581 /*012601*/,
|
||||
0x1580 /*012600*/,0x0002 /*000002*/,0xC42C /*142054*/,0xC2A8 /*141250*/,0xC2B4 /*141264*/,0xC2F8 /*141370*/,0xC29E /*141236*/,0x4F43 /*047503*/,
|
||||
0x4D4D /*046515*/,0x4E41 /*047101*/,0x5344 /*051504*/,0x4120 /*040440*/,0x4552 /*042522*/,0x4220 /*041040*/,0x4F4F /*047517*/,0x2C54 /*026124*/,
|
||||
0x4820 /*044040*/,0x4C41 /*046101*/,0x2C54 /*026124*/,0x4C20 /*046040*/,0x4749 /*043511*/,0x5448 /*052110*/,0x2C53 /*026123*/,0x5420 /*052040*/,
|
||||
0x5345 /*051505*/,0x2054 /*020124*/,0x4E41 /*047101*/,0x2044 /*020104*/,0x4548 /*042510*/,0x504C /*050114*/,0x0A0D /*005015*/,0x4F42 /*047502*/,
|
||||
0x544F /*052117*/,0x4420 /*042040*/,0x5645 /*053105*/,0x4349 /*041511*/,0x5345 /*051505*/,0x4120 /*040440*/,0x4552 /*042522*/,0x5220 /*051040*/,
|
||||
0x3F4B /*037513*/,0x5220 /*051040*/,0x3F4C /*037514*/,0x4F20 /*047440*/,0x2052 /*020122*/,0x5052 /*050122*/,0x0D3F /*006477*/,0x000A /*000012*/,
|
||||
0x0A0D /*005015*/,0x0800 /*004000*/,0x0820 /*004040*/,0x4200 /*041000*/,0x4F4F /*047517*/,0x0054 /*000124*/,0x4148 /*040510*/,0x544C /*052114*/,
|
||||
0x5400 /*052000*/,0x5345 /*051505*/,0x0054 /*000124*/,0x494C /*044514*/,0x4847 /*044107*/,0x5354 /*051524*/,0x4800 /*044000*/,0x4C45 /*046105*/,
|
||||
0x0050 /*000120*/,0x5500 /*052400*/,0x4B4E /*045516*/,0x4F4E /*047516*/,0x4E57 /*047127*/,0x4320 /*041440*/,0x4D4F /*046517*/,0x414D /*040515*/,
|
||||
0x444E /*042116*/,0x0D0A /*006412*/,0x5000 /*050000*/,0x5044 /*050104*/,0x312D /*030455*/,0x2031 /*020061*/,0x4F4D /*047515*/,0x494E /*044516*/,
|
||||
0x4F54 /*047524*/,0x2052 /*020122*/,0x3156 /*030526*/,0x302E /*030056*/,0x0D0A /*006412*/,0x0D0A /*006412*/,0x4200 /*041000*/,0x4F4F /*047517*/,
|
||||
0x3E54 /*037124*/,0x0020 /*000040*/,0x4E55 /*047125*/,0x4E4B /*047113*/,0x574F /*053517*/,0x204E /*020116*/,0x4F42 /*047502*/,0x544F /*052117*/,
|
||||
0x4420 /*042040*/,0x5645 /*053105*/,0x4349 /*041511*/,0x0A45 /*005105*/,0x000D /*000015*/,0x2020 /*020040*/,0x2020 /*020040*/,0x2020 /*020040*/,
|
||||
0x4C43 /*046103*/,0x434F /*041517*/,0x204B /*020113*/,0x4954 /*044524*/,0x4B43 /*045503*/,0x0A53 /*005123*/,0x000D /*000015*/,0x15C0 /*012700*/,
|
||||
0xC1CE /*140716*/,0x09F7 /*004767*/,0xFDC6 /*176706*/,0x0087 /*000207*/,0x0000 /*000000*/,0x15C0 /*012700*/,0xC220 /*141040*/,0x09F7 /*004767*/,
|
||||
0xFDBA /*176672*/,0x0087 /*000207*/,0x0A37 /*005067*/,0xFD9E /*176636*/,0x15C5 /*012705*/,0x1A00 /*015000*/,0x115F /*010537*/,0xFF78 /*177570*/,
|
||||
0x1144 /*010504*/,0x0C84 /*006204*/,0x0A00 /*005000*/,0x1141 /*010501*/,0x7204 /*071004*/,0x1002 /*010002*/,0x7084 /*070204*/,0x60C1 /*060301*/,
|
||||
0x2045 /*020105*/,0x0301 /*001401*/,0x0000 /*000000*/,0x7F0A /*077412*/,0x7F4F /*077517*/,0x15C0 /*012700*/,0xC28F /*141217*/,0x1DC3 /*016703*/,
|
||||
0xFD74 /*176564*/,0x0A02 /*005002*/,0x7297 /*071227*/,0x0008 /*000010*/,0x65C3 /*062703*/,0x0030 /*000060*/,0x90E0 /*110340*/,0x1083 /*010203*/,
|
||||
0x02F8 /*001370*/,0x09F7 /*004767*/,0xFD76 /*176566*/,0x0087 /*000207*/,0x15C3 /*012703*/,0x7F06 /*077406*/,0x0A02 /*005002*/,0x0A01 /*005001*/,
|
||||
0x15C0 /*012700*/,0x0008 /*000010*/,0x10F1 /*010361*/,0xF4C0 /*172300*/,0x10B1 /*010261*/,0xF4E0 /*172340*/,0x10F1 /*010361*/,0xF4D0 /*172320*/,
|
||||
0x10B1 /*010261*/,0xF4F0 /*172360*/,0x10F1 /*010361*/,0xF480 /*172200*/,0x10B1 /*010261*/,0xF4A0 /*172240*/,0x10F1 /*010361*/,0xF490 /*172220*/,
|
||||
0x10B1 /*010261*/,0xF4B0 /*172260*/,0x10F1 /*010361*/,0xFF80 /*177600*/,0x10B1 /*010261*/,0xFFA0 /*177640*/,0x10F1 /*010361*/,0xFF90 /*177620*/,
|
||||
0x10F1 /*010361*/,0xFFB0 /*177660*/,0x65C2 /*062702*/,0x0080 /*000200*/,0x65C1 /*062701*/,0x0002 /*000002*/,0x7E1D /*077035*/,0x55DF /*052737*/,
|
||||
0xFC00 /*176000*/,0xF4FE /*172376*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xF4BE /*172276*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xFFBE /*177676*/,
|
||||
0x15DF /*012737*/,0x003F /*000077*/,0xF54E /*172516*/,0x15DF /*012737*/,0x0001 /*000001*/,0xFF7A /*177572*/,0x15DF /*012737*/,0x03C0 /*001700*/,
|
||||
0xF4A4 /*172244*/,0x15DF /*012737*/,0x03C0 /*001700*/,0xF4B4 /*172264*/,0x15DF /*012737*/,0x1000 /*010000*/,0xFFFE /*177776*/,0x15C3 /*012703*/,
|
||||
0x4080 /*040200*/,0x15C2 /*012702*/,0xC388 /*141610*/,0x14A6 /*012246*/,0x0D93 /*006623*/,0x2097 /*020227*/,0xC42C /*142054*/,0x87FB /*103773*/,
|
||||
0x15F7 /*012767*/,0x4080 /*040200*/,0xFCCE /*176316*/,0x0087 /*000207*/,0x15C0 /*012700*/,0x001F /*000037*/,0x15C1 /*012701*/,0xF800 /*174000*/,
|
||||
0x35DF /*032737*/,0x0001 /*000001*/,0xFF78 /*177570*/,0x030C /*001414*/,0x15C0 /*012700*/,0x0F0F /*007417*/,0x1001 /*010001*/,0x0A41 /*005101*/,
|
||||
0x35DF /*032737*/,0x0002 /*000002*/,0xFF78 /*177570*/,0x0304 /*001404*/,0x15C0 /*012700*/,0x3C73 /*036163*/,0x15C1 /*012701*/,0x3E00 /*037000*/,
|
||||
0x1042 /*010102*/,0xE5C2 /*162702*/,0x0002 /*000002*/,0x45C2 /*042702*/,0x0001 /*000001*/,0x1083 /*010203*/,0x45C3 /*042703*/,0xFFC1 /*177701*/,
|
||||
0x15F3 /*012763*/,0x0001 /*000001*/,0x4000 /*040000*/,0x65C3 /*062703*/,0x0002 /*000002*/,0x15F3 /*012763*/,0x004B /*000113*/,0x4000 /*040000*/,
|
||||
0x1084 /*010204*/,0x7517 /*072427*/,0xFFFA /*177772*/,0x45C4 /*042704*/,0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,
|
||||
0x1084 /*010204*/,0x7517 /*072427*/,0xFFF4 /*177764*/,0x45C4 /*042704*/,0xFFF1 /*177761*/,0x1174 /*010564*/,0xF4A0 /*172240*/,0x1043 /*010103*/,
|
||||
0x74D7 /*072327*/,0xFFF4 /*177764*/,0x45C3 /*042703*/,0xFFF1 /*177761*/,0x20C4 /*020304*/,0x030A /*001412*/,0x1044 /*010104*/,0x7517 /*072427*/,
|
||||
0xFFFA /*177772*/,0x45C4 /*042704*/,0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,0x1173 /*010563*/,0xF4A0 /*172240*/,
|
||||
0x15C4 /*012704*/,0x0003 /*000003*/,0x67C4 /*063704*/,0xFF78 /*177570*/,0x15C3 /*012703*/,0x0002 /*000002*/,0x61C3 /*060703*/,0x004A /*000112*/,
|
||||
0x7F02 /*077402*/,0x1002 /*010002*/,0x0C02 /*006002*/,0x0C41 /*006101*/,0x0C00 /*006000*/,0x01C2 /*000702*/,0x0A03 /*005003*/,0x9481 /*112201*/,
|
||||
0x0365 /*001545*/,0xA057 /*120127*/,0x0020 /*000040*/,0x03FB /*001773*/,0xA057 /*120127*/,0x0052 /*000122*/,0x0305 /*001405*/,0x15C0 /*012700*/,
|
||||
0xC274 /*141164*/,0x09F7 /*004767*/,0xFC26 /*176046*/,0x0087 /*000207*/,0x9481 /*112201*/,0x9480 /*112200*/,0x030E /*001416*/,0xA017 /*120027*/,
|
||||
0x0020 /*000040*/,0x030B /*001413*/,0xA017 /*120027*/,0x0037 /*000067*/,0x0619 /*003031*/,0xE5C0 /*162700*/,0x0030 /*000060*/,0x0516 /*002426*/,
|
||||
0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x5003 /*050003*/,0x01F0 /*000760*/,0x0A02 /*005002*/,0x15D2 /*012722*/,0x005F /*000137*/,
|
||||
0x15D2 /*012722*/,0xC000 /*140000*/,0x15D2 /*012722*/,0xC000 /*140000*/,0x0A12 /*005022*/,0xA057 /*120127*/,0x004B /*000113*/,0x033E /*001476*/,
|
||||
0xA057 /*120127*/,0x004C /*000114*/,0x0308 /*001410*/,0xA057 /*120127*/,0x0050 /*000120*/,0x034F /*001517*/,0x15C0 /*012700*/,0xC243 /*141103*/,
|
||||
0x09F7 /*004767*/,0xFBD8 /*175730*/,0x0087 /*000207*/,0x0005 /*000005*/,0x00C3 /*000303*/,0x15C1 /*012701*/,0xF900 /*174400*/,0x15F1 /*012761*/,
|
||||
0x000B /*000013*/,0x0004 /*000004*/,0x55C3 /*052703*/,0x0004 /*000004*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A03 /*105003*/,
|
||||
0x55C3 /*052703*/,0x0008 /*000010*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x1C42 /*016102*/,0x0006 /*000006*/,0x45C2 /*042702*/,
|
||||
0x003F /*000077*/,0x0A82 /*005202*/,0x10B1 /*010261*/,0x0004 /*000004*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x0006 /*000006*/,0x10C9 /*010311*/,
|
||||
0x8BC9 /*105711*/,0x80FE /*100376*/,0x0A31 /*005061*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x15F1 /*012761*/,0xFE00 /*177000*/,
|
||||
0x0006 /*000006*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x000C /*000014*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x45C9 /*042711*/,
|
||||
0x00FF /*000377*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0A04 /*005004*/,0x0A05 /*005005*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x00C3 /*000303*/,
|
||||
0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x15C1 /*012701*/,0xFF0A /*177412*/,0x10C9 /*010311*/,
|
||||
0x0A21 /*005041*/,0x15E1 /*012741*/,0xFE00 /*177000*/,0x15E1 /*012741*/,0x0005 /*000005*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0A04 /*005004*/,
|
||||
0x0A05 /*005005*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A09 /*105011*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x15C1 /*012701*/,0xFDC0 /*176700*/,
|
||||
0x15F1 /*012761*/,0x0020 /*000040*/,0x0008 /*000010*/,0x10F1 /*010361*/,0x0008 /*000010*/,0x15C9 /*012711*/,0x0011 /*000021*/,0x15F1 /*012761*/,
|
||||
0x1000 /*010000*/,0x001A /*000032*/,0x15F1 /*012761*/,0xFE00 /*177000*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x0A31 /*005061*/,
|
||||
0x0006 /*000006*/,0x0A31 /*005061*/,0x001C /*000034*/,0x15C9 /*012711*/,0x0039 /*000071*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A09 /*105011*/,
|
||||
0x10C0 /*010300*/,0x0A07 /*005007*/]
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -4,6 +4,7 @@
|
|||
; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING?
|
||||
|
||||
PSW = 177776
|
||||
CNSW = 177570
|
||||
DL11XCSR = 177564
|
||||
DL11VEC = 64
|
||||
|
||||
|
|
@ -28,7 +29,8 @@ START: RESET ; 140000
|
|||
MOV SP,R0
|
||||
JSR PC,INPUT
|
||||
CLR R0
|
||||
1$: WAIT
|
||||
1$: MOV R0,@#CNSW ; UPDATE THE FRONT PANEL DATA DISPLAY WITH R0
|
||||
WAIT
|
||||
INC R0
|
||||
TST LGHTON
|
||||
BEQ 1$
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ The **PDPJSMON.mac** source code is shown below.
|
|||
; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING?
|
||||
|
||||
PSW = 177776
|
||||
CNSW = 177570
|
||||
DL11XCSR = 177564
|
||||
DL11VEC = 64
|
||||
|
||||
|
|
@ -50,7 +51,8 @@ The **PDPJSMON.mac** source code is shown below.
|
|||
MOV SP,R0
|
||||
JSR PC,INPUT
|
||||
CLR R0
|
||||
1$: WAIT
|
||||
1$: MOV R0,@#CNSW ; UPDATE THE FRONT PANEL DATA DISPLAY WITH R0
|
||||
WAIT
|
||||
INC R0
|
||||
TST LGHTON
|
||||
BEQ 1$
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<device id="default" type="default"/>
|
||||
<serial id="dl11" adapter="0" binding="print" upperCase="true"/>
|
||||
<panel ref="/devices/pdp11/panel/1170/debugger/front.xml"/>
|
||||
<debugger id="debugger" base="8" messages="" commands=""/>
|
||||
<debugger id="debugger" base="8" messages="fault|disk|halt" commands=""/>
|
||||
<device ref="/devices/pdp11/pc11/default.xml"/>
|
||||
<device ref="/devices/pdp11/rl11/default.xml"/>
|
||||
</machine>
|
||||
|
|
|
|||
|
|
@ -2,105 +2,133 @@
|
|||
<panel id="panel" width="100%" padding="8px">
|
||||
<name>Control Panel</name>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">16</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">18</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">22</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B18" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B22" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">KRNL</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">SUPR</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">USER</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="KERNEL" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="SUPER" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="USER" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right">ADDRESS</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A0" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A3" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A6" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A9" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A12" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A15" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A17" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A18" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A19" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A20" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="100%" pos="right" style="clear:both;"><control type="rled" binding="A21" width="100%" container="center"/></control>
|
||||
</control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED1</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED2</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED3</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED2" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED3" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED4</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED5</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED6</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED5" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED6" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right">DATA</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D0" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D3" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D6" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D9" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D12" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="100%" pos="right" style="clear:both;"><control type="rled" binding="D15" width="100%" container="center"/></control>
|
||||
</control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">START</control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">STRT</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">STEP</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">ENABLE</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">E/H</control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="START" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="STEP" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="ENABLE" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">CONT</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">DEP</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">EXAM</control>
|
||||
|
|
@ -108,13 +136,13 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="DEP" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="EXAM" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="50%" pos="right">LOAD</control>
|
||||
<control type="container" class="pcjs-swlbl" width="50%" pos="right">TEST</control>
|
||||
<control type="container" class="pcjs-swpad" width="50%" pos="right" style="clear:both;"><control type="switch" binding="LOAD" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="50%" pos="right"><control type="switch" binding="TEST" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">0</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">1</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">2</control>
|
||||
|
|
@ -122,7 +150,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">3</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">4</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">5</control>
|
||||
|
|
@ -130,7 +158,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">6</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">7</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">8</control>
|
||||
|
|
@ -138,7 +166,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">9</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">10</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">11</control>
|
||||
|
|
@ -146,7 +174,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">12</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">13</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">14</control>
|
||||
|
|
@ -154,7 +182,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">15</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">16</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">17</control>
|
||||
|
|
@ -162,7 +190,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S17" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">18</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">19</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">20</control>
|
||||
|
|
@ -170,7 +198,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S19" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S20" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="100%" pos="right">21</control>
|
||||
<control type="container" class="pcjs-swpad" width="100%" pos="right" style="clear:both;"><control type="switch" binding="S21" width="100%" container="center"/></control>
|
||||
</control>
|
||||
|
|
|
|||
|
|
@ -2,97 +2,125 @@
|
|||
<panel id="panel" width="100%" padding="8px">
|
||||
<name>Control Panel</name>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">16</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">18</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">22</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B18" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="B22" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">KRNL</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">SUPR</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">USER</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="KERNEL" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="SUPER" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="USER" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right">ADDRESS</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A0" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A3" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A6" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A9" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A12" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A15" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A17" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A18" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A19" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="A20" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="100%" pos="right" style="clear:both;"><control type="rled" binding="A21" width="100%" container="center"/></control>
|
||||
</control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED1</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED2</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED3</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED2" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED3" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED4</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED5</control>
|
||||
<control type="container" class="pcjs-ledlbl" width="33%" pos="right">LED6</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED5" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="LED6" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right"></control>
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right">DATA</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D0" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D3" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D6" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D9" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl0" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D12" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-ledpad" width="33%" pos="right"><control type="rled" binding="D14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-ledlbl1" width="100%" pos="right" style="color:transparent">.</control>
|
||||
<control type="container" class="pcjs-ledpad" width="100%" pos="right" style="clear:both;"><control type="rled" binding="D15" width="100%" container="center"/></control>
|
||||
</control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-panel-group" width="100%" padBottom="8px">
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">START</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">STEP</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">ENABLE</control>
|
||||
|
|
@ -100,7 +128,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="STEP" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="ENABLE" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">CONT</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">DEP</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">EXAM</control>
|
||||
|
|
@ -108,13 +136,13 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="DEP" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="EXAM" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="6.2%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="6.2%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="50%" pos="right">LOAD</control>
|
||||
<control type="container" class="pcjs-swlbl" width="50%" pos="right">TEST</control>
|
||||
<control type="container" class="pcjs-swpad" width="50%" pos="right" style="clear:both;"><control type="switch" binding="LOAD" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="50%" pos="right"><control type="switch" binding="TEST" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">0</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">1</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">2</control>
|
||||
|
|
@ -122,7 +150,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S1" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S2" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">3</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">4</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">5</control>
|
||||
|
|
@ -130,7 +158,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S4" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S5" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">6</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">7</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">8</control>
|
||||
|
|
@ -138,7 +166,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S7" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S8" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">9</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">10</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">11</control>
|
||||
|
|
@ -146,7 +174,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S10" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S11" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">12</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">13</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">14</control>
|
||||
|
|
@ -154,7 +182,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S13" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S14" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">15</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">16</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">17</control>
|
||||
|
|
@ -162,7 +190,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S16" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S17" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="9.3%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">18</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">19</control>
|
||||
<control type="container" class="pcjs-swlbl" width="33%" pos="right">20</control>
|
||||
|
|
@ -170,7 +198,7 @@
|
|||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S19" width="100%" container="center"/></control>
|
||||
<control type="container" class="pcjs-swpad" width="33%" pos="right"><control type="switch" binding="S20" width="100%" container="center"/></control>
|
||||
</control>
|
||||
<control type="container" class="pcjs-tripled" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-triplet" width="3.1%" pos="right">
|
||||
<control type="container" class="pcjs-swlbl" width="100%" pos="right">21</control>
|
||||
<control type="container" class="pcjs-swpad" width="100%" pos="right" style="clear:both;"><control type="switch" binding="S21" width="100%" container="center"/></control>
|
||||
</control>
|
||||
|
|
|
|||
|
|
@ -124,9 +124,14 @@
|
|||
color: #ffffff;
|
||||
background-color: #404040;
|
||||
}
|
||||
.pcjs-tripled {
|
||||
.pcjs-triplet {
|
||||
padding: 1px;
|
||||
}
|
||||
.pcjs-ledlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-ledlbl0 {
|
||||
text-align: right;
|
||||
font-size: 50%;
|
||||
|
|
@ -142,6 +147,8 @@
|
|||
font-size: x-small;
|
||||
line-height: 32px;
|
||||
background-color: #000000;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
|
|
@ -168,8 +175,10 @@
|
|||
.pcjs-swlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
line-height: 32px;
|
||||
line-height: 16px;
|
||||
background-color: #000000;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
}
|
||||
.pcjs-swpad {
|
||||
height: 32px;
|
||||
|
|
|
|||
|
|
@ -117,14 +117,16 @@ function BusPDP11(parmsBus, cpu, dbg)
|
|||
* Memory access handlers must service the entire block; see the setAccess() function in the Memory
|
||||
* component for details.
|
||||
*
|
||||
* Finally, for debugging purposes, if an I/O address has a symbolic name, it will be saved here:
|
||||
* Finally, for debugging purposes, if an I/O address has a symbolic name and message category,
|
||||
* they will be saved here:
|
||||
*
|
||||
* [4]: symbolic name of I/O address
|
||||
* [5]: message category
|
||||
*
|
||||
* UPDATE: The Debugger wants to piggy-back on these arrays to indicate addresses for which it wants
|
||||
* notification. In those cases, the following additional element will be set:
|
||||
*
|
||||
* [5]: true to break on I/O, false to ignore I/O
|
||||
* [6]: true to break on I/O, false to ignore I/O
|
||||
*
|
||||
* The false case is important if fIOBreakAll is set, because it allows the Debugger to selectively
|
||||
* ignore specific addresses.
|
||||
|
|
@ -183,7 +185,9 @@ BusPDP11.IOHANDLER = {
|
|||
WRITE_BYTE: 1,
|
||||
READ_WORD: 2,
|
||||
WRITE_WORD: 3,
|
||||
NAME: 4
|
||||
NAME: 4,
|
||||
MSG_CATEGORY: 5,
|
||||
DBG_BREAK: 6
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -257,14 +261,14 @@ BusPDP11.IOController = {
|
|||
}
|
||||
}
|
||||
if (b >= 0) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage(afn[BusPDP11.IOHANDLER.NAME] + ".readByte(" + this.dbg.toStrBase(addr) + "): " + this.dbg.toStrBase(b), true, true);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
bus.fault(addr, PDP11.CPUERR.TIMEOUT, PDP11.ACCESS.READ_BYTE);
|
||||
b = 0xff;
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage("warning: unconverted read access to byte @" + this.dbg.toStrBase(addr) + ": " + this.dbg.toStrBase(b), true, true);
|
||||
}
|
||||
return b;
|
||||
|
|
@ -331,13 +335,13 @@ BusPDP11.IOController = {
|
|||
}
|
||||
}
|
||||
if (fWrite) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage(afn[BusPDP11.IOHANDLER.NAME] + ".writeByte(" + this.dbg.toStrBase(addr) + "," + this.dbg.toStrBase(b) + ")", true, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
bus.fault(addr, PDP11.CPUERR.TIMEOUT, PDP11.ACCESS.WRITE_BYTE);
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage("warning: unconverted write access to byte @" + this.dbg.toStrBase(addr) + ": " + this.dbg.toStrBase(b), true, true);
|
||||
}
|
||||
},
|
||||
|
|
@ -363,14 +367,14 @@ BusPDP11.IOController = {
|
|||
}
|
||||
}
|
||||
if (w >= 0) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage(afn[BusPDP11.IOHANDLER.NAME] + ".readWord(" + this.dbg.toStrBase(addr) + "): " + this.dbg.toStrBase(w), true, true);
|
||||
}
|
||||
return w;
|
||||
}
|
||||
bus.fault(addr, PDP11.CPUERR.TIMEOUT, PDP11.ACCESS.READ_WORD);
|
||||
w = 0xffff;
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage("warning: unconverted read access to word @" + this.dbg.toStrBase(addr) + ": " + this.dbg.toStrBase(w), true, true);
|
||||
}
|
||||
return w;
|
||||
|
|
@ -400,13 +404,13 @@ BusPDP11.IOController = {
|
|||
}
|
||||
}
|
||||
if (fWrite) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage(afn[BusPDP11.IOHANDLER.NAME] + ".writeWord(" + this.dbg.toStrBase(addr) + "," + this.dbg.toStrBase(w) + ")", true, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
bus.fault(addr, PDP11.CPUERR.TIMEOUT, PDP11.ACCESS.WRITE_WORD);
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(afn[BusPDP11.IOHANDLER.MSG_CATEGORY])) {
|
||||
this.dbg.printMessage("warning: unconverted write access to word @" + this.dbg.toStrBase(addr) + ": " + this.dbg.toStrBase(w), true, true);
|
||||
}
|
||||
}
|
||||
|
|
@ -1172,8 +1176,9 @@ BusPDP11.prototype.restoreMemory = function(a)
|
|||
* @param {function(number)|null|undefined} fnReadWord
|
||||
* @param {function(number,number)|null|undefined} fnWriteWord
|
||||
* @param {string} [sName]
|
||||
* @param {number} [msgCategory]
|
||||
*/
|
||||
BusPDP11.prototype.addIOHandlers = function(start, end, fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sName)
|
||||
BusPDP11.prototype.addIOHandlers = function(start, end, fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sName, msgCategory)
|
||||
{
|
||||
for (var addr = start; addr <= end; addr += 2) {
|
||||
var off = addr & BusPDP11.IOPAGE_MASK;
|
||||
|
|
@ -1181,21 +1186,22 @@ BusPDP11.prototype.addIOHandlers = function(start, end, fnReadByte, fnWriteByte,
|
|||
Component.warning("I/O address already registered: " + str.toHexLong(addr));
|
||||
continue;
|
||||
}
|
||||
this.aIOHandlers[off] = [fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sName || "unknown", false];
|
||||
this.aIOHandlers[off] = [fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sName || "unknown", msgCategory, false];
|
||||
if (MAXDEBUG) this.log("addIOHandlers(" + str.toHexLong(addr) + ")");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* addIOTable(component, table)
|
||||
* addIOTable(component, table, msgCategory)
|
||||
*
|
||||
* Add I/O notification handlers from the specified table (a batch version of addIOHandlers).
|
||||
*
|
||||
* @this {BusPDP11}
|
||||
* @param {Component} component
|
||||
* @param {Object} table
|
||||
* @param {number} [msgCategory] (default is BUS)
|
||||
*/
|
||||
BusPDP11.prototype.addIOTable = function(component, table)
|
||||
BusPDP11.prototype.addIOTable = function(component, table, msgCategory)
|
||||
{
|
||||
for (var port in table) {
|
||||
var addr = +port;
|
||||
|
|
@ -1237,7 +1243,7 @@ BusPDP11.prototype.addIOTable = function(component, table)
|
|||
var sReg = afn[4];
|
||||
for (var iReg = 0; iReg < nRegs; iReg++, addr += 2) {
|
||||
if (sReg && nRegs > 1) sReg = afn[4] + iReg;
|
||||
this.addIOHandlers(addr, addr, fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sReg);
|
||||
this.addIOHandlers(addr, addr, fnReadByte, fnWriteByte, fnReadWord, fnWriteWord, sReg, msgCategory || MessagesPDP11.BUS);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -1267,9 +1273,8 @@ BusPDP11.prototype.fault = function(addr, err, access)
|
|||
{
|
||||
this.fFault = true;
|
||||
if (!this.nDisableFaults) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.BUS)) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.FAULT)) {
|
||||
this.dbg.printMessage("memory fault (" + access + ") on address " + this.dbg.toStrBase(addr), true, true);
|
||||
this.dbg.stopInstruction();
|
||||
}
|
||||
if (err) this.cpu.regErr |= err;
|
||||
this.cpu.trap(PDP11.TRAP.BUS_ERROR, addr);
|
||||
|
|
|
|||
|
|
@ -186,7 +186,6 @@ CPUPDP11.prototype.initBus = function(cmp, bus, cpu, dbg)
|
|||
this.cmp = cmp;
|
||||
this.bus = bus;
|
||||
this.dbg = dbg;
|
||||
this.panel = cmp.panel;
|
||||
|
||||
for (var i = 0; i < CPUPDP11.BUTTONS.length; i++) {
|
||||
var control = this.bindings[CPUPDP11.BUTTONS[i]];
|
||||
|
|
@ -283,6 +282,9 @@ CPUPDP11.prototype.powerUp = function(data, fRepower)
|
|||
* is now responsible for managing a component's fPowered flag, not us.
|
||||
*
|
||||
* this.flags.powered = true;
|
||||
*
|
||||
* And we don't have to worry whether this.cmp is set, because powerUp() handlers are never called
|
||||
* before initBus() handlers.
|
||||
*/
|
||||
this.cmp.updateStatus();
|
||||
return true;
|
||||
|
|
@ -1077,7 +1079,7 @@ CPUPDP11.prototype.runCPU = function()
|
|||
nCycles = this.endBurst(true);
|
||||
|
||||
/*
|
||||
* Add nCycles to nCyclesThisRun, as well as nRunCycles (the cycle count since the CPU first started).
|
||||
* Add nCycles to nCyclesThisRun, as well as nRunCycles (the cycle count since the CPU started).
|
||||
*/
|
||||
this.nCyclesThisRun += nCycles;
|
||||
this.nRunCycles += nCycles;
|
||||
|
|
@ -1207,7 +1209,7 @@ CPUPDP11.prototype.yieldCPU = function()
|
|||
* odd for those messages to show CPU state changes if the Control Panel, Video display, etc, does not,
|
||||
* so I've added this call to try to keep things looking synchronized.
|
||||
*/
|
||||
this.cmp.updateStatus();
|
||||
if (this.cmp) this.cmp.updateStatus();
|
||||
};
|
||||
|
||||
if (NODE) module.exports = CPUPDP11;
|
||||
|
|
|
|||
|
|
@ -1760,7 +1760,7 @@ PDP11.opWAIT = function(opCode)
|
|||
/*
|
||||
* Since here we're actually transitioning to WAIT, let's update the Panel's LEDs (well, OK, among other things).
|
||||
*/
|
||||
this.cmp.updateStatus();
|
||||
if (this.cmp) this.cmp.updateStatus();
|
||||
}
|
||||
this.opFlags |= PDP11.OPFLAG.WAIT;
|
||||
this.advancePC(-2);
|
||||
|
|
|
|||
|
|
@ -310,7 +310,6 @@ CPUStatePDP11.prototype.setMMR0 = function(newMMR0)
|
|||
this.mmuEnable = mmuEnable;
|
||||
this.setMemoryAccess();
|
||||
}
|
||||
if (this.panel) this.panel.updateStatus();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -358,7 +357,6 @@ CPUStatePDP11.prototype.setMMR3 = function(newMMR3)
|
|||
this.regMMR3 = newMMR3;
|
||||
this.mmuMask = (newMMR3 & PDP11.MMR3.MMU_22BIT)? 0x3fffff : 0x3ffff;
|
||||
this.setMemoryAccess();
|
||||
if (this.panel) this.panel.updateStatus();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,8 @@ if (DEBUGGER) {
|
|||
var State = require("../../shared/lib/state");
|
||||
var PDP11 = require("./defines");
|
||||
var CPUPDP11 = require("./cpu");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
var MemoryPDP11 = require("./memory");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1212,7 +1212,7 @@ if (DEBUGGER) {
|
|||
if (this.sMessagePrev && sMessage == this.sMessagePrev) return;
|
||||
this.sMessagePrev = sMessage;
|
||||
|
||||
if (this.bitsMessage & MessagesPDP11.HALT) {
|
||||
if ((this.bitsMessage & MessagesPDP11.HALT) && this.cpu && this.cpu.isRunning()) {
|
||||
this.stopCPU();
|
||||
sMessage += " (cpu halted)";
|
||||
}
|
||||
|
|
@ -1334,7 +1334,7 @@ if (DEBUGGER) {
|
|||
nCycles = this.cpu.getBurstCycles(nCycles);
|
||||
var nCyclesStep = this.cpu.stepCPU(nCycles);
|
||||
if (nCyclesStep > 0) {
|
||||
this.cpu.updateTimers(nCycles);
|
||||
this.cpu.updateTimers(nCyclesStep);
|
||||
this.nCycles += nCyclesStep;
|
||||
this.cpu.addCycles(nCyclesStep, true);
|
||||
this.cpu.updateChecksum(nCyclesStep);
|
||||
|
|
@ -1358,7 +1358,13 @@ if (DEBUGGER) {
|
|||
* and then update our own state. Normally, the only time fUpdateStatus will be false is when doTrace()
|
||||
* is calling us in a loop, in which case it will perform its own updateStatus() when it's done.
|
||||
*/
|
||||
if (fUpdateStatus !== false) this.cmp.updateStatus();
|
||||
if (fUpdateStatus !== false) {
|
||||
/*
|
||||
* Make an effort to keep any Front Panel in sync with us.
|
||||
*/
|
||||
if (this.cmp.panel && this.cmp.panel.stop) this.cmp.panel.stop();
|
||||
this.cmp.updateStatus();
|
||||
}
|
||||
|
||||
this.updateStatus(fRegs || false);
|
||||
return (this.nCycles > 0);
|
||||
|
|
@ -3660,6 +3666,7 @@ if (DEBUGGER) {
|
|||
* with displayLiveRegs enabled, so once the repeat count has been exhausted, we must
|
||||
* perform a final updateStatus().
|
||||
*/
|
||||
if (dbg.cmp.panel && dbg.cmp.panel.stop) dbg.cmp.panel.stop();
|
||||
dbg.cmp.updateStatus();
|
||||
dbg.setBusy(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -590,7 +590,6 @@ MemoryPDP11.prototype = {
|
|||
readNone: function readNone(off, addr) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.MEMORY) /* && !off */) {
|
||||
this.dbg.printMessage("attempt to read invalid address " + this.dbg.toStrBase(addr), true);
|
||||
this.dbg.stopInstruction();
|
||||
}
|
||||
this.bus.fault(addr, PDP11.CPUERR.NOMEMORY, PDP11.ACCESS.READ);
|
||||
return 0xff;
|
||||
|
|
@ -606,7 +605,6 @@ MemoryPDP11.prototype = {
|
|||
writeNone: function writeNone(off, v, addr) {
|
||||
if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP11.MEMORY) /* && !off */) {
|
||||
this.dbg.printMessage("attempt to write " + this.dbg.toStrBase(v) + " to invalid addresses " + this.dbg.toStrBase(addr), true);
|
||||
this.dbg.stopInstruction();
|
||||
}
|
||||
this.bus.fault(addr, PDP11.CPUERR.NOMEMORY, PDP11.ACCESS.WRITE);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
var MessagesPDP11 = {
|
||||
CPU: 0x00000001,
|
||||
TRAP: 0x00000010,
|
||||
FAULT: 0x00000020,
|
||||
BUS: 0x00000040,
|
||||
MEMORY: 0x00000080,
|
||||
DEVICE: 0x00000100,
|
||||
|
|
@ -67,6 +68,7 @@ var MessagesPDP11 = {
|
|||
MessagesPDP11.CATEGORIES = {
|
||||
"cpu": MessagesPDP11.CPU,
|
||||
"trap": MessagesPDP11.TRAP,
|
||||
"fault": MessagesPDP11.FAULT,
|
||||
"bus": MessagesPDP11.BUS,
|
||||
"memory": MessagesPDP11.MEMORY,
|
||||
"device": MessagesPDP11.DEVICE,
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ function PanelPDP11(parmsPanel)
|
|||
*
|
||||
* regAddr is an internal register containing the contents of the Front Panel's ADDRESS display,
|
||||
* and regData corresponds to the DATA display. They are updated by setAddr() and setData(),
|
||||
* which in turn take care of calling updateLEDArray().
|
||||
* which in turn take care of calling setLEDArray().
|
||||
*/
|
||||
this.regCNSW = 0;
|
||||
this.regAddr = this.regData = 0;
|
||||
|
|
@ -82,28 +82,28 @@ function PanelPDP11(parmsPanel)
|
|||
*
|
||||
* 0 if off, 1 if on
|
||||
*
|
||||
* initBus() will call updateLEDs() to ensure that every LED is set to its initial value.
|
||||
* initBus() will call displayLEDs() to ensure that every LED is set to its initial value.
|
||||
*/
|
||||
this.leds = {};
|
||||
|
||||
/*
|
||||
* Every switch has an array associated with it:
|
||||
*
|
||||
* [0]: initial/current value of switch (0 if down, 1 if up)
|
||||
* [0]: initial/current value of switch (0 if "down", 1 if "up")
|
||||
* [1]: true if the switch is momentary, false if not
|
||||
* [2]: true if the switch is currently being pressed, false if not
|
||||
* [2]: true if the switch is currently pressed, false if released
|
||||
* [3]: optional handler to call whenever the switch is pressed or released
|
||||
* [4]: optional switch index (used with CNSW switches 'S0' through 'S21')
|
||||
*
|
||||
* initBus() will call updateSwitches() to ensure that every switch is the position represented below.
|
||||
* initBus() will call displaySwitches() to ensure that every switch is the position represented below.
|
||||
*
|
||||
* NOTE: Not all switches have the same "process" criteria. For example, 'TEST' will perform a lamp test
|
||||
* when it is momentarily pressed "up", whereas 'LOAD [ADRS]' will load the address register from the switch
|
||||
* when it is momentarily pressed "up", whereas 'LOAD [ADRS]' will load the ADDRESS register from the SWITCH
|
||||
* register when it is momentarily pressed "down".
|
||||
*
|
||||
* This means that processLampTest(value) must act when value == 1, whereas processLoadAddr(value) must
|
||||
* act when value == 0. You can infer all this from the table below, because the initial value of any
|
||||
* momentary switch is its "passive" value, so the opposite is its "active" value.
|
||||
* This means that processLampTest(value) must act when value == 1 ("up"), whereas processLoadAddr(value)
|
||||
* must act when value == 0 ("down"). You can infer all this from the table below, because the initial value
|
||||
* of any momentary switch is its "inactive" value, so the opposite is its "active" value.
|
||||
*/
|
||||
this.switches = {
|
||||
'START': [1, true, false, this.processStart],
|
||||
|
|
@ -127,9 +127,9 @@ Component.subclass(PanelPDP11);
|
|||
*
|
||||
* this.getSwitch(PanelPDP11.SWITCH.ENABLE)
|
||||
*
|
||||
* However, I haven't filled out this table, primarily because the only switches we need to query
|
||||
* are the non-momentary ones (eg, ENABLE and STEP), and EXAM and DEP (because they have special
|
||||
* "step" behavior when pressed more than once in a row).
|
||||
* I haven't filled out this table, primarily it only needs to list switches we actually query
|
||||
* (eg, non-momentary ones like 'ENABLE' and 'STEP', and 'EXAM' and 'DEP' since they have special
|
||||
* "step" behavior when pressed more than once in a row). Ditto for the LED table.
|
||||
*/
|
||||
PanelPDP11.SWITCH = {
|
||||
DEP: 'DEP',
|
||||
|
|
@ -138,6 +138,12 @@ PanelPDP11.SWITCH = {
|
|||
STEP: 'STEP'
|
||||
};
|
||||
|
||||
PanelPDP11.LED = {
|
||||
B16: 'B16',
|
||||
B18: 'B18',
|
||||
B22: 'B22'
|
||||
};
|
||||
|
||||
/**
|
||||
* getSwitch(name)
|
||||
*
|
||||
|
|
@ -275,8 +281,8 @@ PanelPDP11.prototype.initBus = function(cmp, bus, cpu, dbg)
|
|||
bus.addIOTable(this, PanelPDP11.UNIBUS_IOTABLE);
|
||||
bus.addResetHandler(this.reset.bind(this));
|
||||
|
||||
this.updateLEDs();
|
||||
this.updateSwitches();
|
||||
this.displayLEDs();
|
||||
this.displaySwitches();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -301,7 +307,11 @@ PanelPDP11.prototype.powerUp = function(data, fRepower)
|
|||
* currently unnecessary, since we've added reset() to the addResetHandler() list.
|
||||
*
|
||||
* this.reset();
|
||||
*
|
||||
* In the meantime, simulate a call to our stop() handler, to update the panel's ADDRESS register
|
||||
* with the new PC.
|
||||
*/
|
||||
this.stop();
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
|
@ -320,7 +330,66 @@ PanelPDP11.prototype.powerDown = function(fSave, fShutdown)
|
|||
};
|
||||
|
||||
/**
|
||||
* updateValue(sLabel, nValue, cch)
|
||||
* displayLED(sBinding, value)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sBinding
|
||||
* @param {boolean|number} value (true or non-zero if the LED should be on, false or zero if off)
|
||||
*/
|
||||
PanelPDP11.prototype.displayLED = function(sBinding, value)
|
||||
{
|
||||
var control = this.bindings[sBinding];
|
||||
if (control) {
|
||||
/*
|
||||
* TODO: Add support for user-definable LED colors?
|
||||
*/
|
||||
control.style.backgroundColor = (value? "#ff0000" : "#000000");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* displayLEDs(override)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {boolean|number|null} [override] (true turn on all LEDs, false to turn off all LEDs, null or undefined for normal LED activity)
|
||||
*/
|
||||
PanelPDP11.prototype.displayLEDs = function(override)
|
||||
{
|
||||
for (var sBinding in this.leds) {
|
||||
this.displayLED(sBinding, override != null? override : this.leds[sBinding]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* displaySwitch(sBinding, value)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sBinding
|
||||
* @param {boolean|number} value (true if the switch should be "up" (on), false if "down" (off))
|
||||
*/
|
||||
PanelPDP11.prototype.displaySwitch = function(sBinding, value)
|
||||
{
|
||||
var control = this.bindings[sBinding];
|
||||
if (control) {
|
||||
control.style.marginTop = (value? "0px" : "20px");
|
||||
control.style.backgroundColor = (value? "#00ff00" : "#228B22");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* displaySwitches()
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
*/
|
||||
PanelPDP11.prototype.displaySwitches = function()
|
||||
{
|
||||
for (var sBinding in this.switches) {
|
||||
this.displaySwitch(sBinding, this.switches[sBinding][0]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* displayValue(sLabel, nValue, cch)
|
||||
*
|
||||
* This is principally for displaying register values, but in reality, it can be used to display any
|
||||
* numeric value bound to the given label.
|
||||
|
|
@ -330,7 +399,7 @@ PanelPDP11.prototype.powerDown = function(fSave, fShutdown)
|
|||
* @param {number} nValue
|
||||
* @param {number} [cch]
|
||||
*/
|
||||
PanelPDP11.prototype.updateValue = function(sLabel, nValue, cch)
|
||||
PanelPDP11.prototype.displayValue = function(sLabel, nValue, cch)
|
||||
{
|
||||
if (this.bindings[sLabel]) {
|
||||
if (nValue === undefined) {
|
||||
|
|
@ -354,69 +423,6 @@ PanelPDP11.prototype.updateValue = function(sLabel, nValue, cch)
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* setLED(sBinding, value)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sBinding
|
||||
* @param {boolean|number} value (true if the LED should be on, false if off)
|
||||
*/
|
||||
PanelPDP11.prototype.setLED = function(sBinding, value)
|
||||
{
|
||||
var control = this.bindings[sBinding];
|
||||
if (control) {
|
||||
/*
|
||||
* TODO: Add support for user-definable LED colors?
|
||||
*/
|
||||
control.style.backgroundColor = (value? "#ff0000" : "#000000");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* updateLEDs(override)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {boolean|number|null} [override] (true turn on all LEDs, false to turn off all LEDs, null or undefined for normal LED activity)
|
||||
*/
|
||||
PanelPDP11.prototype.updateLEDs = function(override)
|
||||
{
|
||||
for (var sBinding in this.leds) {
|
||||
this.setLED(sBinding, override != null? override : this.leds[sBinding]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* updateLEDArray(sPrefix, data, nLEDs)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sPrefix
|
||||
* @param {number} data
|
||||
* @param {number} nLEDs
|
||||
*/
|
||||
PanelPDP11.prototype.updateLEDArray = function(sPrefix, data, nLEDs)
|
||||
{
|
||||
for (var i = 0; i < nLEDs; i++) {
|
||||
var sBinding = sPrefix + i;
|
||||
this.setLED(sBinding, data & (1 << i));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* setSwitch(sBinding, value)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sBinding
|
||||
* @param {boolean|number} value (true if the switch should be "up" (on), false if "down" (off))
|
||||
*/
|
||||
PanelPDP11.prototype.setSwitch = function(sBinding, value)
|
||||
{
|
||||
var control = this.bindings[sBinding];
|
||||
if (control) {
|
||||
control.style.marginTop = (value? "0px" : "20px");
|
||||
control.style.backgroundColor = (value? "#00ff00" : "#228B22");
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* pressSwitch(sBinding)
|
||||
*
|
||||
|
|
@ -426,9 +432,22 @@ PanelPDP11.prototype.setSwitch = function(sBinding, value)
|
|||
PanelPDP11.prototype.pressSwitch = function(sBinding)
|
||||
{
|
||||
var sw = this.switches[sBinding];
|
||||
this.setSwitch(sBinding, sw[0] = 1 - sw[0]);
|
||||
|
||||
/*
|
||||
* Set the new switch value in sw[0] and then immediately display it
|
||||
*/
|
||||
this.displaySwitch(sBinding, (sw[0] = 1 - sw[0]));
|
||||
|
||||
/*
|
||||
* Mark the switch as "pressed"
|
||||
*/
|
||||
sw[2] = true;
|
||||
|
||||
/*
|
||||
* Call the appropriate process handler with the current switch value (sw[0])
|
||||
*/
|
||||
if (sw[3]) sw[3].call(this, sw[0], sw[4]);
|
||||
|
||||
this.fDeposit = (sBinding == PanelPDP11.SWITCH.DEP);
|
||||
this.fExamine = (sBinding == PanelPDP11.SWITCH.EXAM);
|
||||
};
|
||||
|
|
@ -448,13 +467,23 @@ PanelPDP11.prototype.releaseSwitch = function(sBinding)
|
|||
* we receive EITHER of those events AND the switch is marked momentary (sw[1]) AND the switch is pressed (sw[2]),
|
||||
* then we must flip the switch back to its original value.
|
||||
*
|
||||
* Otherwise, the only thing we have to do is mark the switch as no longer "pressed" (ie, set sw[2] to false).
|
||||
* Otherwise, the only thing we have to do is mark the switch as "released" (ie, set sw[2] to false).
|
||||
*/
|
||||
var sw = this.switches[sBinding];
|
||||
if (sw[1] && sw[2]) {
|
||||
this.setSwitch(sBinding, sw[0] = 1 - sw[0]);
|
||||
/*
|
||||
* Set the new switch value in sw[0] and then immediately display it
|
||||
*/
|
||||
this.displaySwitch(sBinding, (sw[0] = 1 - sw[0]));
|
||||
|
||||
/*
|
||||
* Call the appropriate process handler with the current switch value (sw[0])
|
||||
*/
|
||||
if (sw[3]) sw[3].call(this, sw[0], sw[4]);
|
||||
}
|
||||
/*
|
||||
* Mark the switch as "released"
|
||||
*/
|
||||
sw[2] = false;
|
||||
};
|
||||
|
||||
|
|
@ -499,6 +528,10 @@ PanelPDP11.prototype.processStart = function(value, index)
|
|||
*/
|
||||
PanelPDP11.prototype.processStep = function(value, index)
|
||||
{
|
||||
/*
|
||||
* There's really nothing for us to do here, because the normal press and release handlers
|
||||
* already record the state of this switch, so it can be queried as needed, using getSwitch().
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -532,20 +565,60 @@ PanelPDP11.prototype.processEnable = function(value, index)
|
|||
PanelPDP11.prototype.processContinue = function(value, index)
|
||||
{
|
||||
if (!value && !this.cpu.isRunning()) {
|
||||
if (!this.getSwitch(PanelPDP11.SWITCH.ENABLE)) {
|
||||
/*
|
||||
* TODO: Technically, we're also supposed to check the 'STEP' switch to determine if we should
|
||||
* step one instruction or just one cycle, but we don't currently have the ability to do the latter.
|
||||
*/
|
||||
if (!this.getSwitch(PanelPDP11.SWITCH.ENABLE)) {
|
||||
/*
|
||||
* Using the Debugger's stepCPU() function is more convenient, and has the pleasant side-effect
|
||||
* of updating the debugger's display; however, not all machines with a Front Panel will necessarily
|
||||
* also have the Debugger loaded.
|
||||
*/
|
||||
var dbg = this.dbg;
|
||||
if (dbg && !dbg.isBusy(true)) {
|
||||
dbg.setBusy(true);
|
||||
dbg.stepCPU(0);
|
||||
dbg.setBusy(false);
|
||||
} else {
|
||||
this.cpu.stepCPU(1);
|
||||
this.updateStatus();
|
||||
}
|
||||
else {
|
||||
/*
|
||||
* For this tiny single-instruction burst, mimic what runCPU() does.
|
||||
*/
|
||||
try {
|
||||
var nCyclesStep = this.cpu.stepCPU(1);
|
||||
if (nCyclesStep > 0) {
|
||||
this.cpu.updateTimers(nCyclesStep);
|
||||
this.cpu.addCycles(nCyclesStep, true);
|
||||
this.cpu.updateChecksum(nCyclesStep);
|
||||
}
|
||||
}
|
||||
catch(exception) {
|
||||
/*
|
||||
* We assume that any numeric exception was explicitly thrown by the CPU to interrupt the
|
||||
* current instruction. For all other exceptions, we attempt a stack dump.
|
||||
*/
|
||||
if (typeof exception != "number") {
|
||||
var e = exception;
|
||||
this.cpu.setError(e.stack || e.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Simulate a call to our stop() handler, to update the panel's ADDRESS register with the new PC.
|
||||
*/
|
||||
this.stop();
|
||||
|
||||
/*
|
||||
* Going through the normal channels (ie, the Computer's updateStatus() interface) ensures that ALL
|
||||
* updateStatus() handlers will be called, including ours.
|
||||
*
|
||||
* NOTE: If we used the Debugger's stepCPU() function, then that includes a call to updateStatus();
|
||||
* unfortunately, it will have happened BEFORE we called stop() to update the ADDRESS register, so we
|
||||
* still need to call it again.
|
||||
*/
|
||||
if (this.cmp) this.cmp.updateStatus();
|
||||
}
|
||||
else {
|
||||
this.cpu.startCPU();
|
||||
|
|
@ -610,7 +683,7 @@ PanelPDP11.prototype.processLoadAddr = function(value, index)
|
|||
*/
|
||||
PanelPDP11.prototype.processLampTest = function(value, index)
|
||||
{
|
||||
this.updateLEDs(value || null);
|
||||
this.displayLEDs(value || null);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -639,7 +712,7 @@ PanelPDP11.prototype.processSwitchReg = function(value, index)
|
|||
PanelPDP11.prototype.setAddr = function(value)
|
||||
{
|
||||
this.regAddr = value & this.bus.nBusMask;
|
||||
this.updateLEDArray("A", this.regAddr, 22);
|
||||
this.setLEDArray("A", this.regAddr, 22);
|
||||
return this.regAddr;
|
||||
};
|
||||
|
||||
|
|
@ -653,13 +726,64 @@ PanelPDP11.prototype.setAddr = function(value)
|
|||
PanelPDP11.prototype.setData = function(value)
|
||||
{
|
||||
this.regData = value & 0xffff;
|
||||
this.updateLEDArray("D", this.regData, 16);
|
||||
this.setLEDArray("D", this.regData, 16);
|
||||
return this.regData;
|
||||
};
|
||||
|
||||
/**
|
||||
* setLED(sBinding, value)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sBinding
|
||||
* @param {number} value
|
||||
* @return {number}
|
||||
*/
|
||||
PanelPDP11.prototype.setLED = function(sBinding, value)
|
||||
{
|
||||
this.leds[sBinding] = value;
|
||||
if (!this.fLampTest) this.displayLED(sBinding, value);
|
||||
return value;
|
||||
};
|
||||
|
||||
/**
|
||||
* setLEDArray(sPrefix, data, nLEDs)
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {string} sPrefix
|
||||
* @param {number} data
|
||||
* @param {number} nLEDs
|
||||
*/
|
||||
PanelPDP11.prototype.setLEDArray = function(sPrefix, data, nLEDs)
|
||||
{
|
||||
for (var i = 0; i < nLEDs; i++) {
|
||||
var sBinding = sPrefix + i;
|
||||
this.setLED(sBinding, data & (1 << i));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* stop(ms, nCycles)
|
||||
*
|
||||
* This is a notification handler, called by the Computer, to inform us the CPU has now stopped.
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {number} [ms]
|
||||
* @param {number} [nCycles]
|
||||
*/
|
||||
PanelPDP11.prototype.stop = function(ms, nCycles)
|
||||
{
|
||||
this.setAddr(this.cpu.regsGen[7]);
|
||||
/*
|
||||
* TODO: Consider an option to call setData() with the current opcode as well; presumably that wouldn't be
|
||||
* normal Front Panel behavior, but it could be useful for debugging.
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* updateStatus(fForce)
|
||||
*
|
||||
* Called by the Computer component at appropriate intervals to update any register displays, LEDs, etc.
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
* @param {boolean} [fForce] (true will display registers even if the CPU is running and "live" registers are not enabled)
|
||||
*/
|
||||
|
|
@ -668,37 +792,25 @@ PanelPDP11.prototype.updateStatus = function(fForce)
|
|||
if (this.cLiveRegs) {
|
||||
if (fForce || !this.cpu.isRunning() || this.fDisplayLiveRegs) {
|
||||
for (var i = 0; i < this.cpu.regsGen.length; i++) {
|
||||
this.updateValue('R'+i, this.cpu.regsGen[i]);
|
||||
this.displayValue('R'+i, this.cpu.regsGen[i]);
|
||||
}
|
||||
var regPSW = this.cpu.getPSW();
|
||||
this.updateValue("PS", regPSW);
|
||||
this.updateValue("NF", (regPSW & PDP11.PSW.NF)? 1 : 0, 1);
|
||||
this.updateValue("ZF", (regPSW & PDP11.PSW.ZF)? 1 : 0, 1);
|
||||
this.updateValue("VF", (regPSW & PDP11.PSW.VF)? 1 : 0, 1);
|
||||
this.updateValue("CF", (regPSW & PDP11.PSW.CF)? 1 : 0, 1);
|
||||
if (!this.fLampTest) {
|
||||
this.setData(this.cpu.regsGen[0]);
|
||||
this.setAddr(this.cpu.regsGen[7]);
|
||||
this.displayValue("PS", regPSW);
|
||||
this.displayValue("NF", (regPSW & PDP11.PSW.NF)? 1 : 0, 1);
|
||||
this.displayValue("ZF", (regPSW & PDP11.PSW.ZF)? 1 : 0, 1);
|
||||
this.displayValue("VF", (regPSW & PDP11.PSW.VF)? 1 : 0, 1);
|
||||
this.displayValue("CF", (regPSW & PDP11.PSW.CF)? 1 : 0, 1);
|
||||
this.setLEDArray("D", this.regData, 16);
|
||||
this.setLEDArray("A", this.regAddr, 22);
|
||||
/*
|
||||
* Set bit to 1 (22-bit), 2 (18-bit), or 4 (16-bit)
|
||||
*/
|
||||
var bit = this.cpu.mmuEnable? ((this.cpu.regMMR3 & PDP11.MMR3.MMU_22BIT)? 1 : 2) : 4;
|
||||
// this.misc = (this.misc & ~7) | bit;
|
||||
this.setLED(PanelPDP11.LED.B22, bit & 1);
|
||||
this.setLED(PanelPDP11.LED.B18, bit & 2);
|
||||
this.setLED(PanelPDP11.LED.B16, bit & 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* updateSwitches()
|
||||
*
|
||||
* @this {PanelPDP11}
|
||||
*/
|
||||
PanelPDP11.prototype.updateSwitches = function()
|
||||
{
|
||||
for (var sBinding in this.switches) {
|
||||
this.setSwitch(sBinding, this.switches[sBinding][0]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -55,16 +55,16 @@ function RL11(parms)
|
|||
Component.call(this, "RL11", parms, RL11, MessagesPDP11.DISK);
|
||||
|
||||
/*
|
||||
* We record any 'autoMount' object now, but we no longer parse it until initBus(), because the
|
||||
* Computer's getMachineParm() service may have an override for us.
|
||||
* We record any 'autoMount' object now, but we no longer parse it until initBus(),
|
||||
* because the Computer's getMachineParm() service may have an override for us.
|
||||
*/
|
||||
this.configMount = parms['autoMount'] || null;
|
||||
this.cAutoMount = 0;
|
||||
|
||||
/*
|
||||
* TODO: Make this configurable
|
||||
* The RL11 has two Drive Select bits, representing up to four drives.
|
||||
*/
|
||||
this.nDrives = 1;
|
||||
this.nDrives = 4;
|
||||
this.aDrives = new Array(this.nDrives);
|
||||
|
||||
this.fLocalDisks = (!web.isMobile() && window && 'FileReader' in window);
|
||||
|
|
@ -282,7 +282,7 @@ RL11.prototype.initBus = function(cmp, bus, cpu, dbg)
|
|||
|
||||
this.triggerInterrupt = this.cpu.addTrigger(PDP11.RL11.VEC, PDP11.RL11.PRI);
|
||||
|
||||
bus.addIOTable(this, RL11.UNIBUS_IOTABLE);
|
||||
bus.addIOTable(this, RL11.UNIBUS_IOTABLE, MessagesPDP11.DISK);
|
||||
|
||||
this.addDisk("None", RL11.SOURCE.NONE, true);
|
||||
if (this.fLocalDisks) this.addDisk("Local Disk", RL11.SOURCE.LOCAL);
|
||||
|
|
|
|||
|
|
@ -129,9 +129,14 @@
|
|||
color: #ffffff;
|
||||
background-color: #404040;
|
||||
}
|
||||
.pcjs-tripled {
|
||||
.pcjs-triplet {
|
||||
padding: 1px;
|
||||
}
|
||||
.pcjs-ledlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-ledlbl0 {
|
||||
text-align: right;
|
||||
font-size: 50%;
|
||||
|
|
@ -147,6 +152,8 @@
|
|||
font-size: x-small;
|
||||
line-height: 32px;
|
||||
background-color: #000000;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
|
|
@ -173,8 +180,10 @@
|
|||
.pcjs-swlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
line-height: 32px;
|
||||
line-height: 16px;
|
||||
background-color: #000000;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
}
|
||||
.pcjs-swpad {
|
||||
height: 32px;
|
||||
|
|
|
|||
|
|
@ -124,9 +124,14 @@
|
|||
color: #ffffff;
|
||||
background-color: #404040;
|
||||
}
|
||||
.pcjs-tripled {
|
||||
.pcjs-triplet {
|
||||
padding: 1px;
|
||||
}
|
||||
.pcjs-ledlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-ledlbl0 {
|
||||
text-align: right;
|
||||
font-size: 50%;
|
||||
|
|
@ -142,6 +147,8 @@
|
|||
font-size: x-small;
|
||||
line-height: 32px;
|
||||
background-color: #000000;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
|
|
@ -168,8 +175,10 @@
|
|||
.pcjs-swlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
line-height: 32px;
|
||||
line-height: 16px;
|
||||
background-color: #000000;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
}
|
||||
.pcjs-swpad {
|
||||
height: 32px;
|
||||
|
|
|
|||
|
|
@ -124,9 +124,14 @@
|
|||
color: #ffffff;
|
||||
background-color: #404040;
|
||||
}
|
||||
.pcjs-tripled {
|
||||
.pcjs-triplet {
|
||||
padding: 1px;
|
||||
}
|
||||
.pcjs-ledlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-ledlbl0 {
|
||||
text-align: right;
|
||||
font-size: 50%;
|
||||
|
|
@ -142,6 +147,8 @@
|
|||
font-size: x-small;
|
||||
line-height: 32px;
|
||||
background-color: #000000;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
|
|
@ -168,8 +175,10 @@
|
|||
.pcjs-swlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
line-height: 32px;
|
||||
line-height: 16px;
|
||||
background-color: #000000;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
}
|
||||
.pcjs-swpad {
|
||||
height: 32px;
|
||||
|
|
|
|||
|
|
@ -124,9 +124,14 @@
|
|||
color: #ffffff;
|
||||
background-color: #404040;
|
||||
}
|
||||
.pcjs-tripled {
|
||||
.pcjs-triplet {
|
||||
padding: 1px;
|
||||
}
|
||||
.pcjs-ledlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-ledlbl0 {
|
||||
text-align: right;
|
||||
font-size: 50%;
|
||||
|
|
@ -142,6 +147,8 @@
|
|||
font-size: x-small;
|
||||
line-height: 32px;
|
||||
background-color: #000000;
|
||||
border-bottom-left-radius: 20%;
|
||||
border-bottom-right-radius: 20%;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
|
|
@ -168,8 +175,10 @@
|
|||
.pcjs-swlbl {
|
||||
text-align: center;
|
||||
font-size: 40%;
|
||||
line-height: 32px;
|
||||
line-height: 16px;
|
||||
background-color: #000000;
|
||||
border-top-left-radius: 20%;
|
||||
border-top-right-radius: 20%;
|
||||
}
|
||||
.pcjs-swpad {
|
||||
height: 32px;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue