From f43d1c174521413a1974e2f197890bbf02231c6b Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 8 Nov 2016 14:21:07 -0800 Subject: [PATCH] Revert back to propagating R0 to the Front Panel data path on a WAIT instruction (per PDP-11 lore) --- apps/pdp11/boot/monitor/BOOTMON.json | 171 +++-- apps/pdp11/boot/monitor/BOOTMON.mac | 4 +- apps/pdp11/boot/monitor/BOOTMON.txt | 1044 +++++++++++++------------- apps/pdp11/boot/monitor/README.md | 5 +- modules/pdp11/lib/cpu.js | 1 + modules/pdp11/lib/cpuops.js | 9 + modules/pdp11/lib/panel.js | 25 +- 7 files changed, 642 insertions(+), 617 deletions(-) diff --git a/apps/pdp11/boot/monitor/BOOTMON.json b/apps/pdp11/boot/monitor/BOOTMON.json index b1321ca02..b4d18c95a 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.json +++ b/apps/pdp11/boot/monitor/BOOTMON.json @@ -1,90 +1,89 @@ {"load":0xC000/*140000*/,"exec":0xC000/*140000*/, "words":[ 0x0005/*000005*/,0x0A1F/*005037*/,0xFFFE/*177776*/,0x15C6/*012706*/,0xC000/*140000*/,0x0A1F/*005037*/,0xFF74/*177564*/,0x15C0/*012700*/, -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*/] +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*/] } \ No newline at end of file diff --git a/apps/pdp11/boot/monitor/BOOTMON.mac b/apps/pdp11/boot/monitor/BOOTMON.mac index fc0b55005..1b6e8f30a 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.mac +++ b/apps/pdp11/boot/monitor/BOOTMON.mac @@ -4,7 +4,6 @@ ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING? PSW = 177776 -CNSW = 177570 DL11XCSR = 177564 DL11VEC = 64 @@ -29,8 +28,7 @@ START: RESET MOV SP,R0 JSR PC,INPUT CLR R0 -1$: MOV R0,@#CNSW ; UPDATE THE FRONT PANEL DATA DISPLAY WITH R0 - WAIT +1$: WAIT INC R0 TST LGHTON BEQ 1$ diff --git a/apps/pdp11/boot/monitor/BOOTMON.txt b/apps/pdp11/boot/monitor/BOOTMON.txt index 669313e92..870f34698 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.txt +++ b/apps/pdp11/boot/monitor/BOOTMON.txt @@ -4,532 +4,530 @@ 4 ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING? 5 6 177776 PSW = 177776 - 7 177570 CNSW = 177570 - 8 177564 DL11XCSR = 177564 - 9 000064 DL11VEC = 64 - 10 - 11 177546 KW11LKS = 177546 - 12 000100 KW11VEC = 100 - 13 - 14 .ASECT - 15 140000 .=140000 - 16 140000 000005 START: RESET - 17 140002 005037 177776 CLR @#PSW - 18 140006 012706 140000 MOV #START,SP - 19 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR - 20 140016 012700 141125 MOV #BANNER,R0 - 21 140022 004767 140154' JSR PC,PRINT - 22 140026 012737 140130 000100 MOV #CLKAST,@#KW11VEC - 23 140034 012737 000340 000102 MOV #340,@#KW11VEC+2 - 24 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING - 25 - 26 140050 012700 141155 MOV #PROMPT,R0 - 27 140054 004767 140154' JSR PC,PRINT - 28 140060 162706 000256 SUB #256,SP - 29 140064 010600 MOV SP,R0 - 30 140066 004767 140250' JSR PC,INPUT - 31 140072 005000 CLR R0 - 32 140074 010037 177570 1$: MOV R0,@#CNSW ; UPDATE THE FRONT PANEL DATA DISPLAY WITH R0 - 33 140100 000001 WAIT - 34 140102 005200 INC R0 - 35 140104 005767 140124' TST LGHTON - 36 140110 001771 BEQ 1$ - 37 140112 012746 054000 MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG - 38 140116 016746 140124' MOV LGHTON,-(SP) ; CALL SUPER LOOP START - 39 140122 000002 RTI - 40 - 41 140124 000000 LGHTON: .WORD 0 - 42 140126 000000 CLKTIC: .WORD 0 - 43 - 44 CLKAST: - 45 140130 005267 140126' INC CLKTIC - 46 140134 000002 RTI - 47 - 48 ONECHR: - 49 140136 105737 177564 TSTB @#DL11XCSR - 50 140142 100375 BPL ONECHR - 51 140144 110037 177566 MOVB R0,@#177566 - 52 140150 000207 RTS PC + 7 177564 DL11XCSR = 177564 + 8 000064 DL11VEC = 64 + 9 + 10 177546 KW11LKS = 177546 + 11 000100 KW11VEC = 100 + 12 + 13 .ASECT + 14 140000 .=140000 + 15 140000 000005 START: RESET + 16 140002 005037 177776 CLR @#PSW + 17 140006 012706 140000 MOV #START,SP + 18 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR + 19 140016 012700 141121 MOV #BANNER,R0 + 20 140022 004767 140150' JSR PC,PRINT + 21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC + 22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2 + 23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING + 24 + 25 140050 012700 141151 MOV #PROMPT,R0 + 26 140054 004767 140150' JSR PC,PRINT + 27 140060 162706 000256 SUB #256,SP + 28 140064 010600 MOV SP,R0 + 29 140066 004767 140244' JSR PC,INPUT + 30 140072 005000 CLR R0 + 31 140074 000001 1$: WAIT + 32 140076 005200 INC R0 + 33 140100 005767 140120' TST LGHTON + 34 140104 001773 BEQ 1$ + 35 140106 012746 054000 MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG + 36 140112 016746 140120' MOV LGHTON,-(SP) ; CALL SUPER LOOP START + 37 140116 000002 RTI + 38 + 39 140120 000000 LGHTON: .WORD 0 + 40 140122 000000 CLKTIC: .WORD 0 + 41 + 42 CLKAST: + 43 140124 005267 140122' INC CLKTIC + 44 140130 000002 RTI + 45 + 46 ONECHR: + 47 140132 105737 177564 TSTB @#DL11XCSR + 48 140136 100375 BPL ONECHR + 49 140140 110037 177566 MOVB R0,@#177566 + 50 140144 000207 RTS PC + 51 + 52 140146 000000 PRTPTR: .WORD 0 53 - 54 140152 000000 PRTPTR: .WORD 0 - 55 - 56 PRINT: - 57 140154 132737 000100 177564 BITB #100,@#DL11XCSR - 58 140162 001374 BNE PRINT - 59 140164 010067 140152' MOV R0,PRTPTR - 60 140170 012737 140214 000064 MOV #PRTAST,@#DL11VEC - 61 140176 012737 000200 000066 MOV #200,@#DL11VEC+2 - 62 140204 152737 000100 177564 BISB #100,@#DL11XCSR - 63 140212 000207 RTS PC - 64 - 65 PRTAST: - 66 140214 105777 140152' TSTB @PRTPTR - 67 140220 001406 BEQ 2$ - 68 140222 117737 140152' 177566 MOVB @PRTPTR,@#177566 - 69 140230 005267 140152' INC PRTPTR - 70 140234 000002 RTI - 71 140236 105037 177564 2$: CLRB @#177564 - 72 140242 000002 RTI - 73 - 74 140244 000000 BUFFER: .WORD 0 ; INPUT BUFFER POINTER - 75 140246 000000 LENGTH: .WORD 0 ; INPUT BUFFER LENGTH - 76 - 77 INPUT: - 78 140250 010067 140244' MOV R0,BUFFER - 79 140254 005067 140246' CLR LENGTH - 80 140260 012737 140304 000060 MOV #INPAST,@#60 - 81 140266 012737 000200 000062 MOV #200,@#62 - 82 140274 152737 000100 177560 BISB #100,@#177560 - 83 140302 000207 RTS PC - 84 - 85 INPAST: - 86 140304 010046 MOV R0,-(SP) - 87 140306 113700 177562 MOVB @#177562,R0 - 88 140312 120027 000015 CMPB R0,#15 - 89 140316 001455 BEQ 7$ ; CARRIAGE RETURN - 90 140320 120027 000177 CMPB R0,#127. - 91 140324 001403 BEQ 2$ ; - 92 140326 120027 000010 CMPB R0,#10 - 93 140332 001012 BNE 4$ ; BACK SPACE - 94 140334 005767 140246' 2$: TST LENGTH ; DATA IN BUFFER? - 95 140340 001406 BEQ 3$ - 96 140342 005367 140246' DEC LENGTH ; LENGTH - 97 140346 012700 141043 MOV #DEL,R0 - 98 140352 004767 140154' JSR PC,PRINT - 99 140356 000453 3$: BR 9$ - 100 140360 120027 000040 4$: CMPB R0,#40 - 101 140364 002450 BLT 9$ ; BELOW SPACE - 102 140366 120027 000177 CMPB R0,#177 - 103 140372 002045 BGE 9$ ; SKIP STUFF TOO BIG - 104 140374 004767 140136' JSR PC,ONECHR ; ECHO CHAR - 105 140400 120027 000172 CMPB R0,#172 - 106 140404 003005 BGT 5$ ; ABOVE Z - 107 140406 120027 000141 CMPB R0,#141 - 108 140412 002402 BLT 5$ ; BELOW A - 109 140414 142700 000040 BICB #40,R0 ; CONVERT TO UPPER CASE - 110 140420 026727 140246' 000254 5$: CMP LENGTH,#254 - 111 140426 002027 BGE 9$ - 112 140430 110046 MOVB R0,-(SP) - 113 140432 016700 140244' MOV BUFFER,R0 - 114 140436 066700 140246' ADD LENGTH,R0 - 115 140442 112610 MOVB (SP)+,(R0) - 116 140444 005267 140246' INC LENGTH - 117 140450 000416 BR 9$ - 118 - 119 140452 016700 140244' 7$: MOV BUFFER,R0 - 120 140456 066700 140246' ADD LENGTH,R0 - 121 140462 105010 CLRB (R0) - 122 140464 012737 140512 000240 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 - 123 140472 012737 000100 000242 MOV #100,@#242 - 124 140500 012737 002000 177772 MOV #2000,@#177772 - 125 140506 012600 9$: MOV (SP)+,R0 - 126 140510 000002 RTI - 127 - 128 CMD: - 129 140512 005037 177772 CLR @#177772 ; NO MORE PIR CALLS - 130 140516 010046 MOV R0,-(SP) - 131 140520 010146 MOV R1,-(SP) - 132 140522 010246 MOV R2,-(SP) - 133 140524 010346 MOV R3,-(SP) - 134 140526 010446 MOV R4,-(SP) - 135 140530 012700 141040 MOV #EOL,R0 - 136 140534 004767 140154' JSR PC,PRINT - 137 140540 132737 000100 177564 1$: BITB #100,@#177564 - 138 140546 001374 BNE 1$ - 139 140550 005004 CLR R4 - 140 140552 012703 141047 MOV #CMDLST,R3 ; CMD LIST - 141 140556 112300 3$: MOVB (R3)+,R0 - 142 140560 001431 BEQ 13$ - 143 140562 016702 140244' MOV BUFFER,R2 ; USER CMD - 144 140566 112201 4$: MOVB (R2)+,R1 - 145 140570 001431 BEQ 15$ ; NULL COMMAND? - 146 140572 120127 000040 CMPB R1,#40 - 147 140576 001773 BEQ 4$ ; SKIP SPACE - 148 140600 120001 5$: CMPB R0,R1 - 149 140602 001010 BNE 7$ - 150 140604 112300 MOVB (R3)+,R0 - 151 140606 001412 BEQ 9$ - 152 140610 112201 MOVB (R2)+,R1 - 153 140612 001410 BEQ 9$ - 154 140614 120127 000040 CMPB R1,#40 - 155 140620 001367 BNE 5$ - 156 140622 000404 BR 9$ - 157 140624 112300 7$: MOVB (R3)+,R0 - 158 140626 001376 BNE 7$ - 159 140630 005204 INC R4 - 160 140632 000751 BR 3$ - 161 140634 006304 9$: ASL R4 - 162 140636 004774 140704 JSR PC,@CMDTBL(R4) ; EXECUTE - 163 140642 000404 BR 15$ - 164 - 165 140644 012700 141103 13$: MOV #UNKMSG,R0 - 166 140650 004767 140154' JSR PC,PRINT - 167 - 168 140654 005067 140246' 15$: CLR LENGTH - 169 140660 012700 141155 MOV #PROMPT,R0 - 170 140664 004767 140154' JSR PC,PRINT - 171 140670 012604 MOV (SP)+,R4 - 172 140672 012603 MOV (SP)+,R3 - 173 140674 012602 MOV (SP)+,R2 - 174 140676 012601 MOV (SP)+,R1 - 175 140700 012600 MOV (SP)+,R0 - 176 140702 000002 RTI - 177 - 178 - 179 140704 142054 141250 141264 CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP - 140712 141370 141236 - 180 140716 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> - 140721 115 101 116 - 140724 104 123 040 - 140727 101 122 105 - 140732 040 102 117 - 140735 117 124 054 - 140740 040 110 101 - 140743 114 124 054 - 140746 040 114 111 - 140751 107 110 124 - 140754 123 054 040 - 140757 124 105 123 - 140762 124 040 101 - 140765 116 104 040 - 140770 110 105 114 - 140773 120 015 012 - 140776 102 117 117 - 141001 124 040 104 - 141004 105 126 111 - 141007 103 105 123 - 141012 040 101 122 - 141015 105 040 122 - 141020 113 077 040 - 141023 122 114 077 - 141026 040 117 122 - 141031 040 122 120 - 141034 077 015 012 - 141037 000 - 181 141040 015 012 000 EOL: .BYTE 15,12,0 - 182 141043 010 040 010 DEL: .BYTE 10,40,10,0 - 141046 000 - 183 141047 102 117 117 CMDLST: .ASCIZ 'BOOT' - 141052 124 000 - 184 141054 110 101 114 .ASCIZ 'HALT' - 141057 124 000 - 185 141061 124 105 123 .ASCIZ 'TEST' - 141064 124 000 - 186 141066 114 111 107 .ASCIZ 'LIGHTS' - 141071 110 124 123 - 141074 000 - 187 141075 110 105 114 .ASCIZ 'HELP' - 141100 120 000 - 188 141102 000 .BYTE 0 - 189 141103 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> - 141106 116 117 127 - 141111 116 040 103 - 141114 117 115 115 - 141117 101 116 104 - 141122 012 015 000 - 190 141125 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> - 141130 055 061 061 - 141133 040 115 117 - 141136 116 111 124 - 141141 117 122 040 - 141144 126 061 056 - 141147 060 012 015 - 141152 012 015 000 - 191 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS '<12><15><12><15> - 192 141155 102 117 117 PROMPT: .ASCIZ 'BOOT> ' - 141160 124 076 040 - 141163 000 - 193 141164 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> - 141167 116 117 127 - 141172 116 040 102 - 141175 117 117 124 - 141200 040 104 105 - 141203 126 111 103 - 141206 105 012 015 - 141211 000 - 194 141212 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> - 141215 040 040 040 - 141220 103 114 117 - 141223 103 113 040 - 141226 124 111 103 - 141231 113 123 012 - 141234 015 000 + 54 PRINT: + 55 140150 132737 000100 177564 BITB #100,@#DL11XCSR + 56 140156 001374 BNE PRINT + 57 140160 010067 140146' MOV R0,PRTPTR + 58 140164 012737 140210 000064 MOV #PRTAST,@#DL11VEC + 59 140172 012737 000200 000066 MOV #200,@#DL11VEC+2 + 60 140200 152737 000100 177564 BISB #100,@#DL11XCSR + 61 140206 000207 RTS PC + 62 + 63 PRTAST: + 64 140210 105777 140146' TSTB @PRTPTR + 65 140214 001406 BEQ 2$ + 66 140216 117737 140146' 177566 MOVB @PRTPTR,@#177566 + 67 140224 005267 140146' INC PRTPTR + 68 140230 000002 RTI + 69 140232 105037 177564 2$: CLRB @#177564 + 70 140236 000002 RTI + 71 + 72 140240 000000 BUFFER: .WORD 0 ; INPUT BUFFER POINTER + 73 140242 000000 LENGTH: .WORD 0 ; INPUT BUFFER LENGTH + 74 + 75 INPUT: + 76 140244 010067 140240' MOV R0,BUFFER + 77 140250 005067 140242' CLR LENGTH + 78 140254 012737 140300 000060 MOV #INPAST,@#60 + 79 140262 012737 000200 000062 MOV #200,@#62 + 80 140270 152737 000100 177560 BISB #100,@#177560 + 81 140276 000207 RTS PC + 82 + 83 INPAST: + 84 140300 010046 MOV R0,-(SP) + 85 140302 113700 177562 MOVB @#177562,R0 + 86 140306 120027 000015 CMPB R0,#15 + 87 140312 001455 BEQ 7$ ; CARRIAGE RETURN + 88 140314 120027 000177 CMPB R0,#127. + 89 140320 001403 BEQ 2$ ; + 90 140322 120027 000010 CMPB R0,#10 + 91 140326 001012 BNE 4$ ; BACK SPACE + 92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER? + 93 140334 001406 BEQ 3$ + 94 140336 005367 140242' DEC LENGTH ; LENGTH + 95 140342 012700 141037 MOV #DEL,R0 + 96 140346 004767 140150' JSR PC,PRINT + 97 140352 000453 3$: BR 9$ + 98 140354 120027 000040 4$: CMPB R0,#40 + 99 140360 002450 BLT 9$ ; BELOW SPACE + 100 140362 120027 000177 CMPB R0,#177 + 101 140366 002045 BGE 9$ ; SKIP STUFF TOO BIG + 102 140370 004767 140132' JSR PC,ONECHR ; ECHO CHAR + 103 140374 120027 000172 CMPB R0,#172 + 104 140400 003005 BGT 5$ ; ABOVE Z + 105 140402 120027 000141 CMPB R0,#141 + 106 140406 002402 BLT 5$ ; BELOW A + 107 140410 142700 000040 BICB #40,R0 ; CONVERT TO UPPER CASE + 108 140414 026727 140242' 000254 5$: CMP LENGTH,#254 + 109 140422 002027 BGE 9$ + 110 140424 110046 MOVB R0,-(SP) + 111 140426 016700 140240' MOV BUFFER,R0 + 112 140432 066700 140242' ADD LENGTH,R0 + 113 140436 112610 MOVB (SP)+,(R0) + 114 140440 005267 140242' INC LENGTH + 115 140444 000416 BR 9$ + 116 + 117 140446 016700 140240' 7$: MOV BUFFER,R0 + 118 140452 066700 140242' ADD LENGTH,R0 + 119 140456 105010 CLRB (R0) + 120 140460 012737 140506 000240 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 + 121 140466 012737 000100 000242 MOV #100,@#242 + 122 140474 012737 002000 177772 MOV #2000,@#177772 + 123 140502 012600 9$: MOV (SP)+,R0 + 124 140504 000002 RTI + 125 + 126 CMD: + 127 140506 005037 177772 CLR @#177772 ; NO MORE PIR CALLS + 128 140512 010046 MOV R0,-(SP) + 129 140514 010146 MOV R1,-(SP) + 130 140516 010246 MOV R2,-(SP) + 131 140520 010346 MOV R3,-(SP) + 132 140522 010446 MOV R4,-(SP) + 133 140524 012700 141034 MOV #EOL,R0 + 134 140530 004767 140150' JSR PC,PRINT + 135 140534 132737 000100 177564 1$: BITB #100,@#177564 + 136 140542 001374 BNE 1$ + 137 140544 005004 CLR R4 + 138 140546 012703 141043 MOV #CMDLST,R3 ; CMD LIST + 139 140552 112300 3$: MOVB (R3)+,R0 + 140 140554 001431 BEQ 13$ + 141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD + 142 140562 112201 4$: MOVB (R2)+,R1 + 143 140564 001431 BEQ 15$ ; NULL COMMAND? + 144 140566 120127 000040 CMPB R1,#40 + 145 140572 001773 BEQ 4$ ; SKIP SPACE + 146 140574 120001 5$: CMPB R0,R1 + 147 140576 001010 BNE 7$ + 148 140600 112300 MOVB (R3)+,R0 + 149 140602 001412 BEQ 9$ + 150 140604 112201 MOVB (R2)+,R1 + 151 140606 001410 BEQ 9$ + 152 140610 120127 000040 CMPB R1,#40 + 153 140614 001367 BNE 5$ + 154 140616 000404 BR 9$ + 155 140620 112300 7$: MOVB (R3)+,R0 + 156 140622 001376 BNE 7$ + 157 140624 005204 INC R4 + 158 140626 000751 BR 3$ + 159 140630 006304 9$: ASL R4 + 160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE + 161 140636 000404 BR 15$ + 162 + 163 140640 012700 141077 13$: MOV #UNKMSG,R0 + 164 140644 004767 140150' JSR PC,PRINT + 165 + 166 140650 005067 140242' 15$: CLR LENGTH + 167 140654 012700 141151 MOV #PROMPT,R0 + 168 140660 004767 140150' JSR PC,PRINT + 169 140664 012604 MOV (SP)+,R4 + 170 140666 012603 MOV (SP)+,R3 + 171 140670 012602 MOV (SP)+,R2 + 172 140672 012601 MOV (SP)+,R1 + 173 140674 012600 MOV (SP)+,R0 + 174 140676 000002 RTI + 175 + 176 + 177 140700 142050 141244 141260 CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP + 140706 141364 141232 + 178 140712 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> + 140715 115 101 116 + 140720 104 123 040 + 140723 101 122 105 + 140726 040 102 117 + 140731 117 124 054 + 140734 040 110 101 + 140737 114 124 054 + 140742 040 114 111 + 140745 107 110 124 + 140750 123 054 040 + 140753 124 105 123 + 140756 124 040 101 + 140761 116 104 040 + 140764 110 105 114 + 140767 120 015 012 + 140772 102 117 117 + 140775 124 040 104 + 141000 105 126 111 + 141003 103 105 123 + 141006 040 101 122 + 141011 105 040 122 + 141014 113 077 040 + 141017 122 114 077 + 141022 040 117 122 + 141025 040 122 120 + 141030 077 015 012 + 141033 000 + 179 141034 015 012 000 EOL: .BYTE 15,12,0 + 180 141037 010 040 010 DEL: .BYTE 10,40,10,0 + 141042 000 + 181 141043 102 117 117 CMDLST: .ASCIZ 'BOOT' + 141046 124 000 + 182 141050 110 101 114 .ASCIZ 'HALT' + 141053 124 000 + 183 141055 124 105 123 .ASCIZ 'TEST' + 141060 124 000 + 184 141062 114 111 107 .ASCIZ 'LIGHTS' + 141065 110 124 123 + 141070 000 + 185 141071 110 105 114 .ASCIZ 'HELP' + 141074 120 000 + 186 141076 000 .BYTE 0 + 187 141077 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> + 141102 116 117 127 + 141105 116 040 103 + 141110 117 115 115 + 141113 101 116 104 + 141116 012 015 000 + 188 141121 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> + 141124 055 061 061 + 141127 040 115 117 + 141132 116 111 124 + 141135 117 122 040 + 141140 126 061 056 + 141143 060 012 015 + 141146 012 015 000 + 189 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS '<12><15><12><15> + 190 141151 102 117 117 PROMPT: .ASCIZ 'BOOT> ' + 141154 124 076 040 + 141157 000 + 191 141160 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> + 141163 116 117 127 + 141166 116 040 102 + 141171 117 117 124 + 141174 040 104 105 + 141177 126 111 103 + 141202 105 012 015 + 141205 000 + 192 141206 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> + 141211 040 040 040 + 141214 103 114 117 + 141217 103 113 040 + 141222 124 111 103 + 141225 113 123 012 + 141230 015 000 + 193 + 194 .EVEN 195 - 196 .EVEN - 197 - 198 HELP: - 199 141236 012700 140716 MOV #HLPMSG,R0 - 200 141242 004767 140154' JSR PC,PRINT - 201 141246 000207 RTS PC - 202 - 203 HALT: - 204 141250 000000 HALT - 205 141252 012700 141040 MOV #EOL,R0 - 206 141256 004767 140154' JSR PC,PRINT - 207 141262 000207 RTS PC - 208 - 209 TEST: - 210 141264 005067 140126' CLR CLKTIC - 211 - 212 141270 012705 015000 MOV #15000,R5 - 213 141274 010537 177570 10$: MOV R5,@#177570 ; DISPLAY - 214 141300 010504 MOV R5,R4 - 215 141302 006204 ASR R4 - 216 141304 005000 15$: CLR R0 - 217 141306 010501 MOV R5,R1 - 218 141310 071004 DIV R4,R0 - 219 141312 010002 MOV R0,R2 - 220 141314 070204 MUL R4,R2 - 221 141316 060301 ADD R3,R1 - 222 141320 020105 CMP R1,R5 - 223 141322 001401 BEQ 20$ - 224 141324 000000 HALT - 225 141326 077412 20$: SOB R4,15$ - 226 141330 077517 SOB R5,10$ - 227 - 228 141332 012700 141217 MOV #PERMSG+5,R0 - 229 141336 016703 140126' MOV CLKTIC,R3 - 230 - 231 141342 005002 25$: CLR R2 - 232 141344 071227 000010 DIV #10,R2 - 233 141350 062703 000060 ADD #'0,R3 - 234 141354 110340 MOVB R3,-(R0) - 235 141356 010203 MOV R2,R3 - 236 141360 001370 BNE 25$ - 237 - 238 141362 004767 140154' JSR PC,PRINT - 239 141366 000207 RTS PC - 240 - 241 - 242 177572 MMR0=177572 - 243 177574 MMR1=177574 - 244 177576 MMR2=177576 - 245 172516 MMR3=172516 - 246 - 247 LIGHTS: - 248 141370 012703 077406 MOV #77406,R3 ; DEFAULT PDR - 249 141374 005002 CLR R2 - 250 141376 005001 CLR R1 - 251 141400 012700 000010 MOV #8.,R0 - 252 141404 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR - 253 141410 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR - 254 141414 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR - 255 141420 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR - 256 141424 010361 172200 MOV R3,172200(R1) ; SUPER I PDR - 257 141430 010261 172240 MOV R2,172240(R1) ; SUPER I PAR - 258 141434 010361 172220 MOV R3,172220(R1) ; SUPER D PDR - 259 141440 010261 172260 MOV R2,172260(R1) ; SUPER D PAR - 260 141444 010361 177600 MOV R3,177600(R1) ; USER I PDR - 261 141450 010261 177640 MOV R2,177640(R1) ; USER I PAR - 262 141454 010361 177620 MOV R3,177620(R1) ; USER D PDR - 263 141460 010361 177660 MOV R3,177660(R1) ; USER D PAR - 264 141464 062702 000200 ADD #200,R2 - 265 141470 062701 000002 ADD #2,R1 - 266 141474 077035 SOB R0,1$ - 267 141476 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE - 268 141504 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE - 269 141512 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE - 270 141520 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT - 271 141526 012737 000001 177572 MOV #1,@#MMR0 - 272 - 273 141534 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 - 274 141542 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 - 275 141550 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER - 276 - 277 141556 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS - 278 141562 012702 141610 MOV #SUPERS,R2 ; ADDRESS SUPER CODE - 279 141566 012246 10$: MOV (R2)+,-(SP) - 280 141570 006623 MTPI (R3)+ - 281 141572 020227 142054 CMP R2,#SUPERE - 282 141576 103773 BLO 10$ - 283 - 284 141600 012767 040200 140124' MOV #40200,LGHTON ; CHANGE IDLE TASK - 285 141606 000207 RTS PC - 286 - 287 ; - 288 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 - 289 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS - 290 ; - 291 SUPERS: - 292 141610 012700 000037 MOV #37,R0 ; LOAD PATTERN - 293 141614 012701 174000 MOV #174000,R1 - 294 141620 032737 000001 177570 BIT #1,@#177570 - 295 141626 001414 BEQ 10$ - 296 141630 012700 007417 MOV #7417,R0 - 297 141634 010001 MOV R0,R1 - 298 141636 005101 COM R1 - 299 141640 032737 000002 177570 BIT #2,@#177570 - 300 141646 001404 BEQ 10$ - 301 141650 012700 036163 MOV #36163,R0 - 302 141654 012701 037000 MOV #37000,R1 - 303 141660 010102 10$: MOV R1,R2 - 304 141662 162702 000002 SUB #2,R2 - 305 141666 042702 000001 BIC #1,R2 ; WAIT ADDRESS - 306 141672 010203 MOV R2,R3 - 307 141674 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET - 308 141700 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT - 309 141706 062703 000002 ADD #2,R3 - 310 141712 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3) - 311 - 312 141720 010204 MOV R2,R4 - 313 141722 072427 177772 ASH #-6,R4 - 314 141726 042704 177600 BIC #177600,R4 - 315 141732 012705 001700 MOV #1700,R5 - 316 141736 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT - 317 141740 010204 MOV R2,R4 - 318 141742 072427 177764 ASH #-12.,R4 - 319 141746 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET - 320 141752 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE - 321 - 322 141756 010103 MOV R1,R3 - 323 141760 072327 177764 ASH #-12.,R3 - 324 141764 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET - 325 141770 020304 CMP R3,R4 ; SAME PAR - 326 141772 001412 BEQ 30$ - 327 141774 010104 MOV R1,R4 - 328 141776 072427 177772 ASH #-6,R4 - 329 142002 042704 177600 BIC #177600,R4 - 330 142006 012705 001700 MOV #1700,R5 - 331 142012 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP - 332 142014 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE - 333 30$: - 334 142020 012704 000003 MOV #3,R4 - 335 142024 063704 177570 ADD @#177570,R4 - 336 142030 012703 000002 MOV #2,R3 - 337 142034 060703 ADD PC,R3 - 338 142036 000112 40$: JMP (R2) - 339 142040 077402 SOB R4,40$ - 340 142042 010002 MOV R0,R2 - 341 142044 006002 ROR R2 ; ROTATE PATTERN - 342 142046 006101 ROL R1 - 343 142050 006000 ROR R0 - 344 142052 000702 BR 10$ - 345 SUPERE: - 346 - 347 BOOT: - 348 142054 005003 CLR R3 ; UNIT - 349 142056 112201 1$: MOVB (R2)+,R1 - 350 142060 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0 - 351 142062 120127 000040 CMPB R1,#40 - 352 142066 001773 BEQ 1$ - 353 142070 120127 000122 CMPB R1,#'R - 354 142074 001405 BEQ 5$ - 355 - 356 142076 012700 141164 MOV #BADBOO,R0 - 357 142102 004767 140154' JSR PC,PRINT - 358 142106 000207 RTS PC - 359 - 360 142110 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P - 361 142112 112200 7$: MOVB (R2)+,R0 ; DIGIT - 362 142114 001416 BEQ 9$ - 363 142116 120027 000040 CMPB R0,#40 - 364 142122 001413 BEQ 9$ - 365 142124 120027 000067 CMPB R0,#'7 - 366 142130 003031 BGT 11$ - 367 142132 162700 000060 SUB #'0,R0 - 368 142136 002426 BLT 11$ + 196 HELP: + 197 141232 012700 140712 MOV #HLPMSG,R0 + 198 141236 004767 140150' JSR PC,PRINT + 199 141242 000207 RTS PC + 200 + 201 HALT: + 202 141244 000000 HALT + 203 141246 012700 141034 MOV #EOL,R0 + 204 141252 004767 140150' JSR PC,PRINT + 205 141256 000207 RTS PC + 206 + 207 TEST: + 208 141260 005067 140122' CLR CLKTIC + 209 + 210 141264 012705 015000 MOV #15000,R5 + 211 141270 010537 177570 10$: MOV R5,@#177570 ; DISPLAY + 212 141274 010504 MOV R5,R4 + 213 141276 006204 ASR R4 + 214 141300 005000 15$: CLR R0 + 215 141302 010501 MOV R5,R1 + 216 141304 071004 DIV R4,R0 + 217 141306 010002 MOV R0,R2 + 218 141310 070204 MUL R4,R2 + 219 141312 060301 ADD R3,R1 + 220 141314 020105 CMP R1,R5 + 221 141316 001401 BEQ 20$ + 222 141320 000000 HALT + 223 141322 077412 20$: SOB R4,15$ + 224 141324 077517 SOB R5,10$ + 225 + 226 141326 012700 141213 MOV #PERMSG+5,R0 + 227 141332 016703 140122' MOV CLKTIC,R3 + 228 + 229 141336 005002 25$: CLR R2 + 230 141340 071227 000010 DIV #10,R2 + 231 141344 062703 000060 ADD #'0,R3 + 232 141350 110340 MOVB R3,-(R0) + 233 141352 010203 MOV R2,R3 + 234 141354 001370 BNE 25$ + 235 + 236 141356 004767 140150' JSR PC,PRINT + 237 141362 000207 RTS PC + 238 + 239 + 240 177572 MMR0=177572 + 241 177574 MMR1=177574 + 242 177576 MMR2=177576 + 243 172516 MMR3=172516 + 244 + 245 LIGHTS: + 246 141364 012703 077406 MOV #77406,R3 ; DEFAULT PDR + 247 141370 005002 CLR R2 + 248 141372 005001 CLR R1 + 249 141374 012700 000010 MOV #8.,R0 + 250 141400 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR + 251 141404 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR + 252 141410 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR + 253 141414 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR + 254 141420 010361 172200 MOV R3,172200(R1) ; SUPER I PDR + 255 141424 010261 172240 MOV R2,172240(R1) ; SUPER I PAR + 256 141430 010361 172220 MOV R3,172220(R1) ; SUPER D PDR + 257 141434 010261 172260 MOV R2,172260(R1) ; SUPER D PAR + 258 141440 010361 177600 MOV R3,177600(R1) ; USER I PDR + 259 141444 010261 177640 MOV R2,177640(R1) ; USER I PAR + 260 141450 010361 177620 MOV R3,177620(R1) ; USER D PDR + 261 141454 010361 177660 MOV R3,177660(R1) ; USER D PAR + 262 141460 062702 000200 ADD #200,R2 + 263 141464 062701 000002 ADD #2,R1 + 264 141470 077035 SOB R0,1$ + 265 141472 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE + 266 141500 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE + 267 141506 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE + 268 141514 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT + 269 141522 012737 000001 177572 MOV #1,@#MMR0 + 270 + 271 141530 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 + 272 141536 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 + 273 141544 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER + 274 + 275 141552 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS + 276 141556 012702 141604 MOV #SUPERS,R2 ; ADDRESS SUPER CODE + 277 141562 012246 10$: MOV (R2)+,-(SP) + 278 141564 006623 MTPI (R3)+ + 279 141566 020227 142050 CMP R2,#SUPERE + 280 141572 103773 BLO 10$ + 281 + 282 141574 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK + 283 141602 000207 RTS PC + 284 + 285 ; + 286 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 + 287 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS + 288 ; + 289 SUPERS: + 290 141604 012700 000037 MOV #37,R0 ; LOAD PATTERN + 291 141610 012701 174000 MOV #174000,R1 + 292 141614 032737 000001 177570 BIT #1,@#177570 + 293 141622 001414 BEQ 10$ + 294 141624 012700 007417 MOV #7417,R0 + 295 141630 010001 MOV R0,R1 + 296 141632 005101 COM R1 + 297 141634 032737 000002 177570 BIT #2,@#177570 + 298 141642 001404 BEQ 10$ + 299 141644 012700 036163 MOV #36163,R0 + 300 141650 012701 037000 MOV #37000,R1 + 301 141654 010102 10$: MOV R1,R2 + 302 141656 162702 000002 SUB #2,R2 + 303 141662 042702 000001 BIC #1,R2 ; WAIT ADDRESS + 304 141666 010203 MOV R2,R3 + 305 141670 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET + 306 141674 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT + 307 141702 062703 000002 ADD #2,R3 + 308 141706 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3) + 309 + 310 141714 010204 MOV R2,R4 + 311 141716 072427 177772 ASH #-6,R4 + 312 141722 042704 177600 BIC #177600,R4 + 313 141726 012705 001700 MOV #1700,R5 + 314 141732 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT + 315 141734 010204 MOV R2,R4 + 316 141736 072427 177764 ASH #-12.,R4 + 317 141742 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET + 318 141746 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE + 319 + 320 141752 010103 MOV R1,R3 + 321 141754 072327 177764 ASH #-12.,R3 + 322 141760 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET + 323 141764 020304 CMP R3,R4 ; SAME PAR + 324 141766 001412 BEQ 30$ + 325 141770 010104 MOV R1,R4 + 326 141772 072427 177772 ASH #-6,R4 + 327 141776 042704 177600 BIC #177600,R4 + 328 142002 012705 001700 MOV #1700,R5 + 329 142006 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP + 330 142010 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE + 331 30$: + 332 142014 012704 000003 MOV #3,R4 + 333 142020 063704 177570 ADD @#177570,R4 + 334 142024 012703 000002 MOV #2,R3 + 335 142030 060703 ADD PC,R3 + 336 142032 000112 40$: JMP (R2) + 337 142034 077402 SOB R4,40$ + 338 142036 010002 MOV R0,R2 + 339 142040 006002 ROR R2 ; ROTATE PATTERN + 340 142042 006101 ROL R1 + 341 142044 006000 ROR R0 + 342 142046 000702 BR 10$ + 343 SUPERE: + 344 + 345 BOOT: + 346 142050 005003 CLR R3 ; UNIT + 347 142052 112201 1$: MOVB (R2)+,R1 + 348 142054 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0 + 349 142056 120127 000040 CMPB R1,#40 + 350 142062 001773 BEQ 1$ + 351 142064 120127 000122 CMPB R1,#'R + 352 142070 001405 BEQ 5$ + 353 + 354 142072 012700 141160 MOV #BADBOO,R0 + 355 142076 004767 140150' JSR PC,PRINT + 356 142102 000207 RTS PC + 357 + 358 142104 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P + 359 142106 112200 7$: MOVB (R2)+,R0 ; DIGIT + 360 142110 001416 BEQ 9$ + 361 142112 120027 000040 CMPB R0,#40 + 362 142116 001413 BEQ 9$ + 363 142120 120027 000067 CMPB R0,#'7 + 364 142124 003031 BGT 11$ + 365 142126 162700 000060 SUB #'0,R0 + 366 142132 002426 BLT 11$ + 367 142134 006303 ASL R3 + 368 142136 006303 ASL R3 369 142140 006303 ASL R3 - 370 142142 006303 ASL R3 - 371 142144 006303 ASL R3 - 372 142146 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT - 373 142150 000760 BR 7$ - 374 142152 005002 9$: CLR R2 - 375 142154 012722 000137 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 - 376 142160 012722 140000 MOV #START,(R2)+ - 377 142164 012722 140000 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 - 378 142170 005022 CLR (R2)+ - 379 142172 120127 000113 CMPB R1,#'K - 380 142176 001476 BEQ BOOTRK - 381 142200 120127 000114 CMPB R1,#'L - 382 142204 001410 BEQ BOOTRL - 383 142206 120127 000120 CMPB R1,#'P - 384 142212 001517 BEQ BOOTRP - 385 - 386 142214 012700 141103 11$: MOV #UNKMSG,R0 - 387 142220 004767 140154' JSR PC,PRINT - 388 142224 000207 RTS PC - 389 - 390 174400 RLCS=174400 - 391 BOOTRL: - 392 142226 000005 RESET - 393 142230 000303 SWAB R3 ; UNIT NUMBER - 394 142232 012701 174400 MOV #RLCS,R1 ; CSR - 395 142236 012761 000013 000004 MOV #13,4(R1) ; CLR ERR - 396 142244 052703 000004 BIS #4,R3 ; UNIT+GSTAT - 397 142250 010311 MOV R3,(R1) ; ISSUE CMD - 398 142252 105711 TSTB (R1) ; WAIT - 399 142254 100376 BPL .-2 - 400 142256 105003 CLRB R3 - 401 142260 052703 000010 BIS #10,R3 ; UNIT+RDHDR - 402 142264 010311 MOV R3,(R1) ; ISSUE CMD - 403 142266 105711 TSTB (R1) ; WAIT - 404 142270 100376 BPL .-2 - 405 142272 016102 000006 MOV 6(R1),R2 ; GET HDR - 406 142276 042702 000077 BIC #77,R2 ; CLR SECTOR - 407 142302 005202 INC R2 ; MAGIC BIT - 408 142304 010261 000004 MOV R2,4(R1) ; SEEK TO 0 - 409 142310 105003 CLRB R3 - 410 142312 052703 000006 BIS #6,R3 ; UNIT+SEEK - 411 142316 010311 MOV R3,(R1) ; ISSUE CMD - 412 142320 105711 TSTB (R1) ; WAIT - 413 142322 100376 BPL .-2 - 414 142324 005061 000002 CLR 2(R1) ; CLR BA - 415 142330 005061 000004 CLR 4(R1) ; CLR DA - 416 142334 012761 177000 000006 MOV #-512.,6(R1) ; SET WC - 417 142342 105003 CLRB R3 - 418 142344 052703 000014 BIS #14,R3 ; UNIT+READ - 419 142350 010311 MOV R3,(R1) ; ISSUE CMD - 420 142352 105711 TSTB (R1) ; WAIT - 421 142354 100376 BPL .-2 - 422 142356 042711 000377 BIC #377,(R1) - 423 142362 005002 CLR R2 - 424 142364 005003 CLR R3 - 425 142366 005004 CLR R4 - 426 142370 005005 CLR R5 - 427 142372 005007 CLR PC - 428 - 429 177412 RKDA=177412 - 430 000005 READGO=5 - 431 BOOTRK: - 432 142374 000005 RESET - 433 142376 000303 SWAB R3 ; UNIT NUMBER + 370 142142 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT + 371 142144 000760 BR 7$ + 372 142146 005002 9$: CLR R2 + 373 142150 012722 000137 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 + 374 142154 012722 140000 MOV #START,(R2)+ + 375 142160 012722 140000 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 + 376 142164 005022 CLR (R2)+ + 377 142166 120127 000113 CMPB R1,#'K + 378 142172 001476 BEQ BOOTRK + 379 142174 120127 000114 CMPB R1,#'L + 380 142200 001410 BEQ BOOTRL + 381 142202 120127 000120 CMPB R1,#'P + 382 142206 001517 BEQ BOOTRP + 383 + 384 142210 012700 141077 11$: MOV #UNKMSG,R0 + 385 142214 004767 140150' JSR PC,PRINT + 386 142220 000207 RTS PC + 387 + 388 174400 RLCS=174400 + 389 BOOTRL: + 390 142222 000005 RESET + 391 142224 000303 SWAB R3 ; UNIT NUMBER + 392 142226 012701 174400 MOV #RLCS,R1 ; CSR + 393 142232 012761 000013 000004 MOV #13,4(R1) ; CLR ERR + 394 142240 052703 000004 BIS #4,R3 ; UNIT+GSTAT + 395 142244 010311 MOV R3,(R1) ; ISSUE CMD + 396 142246 105711 TSTB (R1) ; WAIT + 397 142250 100376 BPL .-2 + 398 142252 105003 CLRB R3 + 399 142254 052703 000010 BIS #10,R3 ; UNIT+RDHDR + 400 142260 010311 MOV R3,(R1) ; ISSUE CMD + 401 142262 105711 TSTB (R1) ; WAIT + 402 142264 100376 BPL .-2 + 403 142266 016102 000006 MOV 6(R1),R2 ; GET HDR + 404 142272 042702 000077 BIC #77,R2 ; CLR SECTOR + 405 142276 005202 INC R2 ; MAGIC BIT + 406 142300 010261 000004 MOV R2,4(R1) ; SEEK TO 0 + 407 142304 105003 CLRB R3 + 408 142306 052703 000006 BIS #6,R3 ; UNIT+SEEK + 409 142312 010311 MOV R3,(R1) ; ISSUE CMD + 410 142314 105711 TSTB (R1) ; WAIT + 411 142316 100376 BPL .-2 + 412 142320 005061 000002 CLR 2(R1) ; CLR BA + 413 142324 005061 000004 CLR 4(R1) ; CLR DA + 414 142330 012761 177000 000006 MOV #-512.,6(R1) ; SET WC + 415 142336 105003 CLRB R3 + 416 142340 052703 000014 BIS #14,R3 ; UNIT+READ + 417 142344 010311 MOV R3,(R1) ; ISSUE CMD + 418 142346 105711 TSTB (R1) ; WAIT + 419 142350 100376 BPL .-2 + 420 142352 042711 000377 BIC #377,(R1) + 421 142356 005002 CLR R2 + 422 142360 005003 CLR R3 + 423 142362 005004 CLR R4 + 424 142364 005005 CLR R5 + 425 142366 005007 CLR PC + 426 + 427 177412 RKDA=177412 + 428 000005 READGO=5 + 429 BOOTRK: + 430 142370 000005 RESET + 431 142372 000303 SWAB R3 ; UNIT NUMBER + 432 142374 006303 ASL R3 + 433 142376 006303 ASL R3 434 142400 006303 ASL R3 435 142402 006303 ASL R3 436 142404 006303 ASL R3 - 437 142406 006303 ASL R3 - 438 142410 006303 ASL R3 - 439 142412 012701 177412 MOV #RKDA,R1 ; CSR - 440 142416 010311 MOV R3,(R1) ; LOAD DA - 441 142420 005041 CLR -(R1) ; CLEAR BA - 442 142422 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC - 443 142426 012741 000005 MOV #READGO,-(R1) ; READ & GO - 444 142432 005002 CLR R2 - 445 142434 005003 CLR R3 - 446 142436 005004 CLR R4 - 447 142440 005005 CLR R5 - 448 142442 105711 TSTB (R1) - 449 142444 100376 BPL .-2 - 450 142446 105011 CLRB (R1) - 451 142450 005007 CLR PC - 452 - 453 176700 RPCSR=0176700 - 454 BOOTRP: - 455 142452 000005 RESET - 456 142454 012701 176700 MOV #RPCSR, R1 - 457 142460 012761 000040 000010 MOV #0000040, 10(R1) ; RESET - 458 142466 010361 000010 MOV R3, 10(R1) ; SET UNIT - 459 142472 012711 000021 MOV #0000021, (R1) ; PACK ACK - 460 142476 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE - 461 142504 012761 177000 000002 MOV #-512., 2(R1) ; SET WC - 462 142512 005061 000004 CLR 4(R1) ; CLR BA - 463 142516 005061 000006 CLR 6(R1) ; CLR DA - 464 142522 005061 000034 CLR 34(R1) ; CLR CYL - 465 142526 012711 000071 MOV #0000071, (R1) ; READ - 466 142532 105711 TSTB (R1) ; WAIT - 467 142534 100376 BPL .-2 - 468 142536 105011 CLRB (R1) - 469 142540 010300 MOV R3,R0 - 470 142542 005007 CLR PC - 471 - 472 .END START - 472 + 437 142406 012701 177412 MOV #RKDA,R1 ; CSR + 438 142412 010311 MOV R3,(R1) ; LOAD DA + 439 142414 005041 CLR -(R1) ; CLEAR BA + 440 142416 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC + 441 142422 012741 000005 MOV #READGO,-(R1) ; READ & GO + 442 142426 005002 CLR R2 + 443 142430 005003 CLR R3 + 444 142432 005004 CLR R4 + 445 142434 005005 CLR R5 + 446 142436 105711 TSTB (R1) + 447 142440 100376 BPL .-2 + 448 142442 105011 CLRB (R1) + 449 142444 005007 CLR PC + 450 + 451 176700 RPCSR=0176700 + 452 BOOTRP: + 453 142446 000005 RESET + 454 142450 012701 176700 MOV #RPCSR, R1 + 455 142454 012761 000040 000010 MOV #0000040, 10(R1) ; RESET + 456 142462 010361 000010 MOV R3, 10(R1) ; SET UNIT + 457 142466 012711 000021 MOV #0000021, (R1) ; PACK ACK + 458 142472 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE + 459 142500 012761 177000 000002 MOV #-512., 2(R1) ; SET WC + 460 142506 005061 000004 CLR 4(R1) ; CLR BA + 461 142512 005061 000006 CLR 6(R1) ; CLR DA + 462 142516 005061 000034 CLR 34(R1) ; CLR CYL + 463 142522 012711 000071 MOV #0000071, (R1) ; READ + 464 142526 105711 TSTB (R1) ; WAIT + 465 142530 100376 BPL .-2 + 466 142532 105011 CLRB (R1) + 467 142534 010300 MOV R3,R0 + 468 142536 005007 CLR PC + 469 + 470 .END START + 470 diff --git a/apps/pdp11/boot/monitor/README.md b/apps/pdp11/boot/monitor/README.md index 3a7ab062e..4e47edd08 100644 --- a/apps/pdp11/boot/monitor/README.md +++ b/apps/pdp11/boot/monitor/README.md @@ -4,6 +4,7 @@ title: PDP-11 Boot Monitor permalink: /apps/pdp11/boot/monitor/ redirect_from: - /devices/pdp11/rom/test/ + - /apps/pdp11/boot/test/ --- PDP-11 Boot Monitor @@ -26,7 +27,6 @@ The **BOOTMON.mac** source code is shown below. ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING? PSW = 177776 - CNSW = 177570 DL11XCSR = 177564 DL11VEC = 64 @@ -51,8 +51,7 @@ The **BOOTMON.mac** source code is shown below. MOV SP,R0 JSR PC,INPUT CLR R0 - 1$: MOV R0,@#CNSW ; UPDATE THE FRONT PANEL DATA DISPLAY WITH R0 - WAIT + 1$: WAIT INC R0 TST LGHTON BEQ 1$ diff --git a/modules/pdp11/lib/cpu.js b/modules/pdp11/lib/cpu.js index aa09ba5ab..0498a56b4 100644 --- a/modules/pdp11/lib/cpu.js +++ b/modules/pdp11/lib/cpu.js @@ -186,6 +186,7 @@ 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]]; diff --git a/modules/pdp11/lib/cpuops.js b/modules/pdp11/lib/cpuops.js index 2e285e1f0..e1d522fef 100644 --- a/modules/pdp11/lib/cpuops.js +++ b/modules/pdp11/lib/cpuops.js @@ -1785,7 +1785,16 @@ PDP11.opWAIT = function(opCode) * the PDP-11 KW11 (60Hz Line Clock) timer is the perfect candidate. See device.js. * * if (!(this.opFlags & PDP11.OPFLAG.WAIT) && this.cmp) this.cmp.updateDisplays(); + * + * However, that being said, it's been reported that the WAIT instruction puts the contents of R0 into the + * Front Panel's "DATA PATH". However, I can't find any supporting documentation of that. Another explanation + * would be that the data path is being updated constantly, and that when R0 is the last register to be updated + * before a WAIT instruction, it simply predominates the data being displayed. + * + * But for now, we'll go with popular lore and propagate R0 to the Panel's "DATA PATH" setting. */ + if (this.panel) this.panel.setDataPath(this.regsGen[0]); + this.opFlags |= PDP11.OPFLAG.WAIT; this.advancePC(-2); this.nStepCycles -= 3; diff --git a/modules/pdp11/lib/panel.js b/modules/pdp11/lib/panel.js index 97324ece7..ea7950f6f 100644 --- a/modules/pdp11/lib/panel.js +++ b/modules/pdp11/lib/panel.js @@ -853,6 +853,24 @@ PanelPDP11.prototype.setData = function(value) return this.regData; }; +/** + * setDataPath(value) + * + * This interface is for refreshing the Front Panel's "DATA PATH" display, which technically, + * is separate from the "DISPLAY REGISTER" (regData). However, our Front Panel doesn't currently + * provide a toggle between "DISPLAY REGISTER" and "DATA PATH" views, so we use the same variable + * for both. + * + * Because this is a potentially high-frequency function, we do NOT update the LED array here. + * + * @this {PanelPDP11} + * @param {number} value + */ +PanelPDP11.prototype.setDataPath = function(value) +{ + this.regData = value; +}; + /** * setLED(sBinding, value) * @@ -983,8 +1001,8 @@ PanelPDP11.prototype.updateDisplay = function(nUpdate) /** * readCNSW(addr) * - * If addr is set, then this a normal read, so we should return normal results (ie, switches); - * if addr is NOT set, then this is a read-before-write, so we must return the value being updated. + * If addr is set, then this a normal read, so we should return normal results (ie, SWITCH register); + * if addr is NOT set, then this is a read-before-write, so we must return the DISPLAY register value. * * @this {PanelPDP11} * @param {number} addr (eg, PDP11.UNIBUS.CNSW or 177570) @@ -998,6 +1016,9 @@ PanelPDP11.prototype.readCNSW = function(addr) /** * writeCNSW(value, addr) * + * Handler for DISPLAY register writes. Because this is a potentially high-frequency function, + * we do NOT update the LED array here. + * * @this {PanelPDP11} * @param {number} value * @param {number} addr (eg, PDP11.UNIBUS.CNSW or 177570)