From 9d67f243ef4dbce3da46220f8461be452af067d0 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 15 Nov 2016 16:16:38 -0800 Subject: [PATCH] Fixed MMR1/MMR2 updates, and synced boot monitor code with http://skn.noip.me/pdp11/boot.mac --- apps/pdp11/boot/monitor/BOOTMON.json | 152 +++-- apps/pdp11/boot/monitor/BOOTMON.mac | 179 +++++- apps/pdp11/boot/monitor/BOOTMON.txt | 906 ++++++++++++++++----------- apps/pdp11/boot/monitor/README.md | 861 +++++++++++++++---------- apps/pdp11/boot/monitor/makefile | 2 +- modules/pdp11/lib/cpustate.js | 22 +- modules/pdp11/lib/debugger.js | 28 +- modules/pdp11/lib/defines.js | 42 +- modules/pdp11/lib/panel.js | 2 +- 9 files changed, 1393 insertions(+), 801 deletions(-) diff --git a/apps/pdp11/boot/monitor/BOOTMON.json b/apps/pdp11/boot/monitor/BOOTMON.json index b4d18c95a..a25e4ff03 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.json +++ b/apps/pdp11/boot/monitor/BOOTMON.json @@ -1,8 +1,9 @@ -{"load":0xC000/*140000*/,"exec":0xC000/*140000*/, +{"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*/, +0xC25E/*141136*/,0x09F7/*004767*/,0x0052/*000122*/,0x15DF/*012737*/,0xC054/*140124*/,0x0040/*000100*/,0x15DF/*012737*/,0x00E0/*000340*/, +0x0042/*000102*/,0x55DF/*052737*/,0x0040/*000100*/,0xFF66/*177546*/,0x15C0/*012700*/,0xC276/*141166*/,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*/, @@ -14,76 +15,101 @@ 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*/, +0xFFC0/*177700*/,0x15C0/*012700*/,0xC227/*141047*/,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*/, +0x10E6/*010346*/,0x1126/*010446*/,0x15C0/*012700*/,0xC224/*141044*/,0x09F7/*004767*/,0xFF0C/*177414*/,0xB5DF/*132737*/,0x0040/*000100*/, +0xFF74/*177564*/,0x02FC/*001374*/,0x0A04/*005004*/,0x15C3/*012703*/,0xC22B/*141053*/,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*/, +0x15C0/*012700*/,0xC24C/*141114*/,0x09F7/*004767*/,0xFEC0/*177300*/,0x0A37/*005067*/,0xFEF6/*177366*/,0x15C0/*012700*/,0xC276/*141166*/, 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*/, +0xC5AE/*142656*/,0xC2C4/*141304*/,0xC2D0/*141320*/,0xC316/*141426*/,0xC47A/*142172*/,0xC2BA/*141272*/,0x4F43/*047503*/,0x4D4D/*046515*/, +0x4E41/*047101*/,0x5344/*051504*/,0x4120/*040440*/,0x4552/*042522*/,0x4220/*041040*/,0x4F4F/*047517*/,0x2C54/*026124*/,0x4820/*044040*/, +0x4C41/*046101*/,0x2C54/*026124*/,0x5420/*052040*/,0x5345/*051505*/,0x2C54/*026124*/,0x4420/*042040*/,0x4149/*040511*/,0x2C47/*026107*/, +0x4C20/*046040*/,0x4749/*043511*/,0x5448/*052110*/,0x2053/*020123*/,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*/,0x4944/*044504*/,0x4741/*043501*/,0x4C00/*046000*/, +0x4749/*043511*/,0x5448/*052110*/,0x0053/*000123*/,0x4548/*042510*/,0x504C/*050114*/,0x0000/*000000*/,0x4E55/*047125*/,0x4E4B/*047113*/, +0x574F/*053517*/,0x204E/*020116*/,0x4F43/*047503*/,0x4D4D/*046515*/,0x4E41/*047101*/,0x0A44/*005104*/,0x000D/*000015*/,0x4450/*042120*/, +0x2D50/*026520*/,0x3131/*030461*/,0x4D20/*046440*/,0x4E4F/*047117*/,0x5449/*052111*/,0x524F/*051117*/,0x5620/*053040*/,0x2E31/*027061*/, +0x0A30/*005060*/,0x0A0D/*005015*/,0x000D/*000015*/,0x4F42/*047502*/,0x544F/*052117*/,0x203E/*020076*/,0x5500/*052400*/,0x4B4E/*045516*/, +0x4F4E/*047516*/,0x4E57/*047127*/,0x4220/*041040*/,0x4F4F/*047517*/,0x2054/*020124*/,0x4544/*042504*/,0x4956/*044526*/,0x4543/*042503*/, +0x0D0A/*006412*/,0x2000/*020000*/,0x2020/*020040*/,0x2020/*020040*/,0x4320/*041440*/,0x4F4C/*047514*/,0x4B43/*045503*/,0x5420/*052040*/, +0x4349/*041511*/,0x534B/*051513*/,0x0D0A/*006412*/,0x2000/*020000*/,0x2020/*020040*/,0x2020/*020040*/,0x4920/*044440*/,0x4554/*042524*/, +0x4152/*040522*/,0x4954/*044524*/,0x4E4F/*047117*/,0x0A53/*005123*/,0x000D/*000015*/,0x15C0/*012700*/,0xC1CC/*140714*/,0x09F7/*004767*/, +0xFDA6/*176646*/,0x0087/*000207*/,0x0000/*000000*/,0x15C0/*012700*/,0xC224/*141044*/,0x09F7/*004767*/,0xFD9A/*176632*/,0x0087/*000207*/, +0x0A37/*005067*/,0xFD7E/*176576*/,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*/, +0x0000/*000000*/,0x7F0A/*077412*/,0x7F4F/*077517*/,0x15C0/*012700*/,0xC298/*141230*/,0x1DC3/*016703*/,0xFD54/*176524*/,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*/] +0xFD56/*176526*/,0x0087/*000207*/,0x0000/*000000*/,0x0A37/*005067*/,0xFFFA/*177772*/,0x0A37/*005067*/,0xFD34/*176464*/,0x0A05/*005005*/, +0x8104/*100404*/,0x8503/*102403*/,0x8202/*101002*/,0x0501/*002401*/,0x8301/*101401*/,0x0000/*000000*/,0x0AC5/*005305*/,0x8003/*100003*/, +0x0302/*001402*/,0x0401/*002001*/,0x0701/*003401*/,0x0000/*000000*/,0x0C05/*006005*/,0x8402/*102002*/,0x8601/*103001*/,0x0201/*001001*/, +0x0000/*000000*/,0x95DF/*112737*/,0x000F/*000017*/,0xFFFE/*177776*/,0x8004/*100004*/,0x8403/*102003*/,0x0502/*002402*/,0x8201/*101001*/, +0x8101/*100401*/,0x0000/*000000*/,0x15C3/*012703*/,0x7FFF/*077777*/,0x65C3/*062703*/,0x7FFF/*077777*/,0xA7D7/*123727*/,0xFFFE/*177776*/, +0x0005/*000005*/,0x0201/*001001*/,0x0000/*000000*/,0x95C4/*112704*/,0x03C0/*001700*/,0x8003/*100003*/,0x2117/*020427*/,0xFFC0/*177700*/, +0x0301/*001401*/,0x0000/*000000*/,0x8A04/*105004*/,0x2117/*020427*/,0xFF00/*177400*/,0x0301/*001401*/,0x0000/*000000*/,0x15C5/*012705*/, +0xAAAA/*125252*/,0x1140/*010500*/,0x1001/*010001*/,0x1042/*010102*/,0x1083/*010203*/,0x10C4/*010304*/,0x1105/*010405*/,0xE141/*160501*/, +0x0501/*002401*/,0x0301/*001401*/,0x0000/*000000*/,0x0C42/*006102*/,0x8601/*103001*/,0x0501/*002401*/,0x0000/*000000*/,0x6083/*060203*/, +0x0A83/*005203*/,0x0A43/*005103*/,0x60C1/*060301*/,0x8701/*103401*/,0x0701/*003401*/,0x0000/*000000*/,0x0C04/*006004*/,0x5103/*050403*/, +0x6143/*060503*/,0x0A83/*005203*/,0x8702/*103402*/,0x0AC1/*005301*/,0x0501/*002401*/,0x0000/*000000*/,0x0A40/*005100*/,0x8301/*101401*/, +0x0000/*000000*/,0x4001/*040001*/,0x6041/*060101*/,0x0601/*003001*/,0x0701/*003401*/,0x0000/*000000*/,0x00C1/*000301*/,0x2057/*020127*/, +0x5455/*052125*/,0x0204/*001004*/,0x3105/*030405*/,0x0602/*003002*/,0x0A45/*005105*/,0x0201/*001001*/,0x0000/*000000*/,0x95C0/*112700*/, +0xFF01/*177401*/,0x8001/*100001*/,0x0000/*000000*/,0x7E02/*077002*/,0x0A01/*005001*/,0x0A81/*005201*/,0x7E02/*077002*/,0x0BC0/*005700*/, +0x0202/*001002*/,0x0BC1/*005701*/,0x0301/*001401*/,0x0000/*000000*/,0x15C7/*012707*/,0xC3FE/*141776*/,0x0000/*000000*/,0x0BD7/*005727*/, +0x0000/*000000*/,0x15E6/*012746*/,0xC40A/*142012*/,0x0087/*000207*/,0x0000/*000000*/,0x0A26/*005046*/,0x15E6/*012746*/,0xC414/*142024*/, +0x0002/*000002*/,0x0000/*000000*/,0x005F/*000137*/,0xC41A/*142032*/,0x0000/*000000*/,0x15C5/*012705*/,0x0003/*000003*/,0x0A1F/*005037*/, +0x0006/*000006*/,0x15DF/*012737*/,0xC42C/*142054*/,0x0004/*000004*/,0x0BE5/*005745*/,0x0000/*000000*/,0x65C6/*062706*/,0x0004/*000004*/, +0x0A00/*005000*/,0x15C1/*012701*/,0x0FFF/*007777*/,0x1002/*010002*/,0x65C2/*062702*/,0x0005/*000005*/,0x2432/*022062*/,0xFFFB/*177773*/, +0x0302/*001402*/,0x0000/*000000*/,0x0000/*000000*/,0x7E49/*077111*/,0x0AB7/*005267*/,0xFEC8/*177310*/,0x8601/*103001*/,0x0000/*000000*/, +0x2DD7/*026727*/,0xFBFE/*175776*/,0x0480/*002200*/,0x8202/*101002*/,0x0077/*000167*/,0xFEC2/*177302*/,0x15C0/*012700*/,0xC2AC/*141254*/, +0x1DC3/*016703*/,0xFEB0/*177260*/,0x0A02/*005002*/,0x7297/*071227*/,0x0008/*000010*/,0x65C3/*062703*/,0x0030/*000060*/,0x90E0/*110340*/, +0x1083/*010203*/,0x02F8/*001370*/,0x09F7/*004767*/,0xFBF0/*175760*/,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*/,0xC50A/*142412*/,0x14A6/*012246*/,0x0D93/*006623*/,0x2097/*020227*/,0xC5AE/*142656*/, +0x87FB/*103773*/,0x15F7/*012767*/,0x4080/*040200*/,0xFB48/*175510*/,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*/,0xC27D/*141175*/,0x09F7/*004767*/,0xFAA0/*175240*/,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*/, +0xC24C/*141114*/,0x09F7/*004767*/,0xFA52/*175122*/,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 1b6e8f30a..7b61f6698 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.mac +++ b/apps/pdp11/boot/monitor/BOOTMON.mac @@ -174,13 +174,14 @@ CMD: RTI -CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP -HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> +CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP +HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, TEST, DIAG, LIGHTS AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> EOL: .BYTE 15,12,0 DEL: .BYTE 10,40,10,0 CMDLST: .ASCIZ 'BOOT' .ASCIZ 'HALT' .ASCIZ 'TEST' + .ASCIZ 'DIAG' .ASCIZ 'LIGHTS' .ASCIZ 'HELP' .BYTE 0 @@ -190,6 +191,7 @@ BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> PROMPT: .ASCIZ 'BOOT> ' BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> +LOOMSG: .ASCIZ ' ITERATIONS'<12><15> .EVEN @@ -236,6 +238,179 @@ TEST: JSR PC,PRINT RTS PC +LOOCNT: .WORD 0 + +DIAG: + CLR LOOCNT + CLR CLKTIC +DIAGLP: + CLR R5 + BMI L1 + BVS L1 + BHI L1 + BLT L1 + BLOS L2 +L1: HALT + +L2: DEC R5 + BPL L3 + BEQ L3 + BGE L3 + BLE L4 +L3: HALT + +L4: ROR R5 + BVC L5 + BCC L5 + BNE L6 +L5: HALT + +L6: MOVB #17,@#177776 + BPL L7 + BVC L7 + BLT L7 + BHI L7 + BMI L8 +L7: HALT + +L8: MOV #77777,R3 + ADD #77777,R3 + CMPB @#177776,#5 + BNE L9 + HALT + +L9: MOVB #1700,R4 + BPL L10 + CMP R4,#177700 + BEQ L11 +L10: HALT + +L11: CLRB R4 + CMP R4,#177400 + BEQ L12 + HALT + +L12: MOV #125252,R5 + MOV R5,R0 + MOV R0,R1 + MOV R1,R2 + MOV R2,R3 + MOV R3,R4 + MOV R4,R5 + SUB R5,R1 + BLT NODIAG + BEQ L13 +NODIAG: HALT + +L13: ROL R2 + BCC L14 + BLT L15 +L14: HALT + +L15: ADD R2,R3 + INC R3 + COM R3 + ADD R3,R1 + BCS L16 + BLE L17 +L16: HALT + +L17: ROR R4 + BIS R4,R3 + ADD R5,R3 + INC R3 + BCS L18 + DEC R1 + BLT L19 +L18: HALT + +L19: COM R0 + BLOS L20 + HALT + +L20: BIC R0,R1 + ADD R1,R1 + BGT L21 + BLE L22 +L21: HALT + +L22: SWAB R1 + CMP R1,#052125 + BNE L23 + BIT R4,R5 + BGT L23 + COM R5 + BNE L24 +L23: HALT + +L24: MOVB #177401,R0 + BPL L26 +L25: HALT + +L26: SOB R0,L25 + CLR R1 +L27: INC R1 + SOB R0,L27 + TST R0 + BNE L28 + TST R1 + BEQ L29 +L28: HALT + +L29: MOV #N1,PC + HALT + +N1: TST (PC)+ + HALT + +N2: MOV #N3,-(SP) + RTS PC + HALT + +N3: CLR -(SP) + MOV #N4,-(SP) + RTI + HALT + +N4: JMP @#N5 + HALT + +N5: MOV #3,R5 + CLR @#6 + MOV #N6,@#4 + TST -(R5) + HALT +N6: ADD #4,SP + + CLR R0 + MOV #7777,R1 +N7: MOV R0,R2 + ADD #5,R2 + CMP (R0)+,-5(R2) + BEQ N8 + HALT +D1: .WORD 0 + +N8: SOB R1,N7 + + INC LOOCNT + BCC 10$ + HALT +10$: CMP CLKTIC,#2200 + BHI 20$ + JMP DIAGLP +20$: MOV #LOOMSG+5,R0 + MOV LOOCNT,R3 + +25$: CLR R2 + DIV #10,R2 + ADD #'0,R3 + MOVB R3,-(R0) + MOV R2,R3 + BNE 25$ + + JSR PC,PRINT + RTS PC MMR0=177572 MMR1=177574 diff --git a/apps/pdp11/boot/monitor/BOOTMON.txt b/apps/pdp11/boot/monitor/BOOTMON.txt index 870f34698..beee4dfe3 100644 --- a/apps/pdp11/boot/monitor/BOOTMON.txt +++ b/apps/pdp11/boot/monitor/BOOTMON.txt @@ -16,13 +16,13 @@ 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 + 19 140016 012700 141136 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 + 25 140050 012700 141166 MOV #PROMPT,R0 26 140054 004767 140150' JSR PC,PRINT 27 140060 162706 000256 SUB #256,SP 28 140064 010600 MOV SP,R0 @@ -92,7 +92,7 @@ 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 + 95 140342 012700 141047 MOV #DEL,R0 96 140346 004767 140150' JSR PC,PRINT 97 140352 000453 3$: BR 9$ 98 140354 120027 000040 4$: CMPB R0,#40 @@ -130,12 +130,12 @@ 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 + 133 140524 012700 141044 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 + 138 140546 012703 141053 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 @@ -160,11 +160,11 @@ 160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE 161 140636 000404 BR 15$ 162 - 163 140640 012700 141077 13$: MOV #UNKMSG,R0 + 163 140640 012700 141114 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 + 167 140654 012700 141166 MOV #PROMPT,R0 168 140660 004767 140150' JSR PC,PRINT 169 140664 012604 MOV (SP)+,R4 170 140666 012603 MOV (SP)+,R3 @@ -174,360 +174,544 @@ 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 + 177 140700 142656 141304 141320 CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP + 140706 141426 142172 141272 + 178 140714 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, TEST, DIAG, LIGHTS AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> + 140717 115 101 116 + 140722 104 123 040 + 140725 101 122 105 + 140730 040 102 117 + 140733 117 124 054 + 140736 040 110 101 + 140741 114 124 054 + 140744 040 124 105 + 140747 123 124 054 + 140752 040 104 111 + 140755 101 107 054 + 140760 040 114 111 + 140763 107 110 124 + 140766 123 040 101 + 140771 116 104 040 + 140774 110 105 114 + 140777 120 015 012 + 141002 102 117 117 + 141005 124 040 104 + 141010 105 126 111 + 141013 103 105 123 + 141016 040 101 122 + 141021 105 040 122 + 141024 113 077 040 + 141027 122 114 077 + 141032 040 117 122 + 141035 040 122 120 + 141040 077 015 012 + 141043 000 + 179 141044 015 012 000 EOL: .BYTE 15,12,0 + 180 141047 010 040 010 DEL: .BYTE 10,40,10,0 + 141052 000 + 181 141053 102 117 117 CMDLST: .ASCIZ 'BOOT' + 141056 124 000 + 182 141060 110 101 114 .ASCIZ 'HALT' + 141063 124 000 + 183 141065 124 105 123 .ASCIZ 'TEST' + 141070 124 000 + 184 141072 104 111 101 .ASCIZ 'DIAG' + 141075 107 000 + 185 141077 114 111 107 .ASCIZ 'LIGHTS' + 141102 110 124 123 + 141105 000 + 186 141106 110 105 114 .ASCIZ 'HELP' + 141111 120 000 + 187 141113 000 .BYTE 0 + 188 141114 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> + 141117 116 117 127 + 141122 116 040 103 + 141125 117 115 115 + 141130 101 116 104 + 141133 012 015 000 + 189 141136 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> + 141141 055 061 061 + 141144 040 115 117 + 141147 116 111 124 + 141152 117 122 040 + 141155 126 061 056 + 141160 060 012 015 + 141163 012 015 000 + 190 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS '<12><15><12><15> + 191 141166 102 117 117 PROMPT: .ASCIZ 'BOOT> ' + 141171 124 076 040 + 141174 000 + 192 141175 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> + 141200 116 117 127 + 141203 116 040 102 + 141206 117 117 124 + 141211 040 104 105 + 141214 126 111 103 + 141217 105 012 015 + 141222 000 + 193 141223 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> + 141226 040 040 040 + 141231 103 114 117 + 141234 103 113 040 + 141237 124 111 103 + 141242 113 123 012 + 141245 015 000 + 194 141247 040 040 040 LOOMSG: .ASCIZ ' ITERATIONS'<12><15> + 141252 040 040 040 + 141255 111 124 105 + 141260 122 101 124 + 141263 111 117 116 + 141266 123 012 015 + 141271 000 195 - 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$ + 196 .EVEN + 197 + 198 HELP: + 199 141272 012700 140714 MOV #HLPMSG,R0 + 200 141276 004767 140150' JSR PC,PRINT + 201 141302 000207 RTS PC + 202 + 203 HALT: + 204 141304 000000 HALT + 205 141306 012700 141044 MOV #EOL,R0 + 206 141312 004767 140150' JSR PC,PRINT + 207 141316 000207 RTS PC + 208 + 209 TEST: + 210 141320 005067 140122' CLR CLKTIC + 211 + 212 141324 012705 015000 MOV #15000,R5 + 213 141330 010537 177570 10$: MOV R5,@#177570 ; DISPLAY + 214 141334 010504 MOV R5,R4 + 215 141336 006204 ASR R4 + 216 141340 005000 15$: CLR R0 + 217 141342 010501 MOV R5,R1 + 218 141344 071004 DIV R4,R0 + 219 141346 010002 MOV R0,R2 + 220 141350 070204 MUL R4,R2 + 221 141352 060301 ADD R3,R1 + 222 141354 020105 CMP R1,R5 + 223 141356 001401 BEQ 20$ + 224 141360 000000 HALT + 225 141362 077412 20$: SOB R4,15$ + 226 141364 077517 SOB R5,10$ + 227 + 228 141366 012700 141230 MOV #PERMSG+5,R0 + 229 141372 016703 140122' MOV CLKTIC,R3 + 230 + 231 141376 005002 25$: CLR R2 + 232 141400 071227 000010 DIV #10,R2 + 233 141404 062703 000060 ADD #'0,R3 + 234 141410 110340 MOVB R3,-(R0) + 235 141412 010203 MOV R2,R3 + 236 141414 001370 BNE 25$ + 237 + 238 141416 004767 140150' JSR PC,PRINT + 239 141422 000207 RTS PC + 240 + 241 141424 000000 LOOCNT: .WORD 0 + 242 + 243 DIAG: + 244 141426 005067 141424' CLR LOOCNT + 245 141432 005067 140122' CLR CLKTIC + 246 DIAGLP: + 247 141436 005005 CLR R5 + 248 141440 100404 BMI L1 + 249 141442 102403 BVS L1 + 250 141444 101002 BHI L1 + 251 141446 002401 BLT L1 + 252 141450 101401 BLOS L2 + 253 141452 000000 L1: HALT + 254 + 255 141454 005305 L2: DEC R5 + 256 141456 100003 BPL L3 + 257 141460 001402 BEQ L3 + 258 141462 002001 BGE L3 + 259 141464 003401 BLE L4 + 260 141466 000000 L3: HALT + 261 + 262 141470 006005 L4: ROR R5 + 263 141472 102002 BVC L5 + 264 141474 103001 BCC L5 + 265 141476 001001 BNE L6 + 266 141500 000000 L5: HALT + 267 + 268 141502 112737 000017 177776 L6: MOVB #17,@#177776 + 269 141510 100004 BPL L7 + 270 141512 102003 BVC L7 + 271 141514 002402 BLT L7 + 272 141516 101001 BHI L7 + 273 141520 100401 BMI L8 + 274 141522 000000 L7: HALT + 275 + 276 141524 012703 077777 L8: MOV #77777,R3 + 277 141530 062703 077777 ADD #77777,R3 + 278 141534 123727 177776 000005 CMPB @#177776,#5 + 279 141542 001001 BNE L9 + 280 141544 000000 HALT 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) + 282 141546 112704 001700 L9: MOVB #1700,R4 + 283 141552 100003 BPL L10 + 284 141554 020427 177700 CMP R4,#177700 + 285 141560 001401 BEQ L11 + 286 141562 000000 L10: HALT + 287 + 288 141564 105004 L11: CLRB R4 + 289 141566 020427 177400 CMP R4,#177400 + 290 141572 001401 BEQ L12 + 291 141574 000000 HALT + 292 + 293 141576 012705 125252 L12: MOV #125252,R5 + 294 141602 010500 MOV R5,R0 + 295 141604 010001 MOV R0,R1 + 296 141606 010102 MOV R1,R2 + 297 141610 010203 MOV R2,R3 + 298 141612 010304 MOV R3,R4 + 299 141614 010405 MOV R4,R5 + 300 141616 160501 SUB R5,R1 + 301 141620 002401 BLT NODIAG + 302 141622 001401 BEQ L13 + 303 141624 000000 NODIAG: HALT + 304 + 305 141626 006102 L13: ROL R2 + 306 141630 103001 BCC L14 + 307 141632 002401 BLT L15 + 308 141634 000000 L14: HALT 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 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 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 + 310 141636 060203 L15: ADD R2,R3 + 311 141640 005203 INC R3 + 312 141642 005103 COM R3 + 313 141644 060301 ADD R3,R1 + 314 141646 103401 BCS L16 + 315 141650 003401 BLE L17 + 316 141652 000000 L16: HALT + 317 + 318 141654 006004 L17: ROR R4 + 319 141656 050403 BIS R4,R3 + 320 141660 060503 ADD R5,R3 + 321 141662 005203 INC R3 + 322 141664 103402 BCS L18 + 323 141666 005301 DEC R1 + 324 141670 002401 BLT L19 + 325 141672 000000 L18: HALT + 326 + 327 141674 005100 L19: COM R0 + 328 141676 101401 BLOS L20 + 329 141700 000000 HALT + 330 + 331 141702 040001 L20: BIC R0,R1 + 332 141704 060101 ADD R1,R1 + 333 141706 003001 BGT L21 + 334 141710 003401 BLE L22 + 335 141712 000000 L21: HALT + 336 + 337 141714 000301 L22: SWAB R1 + 338 141716 020127 052125 CMP R1,#052125 + 339 141722 001004 BNE L23 + 340 141724 030405 BIT R4,R5 + 341 141726 003002 BGT L23 + 342 141730 005105 COM R5 + 343 141732 001001 BNE L24 + 344 141734 000000 L23: HALT + 345 + 346 141736 112700 177401 L24: MOVB #177401,R0 + 347 141742 100001 BPL L26 + 348 141744 000000 L25: HALT + 349 + 350 141746 077002 L26: SOB R0,L25 + 351 141750 005001 CLR R1 + 352 141752 005201 L27: INC R1 + 353 141754 077002 SOB R0,L27 + 354 141756 005700 TST R0 + 355 141760 001002 BNE L28 + 356 141762 005701 TST R1 + 357 141764 001401 BEQ L29 + 358 141766 000000 L28: HALT + 359 + 360 141770 012707 141776 L29: MOV #N1,PC + 361 141774 000000 HALT + 362 + 363 141776 005727 N1: TST (PC)+ + 364 142000 000000 HALT + 365 + 366 142002 012746 142012 N2: MOV #N3,-(SP) + 367 142006 000207 RTS PC + 368 142010 000000 HALT + 369 + 370 142012 005046 N3: CLR -(SP) + 371 142014 012746 142024 MOV #N4,-(SP) + 372 142020 000002 RTI + 373 142022 000000 HALT + 374 + 375 142024 000137 142032 N4: JMP @#N5 + 376 142030 000000 HALT + 377 + 378 142032 012705 000003 N5: MOV #3,R5 + 379 142036 005037 000006 CLR @#6 + 380 142042 012737 142054 000004 MOV #N6,@#4 + 381 142050 005745 TST -(R5) + 382 142052 000000 HALT + 383 142054 062706 000004 N6: ADD #4,SP + 384 + 385 142060 005000 CLR R0 + 386 142062 012701 007777 MOV #7777,R1 + 387 142066 010002 N7: MOV R0,R2 + 388 142070 062702 000005 ADD #5,R2 + 389 142074 022062 177773 CMP (R0)+,-5(R2) + 390 142100 001402 BEQ N8 + 391 142102 000000 HALT + 392 142104 000000 D1: .WORD 0 + 393 + 394 142106 077111 N8: SOB R1,N7 + 395 + 396 142110 005267 141424' INC LOOCNT + 397 142114 103001 BCC 10$ + 398 142116 000000 HALT + 399 142120 026727 140122' 002200 10$: CMP CLKTIC,#2200 + 400 142126 101002 BHI 20$ + 401 142130 000167 141436' JMP DIAGLP + 402 142134 012700 141254 20$: MOV #LOOMSG+5,R0 + 403 142140 016703 141424' MOV LOOCNT,R3 + 404 + 405 142144 005002 25$: CLR R2 + 406 142146 071227 000010 DIV #10,R2 + 407 142152 062703 000060 ADD #'0,R3 + 408 142156 110340 MOVB R3,-(R0) + 409 142160 010203 MOV R2,R3 + 410 142162 001370 BNE 25$ + 411 + 412 142164 004767 140150' JSR PC,PRINT + 413 142170 000207 RTS PC + 414 + 415 177572 MMR0=177572 + 416 177574 MMR1=177574 + 417 177576 MMR2=177576 + 418 172516 MMR3=172516 + 419 + 420 LIGHTS: + 421 142172 012703 077406 MOV #77406,R3 ; DEFAULT PDR + 422 142176 005002 CLR R2 + 423 142200 005001 CLR R1 + 424 142202 012700 000010 MOV #8.,R0 + 425 142206 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR + 426 142212 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR + 427 142216 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR + 428 142222 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR + 429 142226 010361 172200 MOV R3,172200(R1) ; SUPER I PDR + 430 142232 010261 172240 MOV R2,172240(R1) ; SUPER I PAR + 431 142236 010361 172220 MOV R3,172220(R1) ; SUPER D PDR + 432 142242 010261 172260 MOV R2,172260(R1) ; SUPER D PAR + 433 142246 010361 177600 MOV R3,177600(R1) ; USER I PDR + 434 142252 010261 177640 MOV R2,177640(R1) ; USER I PAR + 435 142256 010361 177620 MOV R3,177620(R1) ; USER D PDR + 436 142262 010361 177660 MOV R3,177660(R1) ; USER D PAR + 437 142266 062702 000200 ADD #200,R2 + 438 142272 062701 000002 ADD #2,R1 + 439 142276 077035 SOB R0,1$ + 440 142300 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE + 441 142306 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE + 442 142314 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE + 443 142322 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT + 444 142330 012737 000001 177572 MOV #1,@#MMR0 + 445 + 446 142336 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 + 447 142344 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 + 448 142352 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER + 449 + 450 142360 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS + 451 142364 012702 142412 MOV #SUPERS,R2 ; ADDRESS SUPER CODE + 452 142370 012246 10$: MOV (R2)+,-(SP) + 453 142372 006623 MTPI (R3)+ + 454 142374 020227 142656 CMP R2,#SUPERE + 455 142400 103773 BLO 10$ + 456 + 457 142402 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK + 458 142410 000207 RTS PC + 459 + 460 ; + 461 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 + 462 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS + 463 ; + 464 SUPERS: + 465 142412 012700 000037 MOV #37,R0 ; LOAD PATTERN + 466 142416 012701 174000 MOV #174000,R1 + 467 142422 032737 000001 177570 BIT #1,@#177570 + 468 142430 001414 BEQ 10$ + 469 142432 012700 007417 MOV #7417,R0 + 470 142436 010001 MOV R0,R1 + 471 142440 005101 COM R1 + 472 142442 032737 000002 177570 BIT #2,@#177570 + 473 142450 001404 BEQ 10$ + 474 142452 012700 036163 MOV #36163,R0 + 475 142456 012701 037000 MOV #37000,R1 + 476 142462 010102 10$: MOV R1,R2 + 477 142464 162702 000002 SUB #2,R2 + 478 142470 042702 000001 BIC #1,R2 ; WAIT ADDRESS + 479 142474 010203 MOV R2,R3 + 480 142476 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET + 481 142502 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT + 482 142510 062703 000002 ADD #2,R3 + 483 142514 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3) + 484 + 485 142522 010204 MOV R2,R4 + 486 142524 072427 177772 ASH #-6,R4 + 487 142530 042704 177600 BIC #177600,R4 + 488 142534 012705 001700 MOV #1700,R5 + 489 142540 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT + 490 142542 010204 MOV R2,R4 + 491 142544 072427 177764 ASH #-12.,R4 + 492 142550 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET + 493 142554 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE + 494 + 495 142560 010103 MOV R1,R3 + 496 142562 072327 177764 ASH #-12.,R3 + 497 142566 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET + 498 142572 020304 CMP R3,R4 ; SAME PAR + 499 142574 001412 BEQ 30$ + 500 142576 010104 MOV R1,R4 + 501 142600 072427 177772 ASH #-6,R4 + 502 142604 042704 177600 BIC #177600,R4 + 503 142610 012705 001700 MOV #1700,R5 + 504 142614 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP + 505 142616 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE + 506 30$: + 507 142622 012704 000003 MOV #3,R4 + 508 142626 063704 177570 ADD @#177570,R4 + 509 142632 012703 000002 MOV #2,R3 + 510 142636 060703 ADD PC,R3 + 511 142640 000112 40$: JMP (R2) + 512 142642 077402 SOB R4,40$ + 513 142644 010002 MOV R0,R2 + 514 142646 006002 ROR R2 ; ROTATE PATTERN + 515 142650 006101 ROL R1 + 516 142652 006000 ROR R0 + 517 142654 000702 BR 10$ + 518 SUPERE: + 519 + 520 BOOT: + 521 142656 005003 CLR R3 ; UNIT + 522 142660 112201 1$: MOVB (R2)+,R1 + 523 142662 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0 + 524 142664 120127 000040 CMPB R1,#40 + 525 142670 001773 BEQ 1$ + 526 142672 120127 000122 CMPB R1,#'R + 527 142676 001405 BEQ 5$ + 528 + 529 142700 012700 141175 MOV #BADBOO,R0 + 530 142704 004767 140150' JSR PC,PRINT + 531 142710 000207 RTS PC + 532 + 533 142712 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P + 534 142714 112200 7$: MOVB (R2)+,R0 ; DIGIT + 535 142716 001416 BEQ 9$ + 536 142720 120027 000040 CMPB R0,#40 + 537 142724 001413 BEQ 9$ + 538 142726 120027 000067 CMPB R0,#'7 + 539 142732 003031 BGT 11$ + 540 142734 162700 000060 SUB #'0,R0 + 541 142740 002426 BLT 11$ + 542 142742 006303 ASL R3 + 543 142744 006303 ASL R3 + 544 142746 006303 ASL R3 + 545 142750 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT + 546 142752 000760 BR 7$ + 547 142754 005002 9$: CLR R2 + 548 142756 012722 000137 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 + 549 142762 012722 140000 MOV #START,(R2)+ + 550 142766 012722 140000 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 + 551 142772 005022 CLR (R2)+ + 552 142774 120127 000113 CMPB R1,#'K + 553 143000 001476 BEQ BOOTRK + 554 143002 120127 000114 CMPB R1,#'L + 555 143006 001410 BEQ BOOTRL + 556 143010 120127 000120 CMPB R1,#'P + 557 143014 001517 BEQ BOOTRP + 558 + 559 143016 012700 141114 11$: MOV #UNKMSG,R0 + 560 143022 004767 140150' JSR PC,PRINT + 561 143026 000207 RTS PC + 562 + 563 174400 RLCS=174400 + 564 BOOTRL: + 565 143030 000005 RESET + 566 143032 000303 SWAB R3 ; UNIT NUMBER + 567 143034 012701 174400 MOV #RLCS,R1 ; CSR + 568 143040 012761 000013 000004 MOV #13,4(R1) ; CLR ERR + 569 143046 052703 000004 BIS #4,R3 ; UNIT+GSTAT + 570 143052 010311 MOV R3,(R1) ; ISSUE CMD + 571 143054 105711 TSTB (R1) ; WAIT + 572 143056 100376 BPL .-2 + 573 143060 105003 CLRB R3 + 574 143062 052703 000010 BIS #10,R3 ; UNIT+RDHDR + 575 143066 010311 MOV R3,(R1) ; ISSUE CMD + 576 143070 105711 TSTB (R1) ; WAIT + 577 143072 100376 BPL .-2 + 578 143074 016102 000006 MOV 6(R1),R2 ; GET HDR + 579 143100 042702 000077 BIC #77,R2 ; CLR SECTOR + 580 143104 005202 INC R2 ; MAGIC BIT + 581 143106 010261 000004 MOV R2,4(R1) ; SEEK TO 0 + 582 143112 105003 CLRB R3 + 583 143114 052703 000006 BIS #6,R3 ; UNIT+SEEK + 584 143120 010311 MOV R3,(R1) ; ISSUE CMD + 585 143122 105711 TSTB (R1) ; WAIT + 586 143124 100376 BPL .-2 + 587 143126 005061 000002 CLR 2(R1) ; CLR BA + 588 143132 005061 000004 CLR 4(R1) ; CLR DA + 589 143136 012761 177000 000006 MOV #-512.,6(R1) ; SET WC + 590 143144 105003 CLRB R3 + 591 143146 052703 000014 BIS #14,R3 ; UNIT+READ + 592 143152 010311 MOV R3,(R1) ; ISSUE CMD + 593 143154 105711 TSTB (R1) ; WAIT + 594 143156 100376 BPL .-2 + 595 143160 042711 000377 BIC #377,(R1) + 596 143164 005002 CLR R2 + 597 143166 005003 CLR R3 + 598 143170 005004 CLR R4 + 599 143172 005005 CLR R5 + 600 143174 005007 CLR PC + 601 + 602 177412 RKDA=177412 + 603 000005 READGO=5 + 604 BOOTRK: + 605 143176 000005 RESET + 606 143200 000303 SWAB R3 ; UNIT NUMBER + 607 143202 006303 ASL R3 + 608 143204 006303 ASL R3 + 609 143206 006303 ASL R3 + 610 143210 006303 ASL R3 + 611 143212 006303 ASL R3 + 612 143214 012701 177412 MOV #RKDA,R1 ; CSR + 613 143220 010311 MOV R3,(R1) ; LOAD DA + 614 143222 005041 CLR -(R1) ; CLEAR BA + 615 143224 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC + 616 143230 012741 000005 MOV #READGO,-(R1) ; READ & GO + 617 143234 005002 CLR R2 + 618 143236 005003 CLR R3 + 619 143240 005004 CLR R4 + 620 143242 005005 CLR R5 + 621 143244 105711 TSTB (R1) + 622 143246 100376 BPL .-2 + 623 143250 105011 CLRB (R1) + 624 143252 005007 CLR PC + 625 + 626 176700 RPCSR=0176700 + 627 BOOTRP: + 628 143254 000005 RESET + 629 143256 012701 176700 MOV #RPCSR, R1 + 630 143262 012761 000040 000010 MOV #0000040, 10(R1) ; RESET + 631 143270 010361 000010 MOV R3, 10(R1) ; SET UNIT + 632 143274 012711 000021 MOV #0000021, (R1) ; PACK ACK + 633 143300 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE + 634 143306 012761 177000 000002 MOV #-512., 2(R1) ; SET WC + 635 143314 005061 000004 CLR 4(R1) ; CLR BA + 636 143320 005061 000006 CLR 6(R1) ; CLR DA + 637 143324 005061 000034 CLR 34(R1) ; CLR CYL + 638 143330 012711 000071 MOV #0000071, (R1) ; READ + 639 143334 105711 TSTB (R1) ; WAIT + 640 143336 100376 BPL .-2 + 641 143340 105011 CLRB (R1) + 642 143342 010300 MOV R3,R0 + 643 143344 005007 CLR PC + 644 + 645 .END START + 645 diff --git a/apps/pdp11/boot/monitor/README.md b/apps/pdp11/boot/monitor/README.md index cbc810934..f23e365d3 100644 --- a/apps/pdp11/boot/monitor/README.md +++ b/apps/pdp11/boot/monitor/README.md @@ -33,232 +33,407 @@ The **BOOTMON.mac** source code is shown below. KW11LKS = 177546 KW11VEC = 100 - .ASECT - .=140000 + .ASECT + .=140000 START: RESET - CLR @#PSW - MOV #START,SP - CLR @#DL11XCSR ; CLEAR THE XCSR - MOV #BANNER,R0 - JSR PC,PRINT - MOV #CLKAST,@#KW11VEC - MOV #340,@#KW11VEC+2 - BIS #100,@#KW11LKS ; SET CLOCK TICKING + CLR @#PSW + MOV #START,SP + CLR @#DL11XCSR ; CLEAR THE XCSR + MOV #BANNER,R0 + JSR PC,PRINT + MOV #CLKAST,@#KW11VEC + MOV #340,@#KW11VEC+2 + BIS #100,@#KW11LKS ; SET CLOCK TICKING - MOV #PROMPT,R0 - JSR PC,PRINT - SUB #256,SP - MOV SP,R0 - JSR PC,INPUT - CLR R0 + MOV #PROMPT,R0 + JSR PC,PRINT + SUB #256,SP + MOV SP,R0 + JSR PC,INPUT + CLR R0 1$: WAIT - INC R0 - TST LGHTON - BEQ 1$ - MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG - MOV LGHTON,-(SP) ; CALL SUPER LOOP START - RTI + INC R0 + TST LGHTON + BEQ 1$ + MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG + MOV LGHTON,-(SP) ; CALL SUPER LOOP START + RTI LGHTON: .WORD 0 CLKTIC: .WORD 0 CLKAST: - INC CLKTIC - RTI + INC CLKTIC + RTI ONECHR: - TSTB @#DL11XCSR - BPL ONECHR - MOVB R0,@#177566 - RTS PC + TSTB @#DL11XCSR + BPL ONECHR + MOVB R0,@#177566 + RTS PC PRTPTR: .WORD 0 PRINT: - BITB #100,@#DL11XCSR - BNE PRINT - MOV R0,PRTPTR - MOV #PRTAST,@#DL11VEC - MOV #200,@#DL11VEC+2 - BISB #100,@#DL11XCSR - RTS PC + BITB #100,@#DL11XCSR + BNE PRINT + MOV R0,PRTPTR + MOV #PRTAST,@#DL11VEC + MOV #200,@#DL11VEC+2 + BISB #100,@#DL11XCSR + RTS PC PRTAST: - TSTB @PRTPTR - BEQ 2$ - MOVB @PRTPTR,@#177566 - INC PRTPTR - RTI + TSTB @PRTPTR + BEQ 2$ + MOVB @PRTPTR,@#177566 + INC PRTPTR + RTI 2$: CLRB @#177564 - RTI + RTI BUFFER: .WORD 0 ; INPUT BUFFER POINTER LENGTH: .WORD 0 ; INPUT BUFFER LENGTH INPUT: - MOV R0,BUFFER - CLR LENGTH - MOV #INPAST,@#60 - MOV #200,@#62 - BISB #100,@#177560 - RTS PC + MOV R0,BUFFER + CLR LENGTH + MOV #INPAST,@#60 + MOV #200,@#62 + BISB #100,@#177560 + RTS PC INPAST: - MOV R0,-(SP) - MOVB @#177562,R0 - CMPB R0,#15 - BEQ 7$ ; CARRIAGE RETURN - CMPB R0,#127. - BEQ 2$ ; - CMPB R0,#10 - BNE 4$ ; BACK SPACE + MOV R0,-(SP) + MOVB @#177562,R0 + CMPB R0,#15 + BEQ 7$ ; CARRIAGE RETURN + CMPB R0,#127. + BEQ 2$ ; + CMPB R0,#10 + BNE 4$ ; BACK SPACE 2$: TST LENGTH ; DATA IN BUFFER? - BEQ 3$ - DEC LENGTH ; LENGTH - MOV #DEL,R0 - JSR PC,PRINT + BEQ 3$ + DEC LENGTH ; LENGTH + MOV #DEL,R0 + JSR PC,PRINT 3$: BR 9$ 4$: CMPB R0,#40 - BLT 9$ ; BELOW SPACE - CMPB R0,#177 - BGE 9$ ; SKIP STUFF TOO BIG - JSR PC,ONECHR ; ECHO CHAR - CMPB R0,#172 - BGT 5$ ; ABOVE Z - CMPB R0,#141 - BLT 5$ ; BELOW A - BICB #40,R0 ; CONVERT TO UPPER CASE + BLT 9$ ; BELOW SPACE + CMPB R0,#177 + BGE 9$ ; SKIP STUFF TOO BIG + JSR PC,ONECHR ; ECHO CHAR + CMPB R0,#172 + BGT 5$ ; ABOVE Z + CMPB R0,#141 + BLT 5$ ; BELOW A + BICB #40,R0 ; CONVERT TO UPPER CASE 5$: CMP LENGTH,#254 - BGE 9$ - MOVB R0,-(SP) - MOV BUFFER,R0 - ADD LENGTH,R0 - MOVB (SP)+,(R0) - INC LENGTH - BR 9$ + BGE 9$ + MOVB R0,-(SP) + MOV BUFFER,R0 + ADD LENGTH,R0 + MOVB (SP)+,(R0) + INC LENGTH + BR 9$ 7$: MOV BUFFER,R0 - ADD LENGTH,R0 - CLRB (R0) - MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 - MOV #100,@#242 - MOV #2000,@#177772 + ADD LENGTH,R0 + CLRB (R0) + MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 + MOV #100,@#242 + MOV #2000,@#177772 9$: MOV (SP)+,R0 - RTI + RTI CMD: - CLR @#177772 ; NO MORE PIR CALLS - MOV R0,-(SP) - MOV R1,-(SP) - MOV R2,-(SP) - MOV R3,-(SP) - MOV R4,-(SP) - MOV #EOL,R0 - JSR PC,PRINT + CLR @#177772 ; NO MORE PIR CALLS + MOV R0,-(SP) + MOV R1,-(SP) + MOV R2,-(SP) + MOV R3,-(SP) + MOV R4,-(SP) + MOV #EOL,R0 + JSR PC,PRINT 1$: BITB #100,@#177564 - BNE 1$ - CLR R4 - MOV #CMDLST,R3 ; CMD LIST + BNE 1$ + CLR R4 + MOV #CMDLST,R3 ; CMD LIST 3$: MOVB (R3)+,R0 - BEQ 13$ - MOV BUFFER,R2 ; USER CMD + BEQ 13$ + MOV BUFFER,R2 ; USER CMD 4$: MOVB (R2)+,R1 - BEQ 15$ ; NULL COMMAND? - CMPB R1,#40 - BEQ 4$ ; SKIP SPACE + BEQ 15$ ; NULL COMMAND? + CMPB R1,#40 + BEQ 4$ ; SKIP SPACE 5$: CMPB R0,R1 - BNE 7$ - MOVB (R3)+,R0 - BEQ 9$ - MOVB (R2)+,R1 - BEQ 9$ - CMPB R1,#40 - BNE 5$ - BR 9$ + BNE 7$ + MOVB (R3)+,R0 + BEQ 9$ + MOVB (R2)+,R1 + BEQ 9$ + CMPB R1,#40 + BNE 5$ + BR 9$ 7$: MOVB (R3)+,R0 - BNE 7$ - INC R4 - BR 3$ + BNE 7$ + INC R4 + BR 3$ 9$: ASL R4 - JSR PC,@CMDTBL(R4) ; EXECUTE - BR 15$ + JSR PC,@CMDTBL(R4) ; EXECUTE + BR 15$ 13$: MOV #UNKMSG,R0 - JSR PC,PRINT + JSR PC,PRINT 15$: CLR LENGTH - MOV #PROMPT,R0 - JSR PC,PRINT - MOV (SP)+,R4 - MOV (SP)+,R3 - MOV (SP)+,R2 - MOV (SP)+,R1 - MOV (SP)+,R0 - RTI + MOV #PROMPT,R0 + JSR PC,PRINT + MOV (SP)+,R4 + MOV (SP)+,R3 + MOV (SP)+,R2 + MOV (SP)+,R1 + MOV (SP)+,R0 + RTI - CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP - HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> + CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP + HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, TEST, DIAG, LIGHTS AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> EOL: .BYTE 15,12,0 DEL: .BYTE 10,40,10,0 CMDLST: .ASCIZ 'BOOT' - .ASCIZ 'HALT' - .ASCIZ 'TEST' - .ASCIZ 'LIGHTS' - .ASCIZ 'HELP' - .BYTE 0 + .ASCIZ 'HALT' + .ASCIZ 'TEST' + .ASCIZ 'DIAG' + .ASCIZ 'LIGHTS' + .ASCIZ 'HELP' + .BYTE 0 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> ; 'ADAPTED FROM CODE BY PAUL NANKERVIS '<12><15><12><15> PROMPT: .ASCIZ 'BOOT> ' BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> + LOOMSG: .ASCIZ ' ITERATIONS'<12><15> - .EVEN + .EVEN HELP: - MOV #HLPMSG,R0 - JSR PC,PRINT - RTS PC + MOV #HLPMSG,R0 + JSR PC,PRINT + RTS PC HALT: - HALT - MOV #EOL,R0 - JSR PC,PRINT - RTS PC + HALT + MOV #EOL,R0 + JSR PC,PRINT + RTS PC TEST: - CLR CLKTIC + CLR CLKTIC - MOV #15000,R5 + MOV #15000,R5 10$: MOV R5,@#177570 ; DISPLAY - MOV R5,R4 - ASR R4 + MOV R5,R4 + ASR R4 15$: CLR R0 - MOV R5,R1 - DIV R4,R0 - MOV R0,R2 - MUL R4,R2 - ADD R3,R1 - CMP R1,R5 - BEQ 20$ - HALT + MOV R5,R1 + DIV R4,R0 + MOV R0,R2 + MUL R4,R2 + ADD R3,R1 + CMP R1,R5 + BEQ 20$ + HALT 20$: SOB R4,15$ - SOB R5,10$ + SOB R5,10$ - MOV #PERMSG+5,R0 - MOV CLKTIC,R3 + MOV #PERMSG+5,R0 + MOV CLKTIC,R3 25$: CLR R2 - DIV #10,R2 - ADD #'0,R3 - MOVB R3,-(R0) - MOV R2,R3 - BNE 25$ + DIV #10,R2 + ADD #'0,R3 + MOVB R3,-(R0) + MOV R2,R3 + BNE 25$ - JSR PC,PRINT - RTS PC + JSR PC,PRINT + RTS PC + LOOCNT: .WORD 0 + + DIAG: + CLR LOOCNT + CLR CLKTIC + DIAGLP: + CLR R5 + BMI L1 + BVS L1 + BHI L1 + BLT L1 + BLOS L2 + L1: HALT + + L2: DEC R5 + BPL L3 + BEQ L3 + BGE L3 + BLE L4 + L3: HALT + + L4: ROR R5 + BVC L5 + BCC L5 + BNE L6 + L5: HALT + + L6: MOVB #17,@#177776 + BPL L7 + BVC L7 + BLT L7 + BHI L7 + BMI L8 + L7: HALT + + L8: MOV #77777,R3 + ADD #77777,R3 + CMPB @#177776,#5 + BNE L9 + HALT + + L9: MOVB #1700,R4 + BPL L10 + CMP R4,#177700 + BEQ L11 + L10: HALT + + L11: CLRB R4 + CMP R4,#177400 + BEQ L12 + HALT + + L12: MOV #125252,R5 + MOV R5,R0 + MOV R0,R1 + MOV R1,R2 + MOV R2,R3 + MOV R3,R4 + MOV R4,R5 + SUB R5,R1 + BLT NODIAG + BEQ L13 + NODIAG: HALT + + L13: ROL R2 + BCC L14 + BLT L15 + L14: HALT + + L15: ADD R2,R3 + INC R3 + COM R3 + ADD R3,R1 + BCS L16 + BLE L17 + L16: HALT + + L17: ROR R4 + BIS R4,R3 + ADD R5,R3 + INC R3 + BCS L18 + DEC R1 + BLT L19 + L18: HALT + + L19: COM R0 + BLOS L20 + HALT + + L20: BIC R0,R1 + ADD R1,R1 + BGT L21 + BLE L22 + L21: HALT + + L22: SWAB R1 + CMP R1,#052125 + BNE L23 + BIT R4,R5 + BGT L23 + COM R5 + BNE L24 + L23: HALT + + L24: MOVB #177401,R0 + BPL L26 + L25: HALT + + L26: SOB R0,L25 + CLR R1 + L27: INC R1 + SOB R0,L27 + TST R0 + BNE L28 + TST R1 + BEQ L29 + L28: HALT + + L29: MOV #N1,PC + HALT + + N1: TST (PC)+ + HALT + + N2: MOV #N3,-(SP) + RTS PC + HALT + + N3: CLR -(SP) + MOV #N4,-(SP) + RTI + HALT + + N4: JMP @#N5 + HALT + + N5: MOV #3,R5 + CLR @#6 + MOV #N6,@#4 + TST -(R5) + HALT + N6: ADD #4,SP + + CLR R0 + MOV #7777,R1 + N7: MOV R0,R2 + ADD #5,R2 + CMP (R0)+,-5(R2) + BEQ N8 + HALT + D1: .WORD 0 + + N8: SOB R1,N7 + + INC LOOCNT + BCC 10$ + HALT + 10$: CMP CLKTIC,#2200 + BHI 20$ + JMP DIAGLP + 20$: MOV #LOOMSG+5,R0 + MOV LOOCNT,R3 + + 25$: CLR R2 + DIV #10,R2 + ADD #'0,R3 + MOVB R3,-(R0) + MOV R2,R3 + BNE 25$ + + JSR PC,PRINT + RTS PC MMR0=177572 MMR1=177574 @@ -266,228 +441,228 @@ The **BOOTMON.mac** source code is shown below. MMR3=172516 LIGHTS: - MOV #77406,R3 ; DEFAULT PDR - CLR R2 - CLR R1 - MOV #8.,R0 + MOV #77406,R3 ; DEFAULT PDR + CLR R2 + CLR R1 + MOV #8.,R0 1$: MOV R3,172300(R1) ; KERNEL I PDR - MOV R2,172340(R1) ; KERNEL I PAR - MOV R3,172320(R1) ; KERNEL D PDR - MOV R2,172360(R1) ; KERNEL D PAR - MOV R3,172200(R1) ; SUPER I PDR - MOV R2,172240(R1) ; SUPER I PAR - MOV R3,172220(R1) ; SUPER D PDR - MOV R2,172260(R1) ; SUPER D PAR - MOV R3,177600(R1) ; USER I PDR - MOV R2,177640(R1) ; USER I PAR - MOV R3,177620(R1) ; USER D PDR - MOV R3,177660(R1) ; USER D PAR - ADD #200,R2 - ADD #2,R1 - SOB R0,1$ - BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE - BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE - BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE - MOV #77,@#MMR3 ; 77 FOR 22 BIT - MOV #1,@#MMR0 + MOV R2,172340(R1) ; KERNEL I PAR + MOV R3,172320(R1) ; KERNEL D PDR + MOV R2,172360(R1) ; KERNEL D PAR + MOV R3,172200(R1) ; SUPER I PDR + MOV R2,172240(R1) ; SUPER I PAR + MOV R3,172220(R1) ; SUPER D PDR + MOV R2,172260(R1) ; SUPER D PAR + MOV R3,177600(R1) ; USER I PDR + MOV R2,177640(R1) ; USER I PAR + MOV R3,177620(R1) ; USER D PDR + MOV R3,177660(R1) ; USER D PAR + ADD #200,R2 + ADD #2,R1 + SOB R0,1$ + BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE + BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE + BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE + MOV #77,@#MMR3 ; 77 FOR 22 BIT + MOV #1,@#MMR0 - MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 - MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 - MOV #010000,@#177776 ; SET PM TO SUPER + MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 + MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 + MOV #010000,@#177776 ; SET PM TO SUPER - MOV #40200,R3 ; SUPER CODE ADDRESS - MOV #SUPERS,R2 ; ADDRESS SUPER CODE + MOV #40200,R3 ; SUPER CODE ADDRESS + MOV #SUPERS,R2 ; ADDRESS SUPER CODE 10$: MOV (R2)+,-(SP) - MTPI (R3)+ - CMP R2,#SUPERE - BLO 10$ + MTPI (R3)+ + CMP R2,#SUPERE + BLO 10$ - MOV #40200,LGHTON ; CHANGE IDLE TASK - RTS PC + MOV #40200,LGHTON ; CHANGE IDLE TASK + RTS PC ; ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS ; SUPERS: - MOV #37,R0 ; LOAD PATTERN - MOV #174000,R1 - BIT #1,@#177570 - BEQ 10$ - MOV #7417,R0 - MOV R0,R1 - COM R1 - BIT #2,@#177570 - BEQ 10$ - MOV #36163,R0 - MOV #37000,R1 + MOV #37,R0 ; LOAD PATTERN + MOV #174000,R1 + BIT #1,@#177570 + BEQ 10$ + MOV #7417,R0 + MOV R0,R1 + COM R1 + BIT #2,@#177570 + BEQ 10$ + MOV #36163,R0 + MOV #37000,R1 10$: MOV R1,R2 - SUB #2,R2 - BIC #1,R2 ; WAIT ADDRESS - MOV R2,R3 - BIC #177701,R3 ; ADDRESS OFFSET - MOV #0000001,40000(R3) ; WRITE WAIT - ADD #2,R3 - MOV #0000113,40000(R3) ; WRITE JMP (R3) + SUB #2,R2 + BIC #1,R2 ; WAIT ADDRESS + MOV R2,R3 + BIC #177701,R3 ; ADDRESS OFFSET + MOV #0000001,40000(R3) ; WRITE WAIT + ADD #2,R3 + MOV #0000113,40000(R3) ; WRITE JMP (R3) - MOV R2,R4 - ASH #-6,R4 - BIC #177600,R4 - MOV #1700,R5 - SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT - MOV R2,R4 - ASH #-12.,R4 - BIC #177761,R4 ; PAR SELECT OFFSET - MOV R5,172240(R4) ; SUPER I SPACE + MOV R2,R4 + ASH #-6,R4 + BIC #177600,R4 + MOV #1700,R5 + SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT + MOV R2,R4 + ASH #-12.,R4 + BIC #177761,R4 ; PAR SELECT OFFSET + MOV R5,172240(R4) ; SUPER I SPACE - MOV R1,R3 - ASH #-12.,R3 - BIC #177761,R3 ; PAR SELECT OFFSET - CMP R3,R4 ; SAME PAR - BEQ 30$ - MOV R1,R4 - ASH #-6,R4 - BIC #177600,R4 - MOV #1700,R5 - SUB R4,R5 ; PAR ADDRESS BASE FOR JMP - MOV R5,172240(R3) ; SUPER I SPACE + MOV R1,R3 + ASH #-12.,R3 + BIC #177761,R3 ; PAR SELECT OFFSET + CMP R3,R4 ; SAME PAR + BEQ 30$ + MOV R1,R4 + ASH #-6,R4 + BIC #177600,R4 + MOV #1700,R5 + SUB R4,R5 ; PAR ADDRESS BASE FOR JMP + MOV R5,172240(R3) ; SUPER I SPACE 30$: - MOV #3,R4 - ADD @#177570,R4 - MOV #2,R3 - ADD PC,R3 + MOV #3,R4 + ADD @#177570,R4 + MOV #2,R3 + ADD PC,R3 40$: JMP (R2) - SOB R4,40$ - MOV R0,R2 - ROR R2 ; ROTATE PATTERN - ROL R1 - ROR R0 - BR 10$ + SOB R4,40$ + MOV R0,R2 + ROR R2 ; ROTATE PATTERN + ROL R1 + ROR R0 + BR 10$ SUPERE: BOOT: - CLR R3 ; UNIT + CLR R3 ; UNIT 1$: MOVB (R2)+,R1 - BEQ BOOTRK ; DEFAULT DEVICE IS RK0 - CMPB R1,#40 - BEQ 1$ - CMPB R1,#'R - BEQ 5$ + BEQ BOOTRK ; DEFAULT DEVICE IS RK0 + CMPB R1,#40 + BEQ 1$ + CMPB R1,#'R + BEQ 5$ - MOV #BADBOO,R0 - JSR PC,PRINT - RTS PC + MOV #BADBOO,R0 + JSR PC,PRINT + RTS PC 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P 7$: MOVB (R2)+,R0 ; DIGIT - BEQ 9$ - CMPB R0,#40 - BEQ 9$ - CMPB R0,#'7 - BGT 11$ - SUB #'0,R0 - BLT 11$ - ASL R3 - ASL R3 - ASL R3 - BIS R0,R3 ; PUT DIGIT INTO UNIT - BR 7$ + BEQ 9$ + CMPB R0,#40 + BEQ 9$ + CMPB R0,#'7 + BGT 11$ + SUB #'0,R0 + BLT 11$ + ASL R3 + ASL R3 + ASL R3 + BIS R0,R3 ; PUT DIGIT INTO UNIT + BR 7$ 9$: CLR R2 - MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 - MOV #START,(R2)+ - MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 - CLR (R2)+ - CMPB R1,#'K - BEQ BOOTRK - CMPB R1,#'L - BEQ BOOTRL - CMPB R1,#'P - BEQ BOOTRP + MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 + MOV #START,(R2)+ + MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 + CLR (R2)+ + CMPB R1,#'K + BEQ BOOTRK + CMPB R1,#'L + BEQ BOOTRL + CMPB R1,#'P + BEQ BOOTRP 11$: MOV #UNKMSG,R0 - JSR PC,PRINT - RTS PC + JSR PC,PRINT + RTS PC RLCS=174400 BOOTRL: - RESET - SWAB R3 ; UNIT NUMBER - MOV #RLCS,R1 ; CSR - MOV #13,4(R1) ; CLR ERR - BIS #4,R3 ; UNIT+GSTAT - MOV R3,(R1) ; ISSUE CMD - TSTB (R1) ; WAIT - BPL .-2 - CLRB R3 - BIS #10,R3 ; UNIT+RDHDR - MOV R3,(R1) ; ISSUE CMD - TSTB (R1) ; WAIT - BPL .-2 - MOV 6(R1),R2 ; GET HDR - BIC #77,R2 ; CLR SECTOR - INC R2 ; MAGIC BIT - MOV R2,4(R1) ; SEEK TO 0 - CLRB R3 - BIS #6,R3 ; UNIT+SEEK - MOV R3,(R1) ; ISSUE CMD - TSTB (R1) ; WAIT - BPL .-2 - CLR 2(R1) ; CLR BA - CLR 4(R1) ; CLR DA - MOV #-512.,6(R1) ; SET WC - CLRB R3 - BIS #14,R3 ; UNIT+READ - MOV R3,(R1) ; ISSUE CMD - TSTB (R1) ; WAIT - BPL .-2 - BIC #377,(R1) - CLR R2 - CLR R3 - CLR R4 - CLR R5 - CLR PC + RESET + SWAB R3 ; UNIT NUMBER + MOV #RLCS,R1 ; CSR + MOV #13,4(R1) ; CLR ERR + BIS #4,R3 ; UNIT+GSTAT + MOV R3,(R1) ; ISSUE CMD + TSTB (R1) ; WAIT + BPL .-2 + CLRB R3 + BIS #10,R3 ; UNIT+RDHDR + MOV R3,(R1) ; ISSUE CMD + TSTB (R1) ; WAIT + BPL .-2 + MOV 6(R1),R2 ; GET HDR + BIC #77,R2 ; CLR SECTOR + INC R2 ; MAGIC BIT + MOV R2,4(R1) ; SEEK TO 0 + CLRB R3 + BIS #6,R3 ; UNIT+SEEK + MOV R3,(R1) ; ISSUE CMD + TSTB (R1) ; WAIT + BPL .-2 + CLR 2(R1) ; CLR BA + CLR 4(R1) ; CLR DA + MOV #-512.,6(R1) ; SET WC + CLRB R3 + BIS #14,R3 ; UNIT+READ + MOV R3,(R1) ; ISSUE CMD + TSTB (R1) ; WAIT + BPL .-2 + BIC #377,(R1) + CLR R2 + CLR R3 + CLR R4 + CLR R5 + CLR PC RKDA=177412 READGO=5 BOOTRK: - RESET - SWAB R3 ; UNIT NUMBER - ASL R3 - ASL R3 - ASL R3 - ASL R3 - ASL R3 - MOV #RKDA,R1 ; CSR - MOV R3,(R1) ; LOAD DA - CLR -(R1) ; CLEAR BA - MOV #-256.*2,-(R1) ; LOAD WC - MOV #READGO,-(R1) ; READ & GO - CLR R2 - CLR R3 - CLR R4 - CLR R5 - TSTB (R1) - BPL .-2 - CLRB (R1) - CLR PC + RESET + SWAB R3 ; UNIT NUMBER + ASL R3 + ASL R3 + ASL R3 + ASL R3 + ASL R3 + MOV #RKDA,R1 ; CSR + MOV R3,(R1) ; LOAD DA + CLR -(R1) ; CLEAR BA + MOV #-256.*2,-(R1) ; LOAD WC + MOV #READGO,-(R1) ; READ & GO + CLR R2 + CLR R3 + CLR R4 + CLR R5 + TSTB (R1) + BPL .-2 + CLRB (R1) + CLR PC RPCSR=0176700 BOOTRP: - RESET - MOV #RPCSR, R1 - MOV #0000040, 10(R1) ; RESET - MOV R3, 10(R1) ; SET UNIT - MOV #0000021, (R1) ; PACK ACK - MOV #0010000, 32(R1) ; 16B MODE - MOV #-512., 2(R1) ; SET WC - CLR 4(R1) ; CLR BA - CLR 6(R1) ; CLR DA - CLR 34(R1) ; CLR CYL - MOV #0000071, (R1) ; READ - TSTB (R1) ; WAIT - BPL .-2 - CLRB (R1) - MOV R3,R0 - CLR PC + RESET + MOV #RPCSR, R1 + MOV #0000040, 10(R1) ; RESET + MOV R3, 10(R1) ; SET UNIT + MOV #0000021, (R1) ; PACK ACK + MOV #0010000, 32(R1) ; 16B MODE + MOV #-512., 2(R1) ; SET WC + CLR 4(R1) ; CLR BA + CLR 6(R1) ; CLR DA + CLR 34(R1) ; CLR CYL + MOV #0000071, (R1) ; READ + TSTB (R1) ; WAIT + BPL .-2 + CLRB (R1) + MOV R3,R0 + CLR PC - .END START + .END START diff --git a/apps/pdp11/boot/monitor/makefile b/apps/pdp11/boot/monitor/makefile index 1c0f8b9ba..d74c165db 100644 --- a/apps/pdp11/boot/monitor/makefile +++ b/apps/pdp11/boot/monitor/makefile @@ -8,7 +8,7 @@ BOOTMON.txt: BOOTMON.mac macro11 BOOTMON.mac -l BOOTMON.txt BOOTMON.json: BOOTMON.txt - node ../../../../modules/filedump/bin/filedump --file=BOOTMON.txt --format=octal --output=BOOTMON.json --overwrite + node ../../../../modules/filedump/bin/filedump --file=BOOTMON.txt --format=octal --output=BOOTMON.json --load=0xC000 --exec=0xC000 --overwrite BOOTMON.md: BOOTMON.mac tabify -8 -d BOOTMON.mac > BOOTMON.md diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js index 3410dd4e4..f27445dac 100644 --- a/modules/pdp11/lib/cpustate.js +++ b/modules/pdp11/lib/cpustate.js @@ -254,8 +254,8 @@ CPUStatePDP11.prototype.resetMMU = function() this.mmuLastMode = 0; this.mmuMask = 0x3ffff; - this.lastAI = 0; // last auto-incs and/or auto-decs; this gets propagated to MMR1 - this.lastPC = 0; // last PC at the time of getOpcode(); this get propagated to MMR2 + this.lastAI = 0; // last auto-incs and/or auto-decs; this is propagated to MMR1 as appropriate + this.lastPC = 0; // last PC at the time of getOpcode(); this is propagated to MMR2 as appropriate this.resetTriggers(); @@ -327,6 +327,15 @@ CPUStatePDP11.prototype.setMMR0 = function(newMMR0) { newMMR0 &= 0xf381; if (this.regMMR0 != newMMR0) { + /* + * If updates to MMR1 and MMR2 are being shut off (ie, MMR0.ABORT bits are transitioning from clear to set), + * then do one final sync with their real-time counterparts (lastAI and lastPC). + */ + if (!(this.regMMR0 & PDP11.MMR0.ABORT) && (newMMR0 & PDP11.MMR0.ABORT)) { + this.assert(!(this.lastAI & ~0xffff)); + this.regMMR1 = this.lastAI & 0xffff; + this.regMMR2 = this.lastPC; + } this.regMMR0 = newMMR0; this.mmuLastMode = (newMMR0 >> 5) & 3; this.mmuLastPage = (newMMR0 >> 1) & 0xf; @@ -352,7 +361,12 @@ CPUStatePDP11.prototype.setMMR0 = function(newMMR0) */ CPUStatePDP11.prototype.getMMR1 = function() { + /* + * If updates to MMR1 have not been shut off (ie, MMR0.ABORT bits are clear), + * then we are always allowed to sync MMR1 with it real-time counterpart (lastAI). + */ if (!(this.regMMR0 & PDP11.MMR0.ABORT)) { + this.assert(!(this.lastAI & ~0xffff)); this.regMMR1 = this.lastAI & 0xffff; } var result = this.regMMR1; @@ -370,6 +384,10 @@ CPUStatePDP11.prototype.getMMR1 = function() */ CPUStatePDP11.prototype.getMMR2 = function() { + /* + * If updates to MMR2 have not been shut off (ie, MMR0.ABORT bits are clear), + * then we are always allowed to sync MMR2 with it real-time counterpart (lastPC). + */ if (!(this.regMMR0 & PDP11.MMR0.ABORT)) { this.regMMR2 = this.lastPC; } diff --git a/modules/pdp11/lib/debugger.js b/modules/pdp11/lib/debugger.js index b6f36262b..56dc04cbf 100644 --- a/modules/pdp11/lib/debugger.js +++ b/modules/pdp11/lib/debugger.js @@ -559,7 +559,7 @@ if (DEBUGGER) { var fCompleted = false; if (!dbg.isBusy(true)) { dbg.setBusy(true); - fCompleted = dbg.stepCPU(fRepeat? 1 : 0); + fCompleted = dbg.stepCPU(fRepeat? 1 : 0, null); dbg.setBusy(false); } return fCompleted; @@ -1317,7 +1317,7 @@ if (DEBUGGER) { * * @this {DebuggerPDP11} * @param {number} nCycles (0 for one instruction without checking breakpoints) - * @param {boolean} [fRegs] is true to display registers after step (default is false) + * @param {boolean|null} [fRegs] is true to display registers after step (default is false; use null for previous setting) * @param {boolean} [fUpdateDisplays] is false to disable Computer display updates (default is true) * @return {boolean} */ @@ -1325,6 +1325,10 @@ if (DEBUGGER) { { if (!this.checkCPU()) return false; + if (fRegs === null) { + fRegs = (!this.sTraceCmdPrev || this.sTraceCmdPrev == "tr"); + } + this.nCycles = 0; if (!nCycles) { @@ -2773,12 +2777,12 @@ if (DEBUGGER) { { if (sAddr == '?') { this.println("breakpoint commands:"); - this.println("\tbp [a]\tset exec breakpoint at addr [a]"); - this.println("\tbr [a]\tset read breakpoint at addr [a]"); - this.println("\tbw [a]\tset write breakpoint at addr [a]"); - this.println("\tbc [a]\tclear breakpoint at addr [a]"); + this.println("\tbp [#]\tset exec breakpoint at addr #"); + this.println("\tbr [#]\tset read breakpoint at addr #"); + this.println("\tbw [#]\tset write breakpoint at addr #"); + this.println("\tbc [#]\tclear breakpoint at addr #"); this.println("\tbl\tlist all breakpoints"); - this.println("\tbn [n]\tbreak after [n] instruction(s)"); + this.println("\tbn [#]\tbreak after # instruction(s)"); return; } @@ -3681,6 +3685,15 @@ if (DEBUGGER) { */ DebuggerPDP11.prototype.doTrace = function(sCmd, sCount) { + if (sCount == '?') { + this.println("trace commands:"); + this.println("\tt [#]\ttrace # instructions"); + this.println("\ttr [#]\ttrace # instructions with register updates"); + this.println("\ttc [#]\ttrace # cycles"); + this.println("note: bn [#] to break after # instructions is much faster"); + return; + } + var dbg = this; var fRegs = (sCmd != "t"); var nCount = this.parseValue(sCount, null, true) || 1; @@ -3689,6 +3702,7 @@ if (DEBUGGER) { nCycles = nCount; nCount = 1; } + this.sTraceCmdPrev = sCmd; web.onCountRepeat( nCount, function onCountStep() { diff --git a/modules/pdp11/lib/defines.js b/modules/pdp11/lib/defines.js index 3425ff03e..2d1a87dac 100644 --- a/modules/pdp11/lib/defines.js +++ b/modules/pdp11/lib/defines.js @@ -364,11 +364,11 @@ var PDP11 = { * is enabled, the top 5 bits of an address select one of the 31 mapping registers, and the bottom 13 bits * are then added to the contents of the selected mapping register. * - * ES6 ALERT: By using octal constants, this is the first place I'm dipping my toe into ECMAScript 6 waters. - * If you're loading this raw source code into your browser, then by now (2016) you're almost certainly using - * an ES6-aware browser. Everyone else should be using code compiled by Google's Closure Compiler, which - * we configure to produce code that's backward-compatible with ES5 (for example, octal constants are - * converted to decimal values). + * ES6 ALERT: By using octal constants, I'm finally dipping my toe into ES6 (aka ECMAScript 2015) waters. + * You'll even see a few binary constants below, too. If you're loading this raw source code into your browser, + * then by now (2016) you're almost certainly using an ES6-aware browser. Production sites should be using code + * compiled by Google's Closure Compiler, which we configure to produce code that's backward-compatible with ES5 + * (for example, all binary, octal, and hex constants are converted to decimal values). * * For more details: https://github.com/google/closure-compiler/wiki/ECMAScript6 */ @@ -498,22 +498,22 @@ var PDP11 = { UDPAR6: 0o177674, // User D Page Address Register 6 UDPAR7: 0o177676, // User D Page Address Register 7 - R0SET0: 0o177700, - R1SET0: 0o177701, - R2SET0: 0o177702, - R3SET0: 0o177703, - R4SET0: 0o177704, - R5SET0: 0o177705, - R6KERNEL: 0o177706, - R7KERNEL: 0o177707, - R0SET1: 0o177710, - R1SET1: 0o177711, - R2SET1: 0o177712, - R3SET1: 0o177713, - R4SET1: 0o177714, - R5SET1: 0o177715, - R6SUPER: 0o177716, - R6USER: 0o177717, + R0SET0: 0o177700, // + R1SET0: 0o177701, // + R2SET0: 0o177702, // + R3SET0: 0o177703, // + R4SET0: 0o177704, // + R5SET0: 0o177705, // + R6KERNEL: 0o177706, // + R7KERNEL: 0o177707, // + R0SET1: 0o177710, // + R1SET1: 0o177711, // + R2SET1: 0o177712, // + R3SET1: 0o177713, // + R4SET1: 0o177714, // + R5SET1: 0o177715, // + R6SUPER: 0o177716, // + R6USER: 0o177717, // /* * This next group of registers is largely ignored; all accesses are routed to regsControl[], diff --git a/modules/pdp11/lib/panel.js b/modules/pdp11/lib/panel.js index 2000b2e39..3d4133380 100644 --- a/modules/pdp11/lib/panel.js +++ b/modules/pdp11/lib/panel.js @@ -655,7 +655,7 @@ PanelPDP11.prototype.processContinue = function(value, index) var dbg = this.dbg; if (dbg && !dbg.isBusy(true)) { dbg.setBusy(true); - dbg.stepCPU(0); + dbg.stepCPU(0, null); dbg.setBusy(false); } else {