Fixed MMR1/MMR2 updates, and synced boot monitor code with http://skn.noip.me/pdp11/boot.mac

This commit is contained in:
Jeff 2016-11-15 16:16:38 -08:00 committed by Jeff Parsons
commit 9d67f243ef
9 changed files with 1401 additions and 809 deletions

View file

@ -1,8 +1,9 @@
{"load":0xC000/*140000*/,"exec":0xC000/*140000*/, {"load":0xC000/*140000*/,
"exec":0xC000/*140000*/,
"words":[ "words":[
0x0005/*000005*/,0x0A1F/*005037*/,0xFFFE/*177776*/,0x15C6/*012706*/,0xC000/*140000*/,0x0A1F/*005037*/,0xFF74/*177564*/,0x15C0/*012700*/, 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*/, 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*/,0xC269/*141151*/,0x09F7/*004767*/,0x0038/*000070*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 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*/, 0x10E6/*010346*/,0x1126/*010446*/,0x15C0/*012700*/,0xC224/*141044*/,0x09F7/*004767*/,0xFF0C/*177414*/,0xB5DF/*132737*/,0x0040/*000100*/,
0xFF74/*177564*/,0x02FC/*001374*/,0x0A04/*005004*/,0x15C3/*012703*/,0xC223/*141043*/,0x94C0/*112300*/,0x0319/*001431*/,0x1DC2/*016702*/, 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*/, 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*/,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*/, 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*/, 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*/, 0xC5AE/*142656*/,0xC2C4/*141304*/,0xC2D0/*141320*/,0xC316/*141426*/,0xC47A/*142172*/,0xC2BA/*141272*/,0x4F43/*047503*/,0x4D4D/*046515*/,
0x5344/*051504*/,0x4120/*040440*/,0x4552/*042522*/,0x4220/*041040*/,0x4F4F/*047517*/,0x2C54/*026124*/,0x4820/*044040*/,0x4C41/*046101*/, 0x4E41/*047101*/,0x5344/*051504*/,0x4120/*040440*/,0x4552/*042522*/,0x4220/*041040*/,0x4F4F/*047517*/,0x2C54/*026124*/,0x4820/*044040*/,
0x2C54/*026124*/,0x4C20/*046040*/,0x4749/*043511*/,0x5448/*052110*/,0x2C53/*026123*/,0x5420/*052040*/,0x5345/*051505*/,0x2054/*020124*/, 0x4C41/*046101*/,0x2C54/*026124*/,0x5420/*052040*/,0x5345/*051505*/,0x2C54/*026124*/,0x4420/*042040*/,0x4149/*040511*/,0x2C47/*026107*/,
0x4E41/*047101*/,0x2044/*020104*/,0x4548/*042510*/,0x504C/*050114*/,0x0A0D/*005015*/,0x4F42/*047502*/,0x544F/*052117*/,0x4420/*042040*/, 0x4C20/*046040*/,0x4749/*043511*/,0x5448/*052110*/,0x2053/*020123*/,0x4E41/*047101*/,0x2044/*020104*/,0x4548/*042510*/,0x504C/*050114*/,
0x5645/*053105*/,0x4349/*041511*/,0x5345/*051505*/,0x4120/*040440*/,0x4552/*042522*/,0x5220/*051040*/,0x3F4B/*037513*/,0x5220/*051040*/, 0x0A0D/*005015*/,0x4F42/*047502*/,0x544F/*052117*/,0x4420/*042040*/,0x5645/*053105*/,0x4349/*041511*/,0x5345/*051505*/,0x4120/*040440*/,
0x3F4C/*037514*/,0x4F20/*047440*/,0x2052/*020122*/,0x5052/*050122*/,0x0D3F/*006477*/,0x000A/*000012*/,0x0A0D/*005015*/,0x0800/*004000*/, 0x4552/*042522*/,0x5220/*051040*/,0x3F4B/*037513*/,0x5220/*051040*/,0x3F4C/*037514*/,0x4F20/*047440*/,0x2052/*020122*/,0x5052/*050122*/,
0x0820/*004040*/,0x4200/*041000*/,0x4F4F/*047517*/,0x0054/*000124*/,0x4148/*040510*/,0x544C/*052114*/,0x5400/*052000*/,0x5345/*051505*/, 0x0D3F/*006477*/,0x000A/*000012*/,0x0A0D/*005015*/,0x0800/*004000*/,0x0820/*004040*/,0x4200/*041000*/,0x4F4F/*047517*/,0x0054/*000124*/,
0x0054/*000124*/,0x494C/*044514*/,0x4847/*044107*/,0x5354/*051524*/,0x4800/*044000*/,0x4C45/*046105*/,0x0050/*000120*/,0x5500/*052400*/, 0x4148/*040510*/,0x544C/*052114*/,0x5400/*052000*/,0x5345/*051505*/,0x0054/*000124*/,0x4944/*044504*/,0x4741/*043501*/,0x4C00/*046000*/,
0x4B4E/*045516*/,0x4F4E/*047516*/,0x4E57/*047127*/,0x4320/*041440*/,0x4D4F/*046517*/,0x414D/*040515*/,0x444E/*042116*/,0x0D0A/*006412*/, 0x4749/*043511*/,0x5448/*052110*/,0x0053/*000123*/,0x4548/*042510*/,0x504C/*050114*/,0x0000/*000000*/,0x4E55/*047125*/,0x4E4B/*047113*/,
0x5000/*050000*/,0x5044/*050104*/,0x312D/*030455*/,0x2031/*020061*/,0x4F4D/*047515*/,0x494E/*044516*/,0x4F54/*047524*/,0x2052/*020122*/, 0x574F/*053517*/,0x204E/*020116*/,0x4F43/*047503*/,0x4D4D/*046515*/,0x4E41/*047101*/,0x0A44/*005104*/,0x000D/*000015*/,0x4450/*042120*/,
0x3156/*030526*/,0x302E/*030056*/,0x0D0A/*006412*/,0x0D0A/*006412*/,0x4200/*041000*/,0x4F4F/*047517*/,0x3E54/*037124*/,0x0020/*000040*/, 0x2D50/*026520*/,0x3131/*030461*/,0x4D20/*046440*/,0x4E4F/*047117*/,0x5449/*052111*/,0x524F/*051117*/,0x5620/*053040*/,0x2E31/*027061*/,
0x4E55/*047125*/,0x4E4B/*047113*/,0x574F/*053517*/,0x204E/*020116*/,0x4F42/*047502*/,0x544F/*052117*/,0x4420/*042040*/,0x5645/*053105*/, 0x0A30/*005060*/,0x0A0D/*005015*/,0x000D/*000015*/,0x4F42/*047502*/,0x544F/*052117*/,0x203E/*020076*/,0x5500/*052400*/,0x4B4E/*045516*/,
0x4349/*041511*/,0x0A45/*005105*/,0x000D/*000015*/,0x2020/*020040*/,0x2020/*020040*/,0x2020/*020040*/,0x4C43/*046103*/,0x434F/*041517*/, 0x4F4E/*047516*/,0x4E57/*047127*/,0x4220/*041040*/,0x4F4F/*047517*/,0x2054/*020124*/,0x4544/*042504*/,0x4956/*044526*/,0x4543/*042503*/,
0x204B/*020113*/,0x4954/*044524*/,0x4B43/*045503*/,0x0A53/*005123*/,0x000D/*000015*/,0x15C0/*012700*/,0xC1CA/*140712*/,0x09F7/*004767*/, 0x0D0A/*006412*/,0x2000/*020000*/,0x2020/*020040*/,0x2020/*020040*/,0x4320/*041440*/,0x4F4C/*047514*/,0x4B43/*045503*/,0x5420/*052040*/,
0xFDC6/*176706*/,0x0087/*000207*/,0x0000/*000000*/,0x15C0/*012700*/,0xC21C/*141034*/,0x09F7/*004767*/,0xFDBA/*176672*/,0x0087/*000207*/, 0x4349/*041511*/,0x534B/*051513*/,0x0D0A/*006412*/,0x2000/*020000*/,0x2020/*020040*/,0x2020/*020040*/,0x4920/*044440*/,0x4554/*042524*/,
0x0A37/*005067*/,0xFD9E/*176636*/,0x15C5/*012705*/,0x1A00/*015000*/,0x115F/*010537*/,0xFF78/*177570*/,0x1144/*010504*/,0x0C84/*006204*/, 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*/, 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*/, 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*/, 0xFD56/*176526*/,0x0087/*000207*/,0x0000/*000000*/,0x0A37/*005067*/,0xFFFA/*177772*/,0x0A37/*005067*/,0xFD34/*176464*/,0x0A05/*005005*/,
0x10F1/*010361*/,0xF4C0/*172300*/,0x10B1/*010261*/,0xF4E0/*172340*/,0x10F1/*010361*/,0xF4D0/*172320*/,0x10B1/*010261*/,0xF4F0/*172360*/, 0x8104/*100404*/,0x8503/*102403*/,0x8202/*101002*/,0x0501/*002401*/,0x8301/*101401*/,0x0000/*000000*/,0x0AC5/*005305*/,0x8003/*100003*/,
0x10F1/*010361*/,0xF480/*172200*/,0x10B1/*010261*/,0xF4A0/*172240*/,0x10F1/*010361*/,0xF490/*172220*/,0x10B1/*010261*/,0xF4B0/*172260*/, 0x0302/*001402*/,0x0401/*002001*/,0x0701/*003401*/,0x0000/*000000*/,0x0C05/*006005*/,0x8402/*102002*/,0x8601/*103001*/,0x0201/*001001*/,
0x10F1/*010361*/,0xFF80/*177600*/,0x10B1/*010261*/,0xFFA0/*177640*/,0x10F1/*010361*/,0xFF90/*177620*/,0x10F1/*010361*/,0xFFB0/*177660*/, 0x0000/*000000*/,0x95DF/*112737*/,0x000F/*000017*/,0xFFFE/*177776*/,0x8004/*100004*/,0x8403/*102003*/,0x0502/*002402*/,0x8201/*101001*/,
0x65C2/*062702*/,0x0080/*000200*/,0x65C1/*062701*/,0x0002/*000002*/,0x7E1D/*077035*/,0x55DF/*052737*/,0xFC00/*176000*/,0xF4FE/*172376*/, 0x8101/*100401*/,0x0000/*000000*/,0x15C3/*012703*/,0x7FFF/*077777*/,0x65C3/*062703*/,0x7FFF/*077777*/,0xA7D7/*123727*/,0xFFFE/*177776*/,
0x55DF/*052737*/,0xFC00/*176000*/,0xF4BE/*172276*/,0x55DF/*052737*/,0xFC00/*176000*/,0xFFBE/*177676*/,0x15DF/*012737*/,0x003F/*000077*/, 0x0005/*000005*/,0x0201/*001001*/,0x0000/*000000*/,0x95C4/*112704*/,0x03C0/*001700*/,0x8003/*100003*/,0x2117/*020427*/,0xFFC0/*177700*/,
0xF54E/*172516*/,0x15DF/*012737*/,0x0001/*000001*/,0xFF7A/*177572*/,0x15DF/*012737*/,0x03C0/*001700*/,0xF4A4/*172244*/,0x15DF/*012737*/, 0x0301/*001401*/,0x0000/*000000*/,0x8A04/*105004*/,0x2117/*020427*/,0xFF00/*177400*/,0x0301/*001401*/,0x0000/*000000*/,0x15C5/*012705*/,
0x03C0/*001700*/,0xF4B4/*172264*/,0x15DF/*012737*/,0x1000/*010000*/,0xFFFE/*177776*/,0x15C3/*012703*/,0x4080/*040200*/,0x15C2/*012702*/, 0xAAAA/*125252*/,0x1140/*010500*/,0x1001/*010001*/,0x1042/*010102*/,0x1083/*010203*/,0x10C4/*010304*/,0x1105/*010405*/,0xE141/*160501*/,
0xC384/*141604*/,0x14A6/*012246*/,0x0D93/*006623*/,0x2097/*020227*/,0xC428/*142050*/,0x87FB/*103773*/,0x15F7/*012767*/,0x4080/*040200*/, 0x0501/*002401*/,0x0301/*001401*/,0x0000/*000000*/,0x0C42/*006102*/,0x8601/*103001*/,0x0501/*002401*/,0x0000/*000000*/,0x6083/*060203*/,
0xFCCE/*176316*/,0x0087/*000207*/,0x15C0/*012700*/,0x001F/*000037*/,0x15C1/*012701*/,0xF800/*174000*/,0x35DF/*032737*/,0x0001/*000001*/, 0x0A83/*005203*/,0x0A43/*005103*/,0x60C1/*060301*/,0x8701/*103401*/,0x0701/*003401*/,0x0000/*000000*/,0x0C04/*006004*/,0x5103/*050403*/,
0xFF78/*177570*/,0x030C/*001414*/,0x15C0/*012700*/,0x0F0F/*007417*/,0x1001/*010001*/,0x0A41/*005101*/,0x35DF/*032737*/,0x0002/*000002*/, 0x6143/*060503*/,0x0A83/*005203*/,0x8702/*103402*/,0x0AC1/*005301*/,0x0501/*002401*/,0x0000/*000000*/,0x0A40/*005100*/,0x8301/*101401*/,
0xFF78/*177570*/,0x0304/*001404*/,0x15C0/*012700*/,0x3C73/*036163*/,0x15C1/*012701*/,0x3E00/*037000*/,0x1042/*010102*/,0xE5C2/*162702*/, 0x0000/*000000*/,0x4001/*040001*/,0x6041/*060101*/,0x0601/*003001*/,0x0701/*003401*/,0x0000/*000000*/,0x00C1/*000301*/,0x2057/*020127*/,
0x0002/*000002*/,0x45C2/*042702*/,0x0001/*000001*/,0x1083/*010203*/,0x45C3/*042703*/,0xFFC1/*177701*/,0x15F3/*012763*/,0x0001/*000001*/, 0x5455/*052125*/,0x0204/*001004*/,0x3105/*030405*/,0x0602/*003002*/,0x0A45/*005105*/,0x0201/*001001*/,0x0000/*000000*/,0x95C0/*112700*/,
0x4000/*040000*/,0x65C3/*062703*/,0x0002/*000002*/,0x15F3/*012763*/,0x004B/*000113*/,0x4000/*040000*/,0x1084/*010204*/,0x7517/*072427*/, 0xFF01/*177401*/,0x8001/*100001*/,0x0000/*000000*/,0x7E02/*077002*/,0x0A01/*005001*/,0x0A81/*005201*/,0x7E02/*077002*/,0x0BC0/*005700*/,
0xFFFA/*177772*/,0x45C4/*042704*/,0xFF80/*177600*/,0x15C5/*012705*/,0x03C0/*001700*/,0xE105/*160405*/,0x1084/*010204*/,0x7517/*072427*/, 0x0202/*001002*/,0x0BC1/*005701*/,0x0301/*001401*/,0x0000/*000000*/,0x15C7/*012707*/,0xC3FE/*141776*/,0x0000/*000000*/,0x0BD7/*005727*/,
0xFFF4/*177764*/,0x45C4/*042704*/,0xFFF1/*177761*/,0x1174/*010564*/,0xF4A0/*172240*/,0x1043/*010103*/,0x74D7/*072327*/,0xFFF4/*177764*/, 0x0000/*000000*/,0x15E6/*012746*/,0xC40A/*142012*/,0x0087/*000207*/,0x0000/*000000*/,0x0A26/*005046*/,0x15E6/*012746*/,0xC414/*142024*/,
0x45C3/*042703*/,0xFFF1/*177761*/,0x20C4/*020304*/,0x030A/*001412*/,0x1044/*010104*/,0x7517/*072427*/,0xFFFA/*177772*/,0x45C4/*042704*/, 0x0002/*000002*/,0x0000/*000000*/,0x005F/*000137*/,0xC41A/*142032*/,0x0000/*000000*/,0x15C5/*012705*/,0x0003/*000003*/,0x0A1F/*005037*/,
0xFF80/*177600*/,0x15C5/*012705*/,0x03C0/*001700*/,0xE105/*160405*/,0x1173/*010563*/,0xF4A0/*172240*/,0x15C4/*012704*/,0x0003/*000003*/, 0x0006/*000006*/,0x15DF/*012737*/,0xC42C/*142054*/,0x0004/*000004*/,0x0BE5/*005745*/,0x0000/*000000*/,0x65C6/*062706*/,0x0004/*000004*/,
0x67C4/*063704*/,0xFF78/*177570*/,0x15C3/*012703*/,0x0002/*000002*/,0x61C3/*060703*/,0x004A/*000112*/,0x7F02/*077402*/,0x1002/*010002*/, 0x0A00/*005000*/,0x15C1/*012701*/,0x0FFF/*007777*/,0x1002/*010002*/,0x65C2/*062702*/,0x0005/*000005*/,0x2432/*022062*/,0xFFFB/*177773*/,
0x0C02/*006002*/,0x0C41/*006101*/,0x0C00/*006000*/,0x01C2/*000702*/,0x0A03/*005003*/,0x9481/*112201*/,0x0365/*001545*/,0xA057/*120127*/, 0x0302/*001402*/,0x0000/*000000*/,0x0000/*000000*/,0x7E49/*077111*/,0x0AB7/*005267*/,0xFEC8/*177310*/,0x8601/*103001*/,0x0000/*000000*/,
0x0020/*000040*/,0x03FB/*001773*/,0xA057/*120127*/,0x0052/*000122*/,0x0305/*001405*/,0x15C0/*012700*/,0xC270/*141160*/,0x09F7/*004767*/, 0x2DD7/*026727*/,0xFBFE/*175776*/,0x0480/*002200*/,0x8202/*101002*/,0x0077/*000167*/,0xFEC2/*177302*/,0x15C0/*012700*/,0xC2AC/*141254*/,
0xFC26/*176046*/,0x0087/*000207*/,0x9481/*112201*/,0x9480/*112200*/,0x030E/*001416*/,0xA017/*120027*/,0x0020/*000040*/,0x030B/*001413*/, 0x1DC3/*016703*/,0xFEB0/*177260*/,0x0A02/*005002*/,0x7297/*071227*/,0x0008/*000010*/,0x65C3/*062703*/,0x0030/*000060*/,0x90E0/*110340*/,
0xA017/*120027*/,0x0037/*000067*/,0x0619/*003031*/,0xE5C0/*162700*/,0x0030/*000060*/,0x0516/*002426*/,0x0CC3/*006303*/,0x0CC3/*006303*/, 0x1083/*010203*/,0x02F8/*001370*/,0x09F7/*004767*/,0xFBF0/*175760*/,0x0087/*000207*/,0x15C3/*012703*/,0x7F06/*077406*/,0x0A02/*005002*/,
0x0CC3/*006303*/,0x5003/*050003*/,0x01F0/*000760*/,0x0A02/*005002*/,0x15D2/*012722*/,0x005F/*000137*/,0x15D2/*012722*/,0xC000/*140000*/, 0x0A01/*005001*/,0x15C0/*012700*/,0x0008/*000010*/,0x10F1/*010361*/,0xF4C0/*172300*/,0x10B1/*010261*/,0xF4E0/*172340*/,0x10F1/*010361*/,
0x15D2/*012722*/,0xC000/*140000*/,0x0A12/*005022*/,0xA057/*120127*/,0x004B/*000113*/,0x033E/*001476*/,0xA057/*120127*/,0x004C/*000114*/, 0xF4D0/*172320*/,0x10B1/*010261*/,0xF4F0/*172360*/,0x10F1/*010361*/,0xF480/*172200*/,0x10B1/*010261*/,0xF4A0/*172240*/,0x10F1/*010361*/,
0x0308/*001410*/,0xA057/*120127*/,0x0050/*000120*/,0x034F/*001517*/,0x15C0/*012700*/,0xC23F/*141077*/,0x09F7/*004767*/,0xFBD8/*175730*/, 0xF490/*172220*/,0x10B1/*010261*/,0xF4B0/*172260*/,0x10F1/*010361*/,0xFF80/*177600*/,0x10B1/*010261*/,0xFFA0/*177640*/,0x10F1/*010361*/,
0x0087/*000207*/,0x0005/*000005*/,0x00C3/*000303*/,0x15C1/*012701*/,0xF900/*174400*/,0x15F1/*012761*/,0x000B/*000013*/,0x0004/*000004*/, 0xFF90/*177620*/,0x10F1/*010361*/,0xFFB0/*177660*/,0x65C2/*062702*/,0x0080/*000200*/,0x65C1/*062701*/,0x0002/*000002*/,0x7E1D/*077035*/,
0x55C3/*052703*/,0x0004/*000004*/,0x10C9/*010311*/,0x8BC9/*105711*/,0x80FE/*100376*/,0x8A03/*105003*/,0x55C3/*052703*/,0x0008/*000010*/, 0x55DF/*052737*/,0xFC00/*176000*/,0xF4FE/*172376*/,0x55DF/*052737*/,0xFC00/*176000*/,0xF4BE/*172276*/,0x55DF/*052737*/,0xFC00/*176000*/,
0x10C9/*010311*/,0x8BC9/*105711*/,0x80FE/*100376*/,0x1C42/*016102*/,0x0006/*000006*/,0x45C2/*042702*/,0x003F/*000077*/,0x0A82/*005202*/, 0xFFBE/*177676*/,0x15DF/*012737*/,0x003F/*000077*/,0xF54E/*172516*/,0x15DF/*012737*/,0x0001/*000001*/,0xFF7A/*177572*/,0x15DF/*012737*/,
0x10B1/*010261*/,0x0004/*000004*/,0x8A03/*105003*/,0x55C3/*052703*/,0x0006/*000006*/,0x10C9/*010311*/,0x8BC9/*105711*/,0x80FE/*100376*/, 0x03C0/*001700*/,0xF4A4/*172244*/,0x15DF/*012737*/,0x03C0/*001700*/,0xF4B4/*172264*/,0x15DF/*012737*/,0x1000/*010000*/,0xFFFE/*177776*/,
0x0A31/*005061*/,0x0002/*000002*/,0x0A31/*005061*/,0x0004/*000004*/,0x15F1/*012761*/,0xFE00/*177000*/,0x0006/*000006*/,0x8A03/*105003*/, 0x15C3/*012703*/,0x4080/*040200*/,0x15C2/*012702*/,0xC50A/*142412*/,0x14A6/*012246*/,0x0D93/*006623*/,0x2097/*020227*/,0xC5AE/*142656*/,
0x55C3/*052703*/,0x000C/*000014*/,0x10C9/*010311*/,0x8BC9/*105711*/,0x80FE/*100376*/,0x45C9/*042711*/,0x00FF/*000377*/,0x0A02/*005002*/, 0x87FB/*103773*/,0x15F7/*012767*/,0x4080/*040200*/,0xFB48/*175510*/,0x0087/*000207*/,0x15C0/*012700*/,0x001F/*000037*/,0x15C1/*012701*/,
0x0A03/*005003*/,0x0A04/*005004*/,0x0A05/*005005*/,0x0A07/*005007*/,0x0005/*000005*/,0x00C3/*000303*/,0x0CC3/*006303*/,0x0CC3/*006303*/, 0xF800/*174000*/,0x35DF/*032737*/,0x0001/*000001*/,0xFF78/*177570*/,0x030C/*001414*/,0x15C0/*012700*/,0x0F0F/*007417*/,0x1001/*010001*/,
0x0CC3/*006303*/,0x0CC3/*006303*/,0x0CC3/*006303*/,0x15C1/*012701*/,0xFF0A/*177412*/,0x10C9/*010311*/,0x0A21/*005041*/,0x15E1/*012741*/, 0x0A41/*005101*/,0x35DF/*032737*/,0x0002/*000002*/,0xFF78/*177570*/,0x0304/*001404*/,0x15C0/*012700*/,0x3C73/*036163*/,0x15C1/*012701*/,
0xFE00/*177000*/,0x15E1/*012741*/,0x0005/*000005*/,0x0A02/*005002*/,0x0A03/*005003*/,0x0A04/*005004*/,0x0A05/*005005*/,0x8BC9/*105711*/, 0x3E00/*037000*/,0x1042/*010102*/,0xE5C2/*162702*/,0x0002/*000002*/,0x45C2/*042702*/,0x0001/*000001*/,0x1083/*010203*/,0x45C3/*042703*/,
0x80FE/*100376*/,0x8A09/*105011*/,0x0A07/*005007*/,0x0005/*000005*/,0x15C1/*012701*/,0xFDC0/*176700*/,0x15F1/*012761*/,0x0020/*000040*/, 0xFFC1/*177701*/,0x15F3/*012763*/,0x0001/*000001*/,0x4000/*040000*/,0x65C3/*062703*/,0x0002/*000002*/,0x15F3/*012763*/,0x004B/*000113*/,
0x0008/*000010*/,0x10F1/*010361*/,0x0008/*000010*/,0x15C9/*012711*/,0x0011/*000021*/,0x15F1/*012761*/,0x1000/*010000*/,0x001A/*000032*/, 0x4000/*040000*/,0x1084/*010204*/,0x7517/*072427*/,0xFFFA/*177772*/,0x45C4/*042704*/,0xFF80/*177600*/,0x15C5/*012705*/,0x03C0/*001700*/,
0x15F1/*012761*/,0xFE00/*177000*/,0x0002/*000002*/,0x0A31/*005061*/,0x0004/*000004*/,0x0A31/*005061*/,0x0006/*000006*/,0x0A31/*005061*/, 0xE105/*160405*/,0x1084/*010204*/,0x7517/*072427*/,0xFFF4/*177764*/,0x45C4/*042704*/,0xFFF1/*177761*/,0x1174/*010564*/,0xF4A0/*172240*/,
0x001C/*000034*/,0x15C9/*012711*/,0x0039/*000071*/,0x8BC9/*105711*/,0x80FE/*100376*/,0x8A09/*105011*/,0x10C0/*010300*/,0x0A07/*005007*/] 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*/]
} }

View file

@ -174,13 +174,14 @@ CMD:
RTI RTI
CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP
HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> 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 EOL: .BYTE 15,12,0
DEL: .BYTE 10,40,10,0 DEL: .BYTE 10,40,10,0
CMDLST: .ASCIZ 'BOOT' CMDLST: .ASCIZ 'BOOT'
.ASCIZ 'HALT' .ASCIZ 'HALT'
.ASCIZ 'TEST' .ASCIZ 'TEST'
.ASCIZ 'DIAG'
.ASCIZ 'LIGHTS' .ASCIZ 'LIGHTS'
.ASCIZ 'HELP' .ASCIZ 'HELP'
.BYTE 0 .BYTE 0
@ -190,6 +191,7 @@ BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15>
PROMPT: .ASCIZ 'BOOT> ' PROMPT: .ASCIZ 'BOOT> '
BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
LOOMSG: .ASCIZ ' ITERATIONS'<12><15>
.EVEN .EVEN
@ -236,6 +238,179 @@ TEST:
JSR PC,PRINT JSR PC,PRINT
RTS PC 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 MMR0=177572
MMR1=177574 MMR1=177574

View file

@ -16,13 +16,13 @@
16 140002 005037 177776 CLR @#PSW 16 140002 005037 177776 CLR @#PSW
17 140006 012706 140000 MOV #START,SP 17 140006 012706 140000 MOV #START,SP
18 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR 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 20 140022 004767 140150' JSR PC,PRINT
21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC 21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC
22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2 22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2
23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING 23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING
24 24
25 140050 012700 141151 MOV #PROMPT,R0 25 140050 012700 141166 MOV #PROMPT,R0
26 140054 004767 140150' JSR PC,PRINT 26 140054 004767 140150' JSR PC,PRINT
27 140060 162706 000256 SUB #256,SP 27 140060 162706 000256 SUB #256,SP
28 140064 010600 MOV SP,R0 28 140064 010600 MOV SP,R0
@ -92,7 +92,7 @@
92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER? 92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER?
93 140334 001406 BEQ 3$ 93 140334 001406 BEQ 3$
94 140336 005367 140242' DEC LENGTH ; LENGTH 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 96 140346 004767 140150' JSR PC,PRINT
97 140352 000453 3$: BR 9$ 97 140352 000453 3$: BR 9$
98 140354 120027 000040 4$: CMPB R0,#40 98 140354 120027 000040 4$: CMPB R0,#40
@ -130,12 +130,12 @@
130 140516 010246 MOV R2,-(SP) 130 140516 010246 MOV R2,-(SP)
131 140520 010346 MOV R3,-(SP) 131 140520 010346 MOV R3,-(SP)
132 140522 010446 MOV R4,-(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 134 140530 004767 140150' JSR PC,PRINT
135 140534 132737 000100 177564 1$: BITB #100,@#177564 135 140534 132737 000100 177564 1$: BITB #100,@#177564
136 140542 001374 BNE 1$ 136 140542 001374 BNE 1$
137 140544 005004 CLR R4 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 139 140552 112300 3$: MOVB (R3)+,R0
140 140554 001431 BEQ 13$ 140 140554 001431 BEQ 13$
141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD 141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD
@ -160,11 +160,11 @@
160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE 160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE
161 140636 000404 BR 15$ 161 140636 000404 BR 15$
162 162
163 140640 012700 141077 13$: MOV #UNKMSG,R0 163 140640 012700 141114 13$: MOV #UNKMSG,R0
164 140644 004767 140150' JSR PC,PRINT 164 140644 004767 140150' JSR PC,PRINT
165 165
166 140650 005067 140242' 15$: CLR LENGTH 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 168 140660 004767 140150' JSR PC,PRINT
169 140664 012604 MOV (SP)+,R4 169 140664 012604 MOV (SP)+,R4
170 140666 012603 MOV (SP)+,R3 170 140666 012603 MOV (SP)+,R3
@ -174,360 +174,544 @@
174 140676 000002 RTI 174 140676 000002 RTI
175 175
176 176
177 140700 142050 141244 141260 CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP 177 140700 142656 141304 141320 CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP
140706 141364 141232 140706 141426 142172 141272
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> 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>
140715 115 101 116 140717 115 101 116
140720 104 123 040 140722 104 123 040
140723 101 122 105 140725 101 122 105
140726 040 102 117 140730 040 102 117
140731 117 124 054 140733 117 124 054
140734 040 110 101 140736 040 110 101
140737 114 124 054 140741 114 124 054
140742 040 114 111 140744 040 124 105
140745 107 110 124 140747 123 124 054
140750 123 054 040 140752 040 104 111
140753 124 105 123 140755 101 107 054
140756 124 040 101 140760 040 114 111
140761 116 104 040 140763 107 110 124
140764 110 105 114 140766 123 040 101
140767 120 015 012 140771 116 104 040
140772 102 117 117 140774 110 105 114
140775 124 040 104 140777 120 015 012
141000 105 126 111 141002 102 117 117
141003 103 105 123 141005 124 040 104
141006 040 101 122 141010 105 126 111
141011 105 040 122 141013 103 105 123
141014 113 077 040 141016 040 101 122
141017 122 114 077 141021 105 040 122
141022 040 117 122 141024 113 077 040
141025 040 122 120 141027 122 114 077
141030 077 015 012 141032 040 117 122
141033 000 141035 040 122 120
179 141034 015 012 000 EOL: .BYTE 15,12,0 141040 077 015 012
180 141037 010 040 010 DEL: .BYTE 10,40,10,0 141043 000
141042 000 179 141044 015 012 000 EOL: .BYTE 15,12,0
181 141043 102 117 117 CMDLST: .ASCIZ 'BOOT' 180 141047 010 040 010 DEL: .BYTE 10,40,10,0
141046 124 000 141052 000
182 141050 110 101 114 .ASCIZ 'HALT' 181 141053 102 117 117 CMDLST: .ASCIZ 'BOOT'
141053 124 000 141056 124 000
183 141055 124 105 123 .ASCIZ 'TEST' 182 141060 110 101 114 .ASCIZ 'HALT'
141060 124 000 141063 124 000
184 141062 114 111 107 .ASCIZ 'LIGHTS' 183 141065 124 105 123 .ASCIZ 'TEST'
141065 110 124 123 141070 124 000
141070 000 184 141072 104 111 101 .ASCIZ 'DIAG'
185 141071 110 105 114 .ASCIZ 'HELP' 141075 107 000
141074 120 000 185 141077 114 111 107 .ASCIZ 'LIGHTS'
186 141076 000 .BYTE 0 141102 110 124 123
187 141077 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> 141105 000
141102 116 117 127 186 141106 110 105 114 .ASCIZ 'HELP'
141105 116 040 103 141111 120 000
141110 117 115 115 187 141113 000 .BYTE 0
141113 101 116 104 188 141114 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
141116 012 015 000 141117 116 117 127
188 141121 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> 141122 116 040 103
141124 055 061 061 141125 117 115 115
141127 040 115 117 141130 101 116 104
141132 116 111 124 141133 012 015 000
141135 117 122 040 189 141136 120 104 120 BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15>
141140 126 061 056 141141 055 061 061
141143 060 012 015 141144 040 115 117
141146 012 015 000 141147 116 111 124
189 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15> 141152 117 122 040
190 141151 102 117 117 PROMPT: .ASCIZ 'BOOT> ' 141155 126 061 056
141154 124 076 040 141160 060 012 015
141157 000 141163 012 015 000
191 141160 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> 190 ; 'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15>
141163 116 117 127 191 141166 102 117 117 PROMPT: .ASCIZ 'BOOT> '
141166 116 040 102 141171 124 076 040
141171 117 117 124 141174 000
141174 040 104 105 192 141175 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
141177 126 111 103 141200 116 117 127
141202 105 012 015 141203 116 040 102
141205 000 141206 117 117 124
192 141206 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> 141211 040 104 105
141211 040 040 040 141214 126 111 103
141214 103 114 117 141217 105 012 015
141217 103 113 040 141222 000
141222 124 111 103 193 141223 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
141225 113 123 012 141226 040 040 040
141230 015 000 141231 103 114 117
193 141234 103 113 040
194 .EVEN 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 195
196 HELP: 196 .EVEN
197 141232 012700 140712 MOV #HLPMSG,R0 197
198 141236 004767 140150' JSR PC,PRINT 198 HELP:
199 141242 000207 RTS PC 199 141272 012700 140714 MOV #HLPMSG,R0
200 200 141276 004767 140150' JSR PC,PRINT
201 HALT: 201 141302 000207 RTS PC
202 141244 000000 HALT 202
203 141246 012700 141034 MOV #EOL,R0 203 HALT:
204 141252 004767 140150' JSR PC,PRINT 204 141304 000000 HALT
205 141256 000207 RTS PC 205 141306 012700 141044 MOV #EOL,R0
206 206 141312 004767 140150' JSR PC,PRINT
207 TEST: 207 141316 000207 RTS PC
208 141260 005067 140122' CLR CLKTIC 208
209 209 TEST:
210 141264 012705 015000 MOV #15000,R5 210 141320 005067 140122' CLR CLKTIC
211 141270 010537 177570 10$: MOV R5,@#177570 ; DISPLAY 211
212 141274 010504 MOV R5,R4 212 141324 012705 015000 MOV #15000,R5
213 141276 006204 ASR R4 213 141330 010537 177570 10$: MOV R5,@#177570 ; DISPLAY
214 141300 005000 15$: CLR R0 214 141334 010504 MOV R5,R4
215 141302 010501 MOV R5,R1 215 141336 006204 ASR R4
216 141304 071004 DIV R4,R0 216 141340 005000 15$: CLR R0
217 141306 010002 MOV R0,R2 217 141342 010501 MOV R5,R1
218 141310 070204 MUL R4,R2 218 141344 071004 DIV R4,R0
219 141312 060301 ADD R3,R1 219 141346 010002 MOV R0,R2
220 141314 020105 CMP R1,R5 220 141350 070204 MUL R4,R2
221 141316 001401 BEQ 20$ 221 141352 060301 ADD R3,R1
222 141320 000000 HALT 222 141354 020105 CMP R1,R5
223 141322 077412 20$: SOB R4,15$ 223 141356 001401 BEQ 20$
224 141324 077517 SOB R5,10$ 224 141360 000000 HALT
225 225 141362 077412 20$: SOB R4,15$
226 141326 012700 141213 MOV #PERMSG+5,R0 226 141364 077517 SOB R5,10$
227 141332 016703 140122' MOV CLKTIC,R3 227
228 228 141366 012700 141230 MOV #PERMSG+5,R0
229 141336 005002 25$: CLR R2 229 141372 016703 140122' MOV CLKTIC,R3
230 141340 071227 000010 DIV #10,R2 230
231 141344 062703 000060 ADD #'0,R3 231 141376 005002 25$: CLR R2
232 141350 110340 MOVB R3,-(R0) 232 141400 071227 000010 DIV #10,R2
233 141352 010203 MOV R2,R3 233 141404 062703 000060 ADD #'0,R3
234 141354 001370 BNE 25$ 234 141410 110340 MOVB R3,-(R0)
235 235 141412 010203 MOV R2,R3
236 141356 004767 140150' JSR PC,PRINT 236 141414 001370 BNE 25$
237 141362 000207 RTS PC 237
238 238 141416 004767 140150' JSR PC,PRINT
239 239 141422 000207 RTS PC
240 177572 MMR0=177572 240
241 177574 MMR1=177574 241 141424 000000 LOOCNT: .WORD 0
242 177576 MMR2=177576 242
243 172516 MMR3=172516 243 DIAG:
244 244 141426 005067 141424' CLR LOOCNT
245 LIGHTS: 245 141432 005067 140122' CLR CLKTIC
246 141364 012703 077406 MOV #77406,R3 ; DEFAULT PDR 246 DIAGLP:
247 141370 005002 CLR R2 247 141436 005005 CLR R5
248 141372 005001 CLR R1 248 141440 100404 BMI L1
249 141374 012700 000010 MOV #8.,R0 249 141442 102403 BVS L1
250 141400 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR 250 141444 101002 BHI L1
251 141404 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR 251 141446 002401 BLT L1
252 141410 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR 252 141450 101401 BLOS L2
253 141414 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR 253 141452 000000 L1: HALT
254 141420 010361 172200 MOV R3,172200(R1) ; SUPER I PDR 254
255 141424 010261 172240 MOV R2,172240(R1) ; SUPER I PAR 255 141454 005305 L2: DEC R5
256 141430 010361 172220 MOV R3,172220(R1) ; SUPER D PDR 256 141456 100003 BPL L3
257 141434 010261 172260 MOV R2,172260(R1) ; SUPER D PAR 257 141460 001402 BEQ L3
258 141440 010361 177600 MOV R3,177600(R1) ; USER I PDR 258 141462 002001 BGE L3
259 141444 010261 177640 MOV R2,177640(R1) ; USER I PAR 259 141464 003401 BLE L4
260 141450 010361 177620 MOV R3,177620(R1) ; USER D PDR 260 141466 000000 L3: HALT
261 141454 010361 177660 MOV R3,177660(R1) ; USER D PAR 261
262 141460 062702 000200 ADD #200,R2 262 141470 006005 L4: ROR R5
263 141464 062701 000002 ADD #2,R1 263 141472 102002 BVC L5
264 141470 077035 SOB R0,1$ 264 141474 103001 BCC L5
265 141472 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE 265 141476 001001 BNE L6
266 141500 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE 266 141500 000000 L5: HALT
267 141506 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE 267
268 141514 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT 268 141502 112737 000017 177776 L6: MOVB #17,@#177776
269 141522 012737 000001 177572 MOV #1,@#MMR0 269 141510 100004 BPL L7
270 270 141512 102003 BVC L7
271 141530 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 271 141514 002402 BLT L7
272 141536 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 272 141516 101001 BHI L7
273 141544 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER 273 141520 100401 BMI L8
274 274 141522 000000 L7: HALT
275 141552 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS 275
276 141556 012702 141604 MOV #SUPERS,R2 ; ADDRESS SUPER CODE 276 141524 012703 077777 L8: MOV #77777,R3
277 141562 012246 10$: MOV (R2)+,-(SP) 277 141530 062703 077777 ADD #77777,R3
278 141564 006623 MTPI (R3)+ 278 141534 123727 177776 000005 CMPB @#177776,#5
279 141566 020227 142050 CMP R2,#SUPERE 279 141542 001001 BNE L9
280 141572 103773 BLO 10$ 280 141544 000000 HALT
281 281
282 141574 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK 282 141546 112704 001700 L9: MOVB #1700,R4
283 141602 000207 RTS PC 283 141552 100003 BPL L10
284 284 141554 020427 177700 CMP R4,#177700
285 ; 285 141560 001401 BEQ L11
286 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 286 141562 000000 L10: HALT
287 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS 287
288 ; 288 141564 105004 L11: CLRB R4
289 SUPERS: 289 141566 020427 177400 CMP R4,#177400
290 141604 012700 000037 MOV #37,R0 ; LOAD PATTERN 290 141572 001401 BEQ L12
291 141610 012701 174000 MOV #174000,R1 291 141574 000000 HALT
292 141614 032737 000001 177570 BIT #1,@#177570 292
293 141622 001414 BEQ 10$ 293 141576 012705 125252 L12: MOV #125252,R5
294 141624 012700 007417 MOV #7417,R0 294 141602 010500 MOV R5,R0
295 141630 010001 MOV R0,R1 295 141604 010001 MOV R0,R1
296 141632 005101 COM R1 296 141606 010102 MOV R1,R2
297 141634 032737 000002 177570 BIT #2,@#177570 297 141610 010203 MOV R2,R3
298 141642 001404 BEQ 10$ 298 141612 010304 MOV R3,R4
299 141644 012700 036163 MOV #36163,R0 299 141614 010405 MOV R4,R5
300 141650 012701 037000 MOV #37000,R1 300 141616 160501 SUB R5,R1
301 141654 010102 10$: MOV R1,R2 301 141620 002401 BLT NODIAG
302 141656 162702 000002 SUB #2,R2 302 141622 001401 BEQ L13
303 141662 042702 000001 BIC #1,R2 ; WAIT ADDRESS 303 141624 000000 NODIAG: HALT
304 141666 010203 MOV R2,R3 304
305 141670 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET 305 141626 006102 L13: ROL R2
306 141674 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT 306 141630 103001 BCC L14
307 141702 062703 000002 ADD #2,R3 307 141632 002401 BLT L15
308 141706 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3) 308 141634 000000 L14: HALT
309 309
310 141714 010204 MOV R2,R4 310 141636 060203 L15: ADD R2,R3
311 141716 072427 177772 ASH #-6,R4 311 141640 005203 INC R3
312 141722 042704 177600 BIC #177600,R4 312 141642 005103 COM R3
313 141726 012705 001700 MOV #1700,R5 313 141644 060301 ADD R3,R1
314 141732 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT 314 141646 103401 BCS L16
315 141734 010204 MOV R2,R4 315 141650 003401 BLE L17
316 141736 072427 177764 ASH #-12.,R4 316 141652 000000 L16: HALT
317 141742 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET 317
318 141746 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE 318 141654 006004 L17: ROR R4
319 319 141656 050403 BIS R4,R3
320 141752 010103 MOV R1,R3 320 141660 060503 ADD R5,R3
321 141754 072327 177764 ASH #-12.,R3 321 141662 005203 INC R3
322 141760 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET 322 141664 103402 BCS L18
323 141764 020304 CMP R3,R4 ; SAME PAR 323 141666 005301 DEC R1
324 141766 001412 BEQ 30$ 324 141670 002401 BLT L19
325 141770 010104 MOV R1,R4 325 141672 000000 L18: HALT
326 141772 072427 177772 ASH #-6,R4 326
327 141776 042704 177600 BIC #177600,R4 327 141674 005100 L19: COM R0
328 142002 012705 001700 MOV #1700,R5 328 141676 101401 BLOS L20
329 142006 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP 329 141700 000000 HALT
330 142010 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE 330
331 30$: 331 141702 040001 L20: BIC R0,R1
332 142014 012704 000003 MOV #3,R4 332 141704 060101 ADD R1,R1
333 142020 063704 177570 ADD @#177570,R4 333 141706 003001 BGT L21
334 142024 012703 000002 MOV #2,R3 334 141710 003401 BLE L22
335 142030 060703 ADD PC,R3 335 141712 000000 L21: HALT
336 142032 000112 40$: JMP (R2) 336
337 142034 077402 SOB R4,40$ 337 141714 000301 L22: SWAB R1
338 142036 010002 MOV R0,R2 338 141716 020127 052125 CMP R1,#052125
339 142040 006002 ROR R2 ; ROTATE PATTERN 339 141722 001004 BNE L23
340 142042 006101 ROL R1 340 141724 030405 BIT R4,R5
341 142044 006000 ROR R0 341 141726 003002 BGT L23
342 142046 000702 BR 10$ 342 141730 005105 COM R5
343 SUPERE: 343 141732 001001 BNE L24
344 344 141734 000000 L23: HALT
345 BOOT: 345
346 142050 005003 CLR R3 ; UNIT 346 141736 112700 177401 L24: MOVB #177401,R0
347 142052 112201 1$: MOVB (R2)+,R1 347 141742 100001 BPL L26
348 142054 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0 348 141744 000000 L25: HALT
349 142056 120127 000040 CMPB R1,#40 349
350 142062 001773 BEQ 1$ 350 141746 077002 L26: SOB R0,L25
351 142064 120127 000122 CMPB R1,#'R 351 141750 005001 CLR R1
352 142070 001405 BEQ 5$ 352 141752 005201 L27: INC R1
353 353 141754 077002 SOB R0,L27
354 142072 012700 141160 MOV #BADBOO,R0 354 141756 005700 TST R0
355 142076 004767 140150' JSR PC,PRINT 355 141760 001002 BNE L28
356 142102 000207 RTS PC 356 141762 005701 TST R1
357 357 141764 001401 BEQ L29
358 142104 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P 358 141766 000000 L28: HALT
359 142106 112200 7$: MOVB (R2)+,R0 ; DIGIT 359
360 142110 001416 BEQ 9$ 360 141770 012707 141776 L29: MOV #N1,PC
361 142112 120027 000040 CMPB R0,#40 361 141774 000000 HALT
362 142116 001413 BEQ 9$ 362
363 142120 120027 000067 CMPB R0,#'7 363 141776 005727 N1: TST (PC)+
364 142124 003031 BGT 11$ 364 142000 000000 HALT
365 142126 162700 000060 SUB #'0,R0 365
366 142132 002426 BLT 11$ 366 142002 012746 142012 N2: MOV #N3,-(SP)
367 142134 006303 ASL R3 367 142006 000207 RTS PC
368 142136 006303 ASL R3 368 142010 000000 HALT
369 142140 006303 ASL R3 369
370 142142 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT 370 142012 005046 N3: CLR -(SP)
371 142144 000760 BR 7$ 371 142014 012746 142024 MOV #N4,-(SP)
372 142146 005002 9$: CLR R2 372 142020 000002 RTI
373 142150 012722 000137 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 373 142022 000000 HALT
374 142154 012722 140000 MOV #START,(R2)+ 374
375 142160 012722 140000 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 375 142024 000137 142032 N4: JMP @#N5
376 142164 005022 CLR (R2)+ 376 142030 000000 HALT
377 142166 120127 000113 CMPB R1,#'K 377
378 142172 001476 BEQ BOOTRK 378 142032 012705 000003 N5: MOV #3,R5
379 142174 120127 000114 CMPB R1,#'L 379 142036 005037 000006 CLR @#6
380 142200 001410 BEQ BOOTRL 380 142042 012737 142054 000004 MOV #N6,@#4
381 142202 120127 000120 CMPB R1,#'P 381 142050 005745 TST -(R5)
382 142206 001517 BEQ BOOTRP 382 142052 000000 HALT
383 383 142054 062706 000004 N6: ADD #4,SP
384 142210 012700 141077 11$: MOV #UNKMSG,R0 384
385 142214 004767 140150' JSR PC,PRINT 385 142060 005000 CLR R0
386 142220 000207 RTS PC 386 142062 012701 007777 MOV #7777,R1
387 387 142066 010002 N7: MOV R0,R2
388 174400 RLCS=174400 388 142070 062702 000005 ADD #5,R2
389 BOOTRL: 389 142074 022062 177773 CMP (R0)+,-5(R2)
390 142222 000005 RESET 390 142100 001402 BEQ N8
391 142224 000303 SWAB R3 ; UNIT NUMBER 391 142102 000000 HALT
392 142226 012701 174400 MOV #RLCS,R1 ; CSR 392 142104 000000 D1: .WORD 0
393 142232 012761 000013 000004 MOV #13,4(R1) ; CLR ERR 393
394 142240 052703 000004 BIS #4,R3 ; UNIT+GSTAT 394 142106 077111 N8: SOB R1,N7
395 142244 010311 MOV R3,(R1) ; ISSUE CMD 395
396 142246 105711 TSTB (R1) ; WAIT 396 142110 005267 141424' INC LOOCNT
397 142250 100376 BPL .-2 397 142114 103001 BCC 10$
398 142252 105003 CLRB R3 398 142116 000000 HALT
399 142254 052703 000010 BIS #10,R3 ; UNIT+RDHDR 399 142120 026727 140122' 002200 10$: CMP CLKTIC,#2200
400 142260 010311 MOV R3,(R1) ; ISSUE CMD 400 142126 101002 BHI 20$
401 142262 105711 TSTB (R1) ; WAIT 401 142130 000167 141436' JMP DIAGLP
402 142264 100376 BPL .-2 402 142134 012700 141254 20$: MOV #LOOMSG+5,R0
403 142266 016102 000006 MOV 6(R1),R2 ; GET HDR 403 142140 016703 141424' MOV LOOCNT,R3
404 142272 042702 000077 BIC #77,R2 ; CLR SECTOR 404
405 142276 005202 INC R2 ; MAGIC BIT 405 142144 005002 25$: CLR R2
406 142300 010261 000004 MOV R2,4(R1) ; SEEK TO 0 406 142146 071227 000010 DIV #10,R2
407 142304 105003 CLRB R3 407 142152 062703 000060 ADD #'0,R3
408 142306 052703 000006 BIS #6,R3 ; UNIT+SEEK 408 142156 110340 MOVB R3,-(R0)
409 142312 010311 MOV R3,(R1) ; ISSUE CMD 409 142160 010203 MOV R2,R3
410 142314 105711 TSTB (R1) ; WAIT 410 142162 001370 BNE 25$
411 142316 100376 BPL .-2 411
412 142320 005061 000002 CLR 2(R1) ; CLR BA 412 142164 004767 140150' JSR PC,PRINT
413 142324 005061 000004 CLR 4(R1) ; CLR DA 413 142170 000207 RTS PC
414 142330 012761 177000 000006 MOV #-512.,6(R1) ; SET WC 414
415 142336 105003 CLRB R3 415 177572 MMR0=177572
416 142340 052703 000014 BIS #14,R3 ; UNIT+READ 416 177574 MMR1=177574
417 142344 010311 MOV R3,(R1) ; ISSUE CMD 417 177576 MMR2=177576
418 142346 105711 TSTB (R1) ; WAIT 418 172516 MMR3=172516
419 142350 100376 BPL .-2 419
420 142352 042711 000377 BIC #377,(R1) 420 LIGHTS:
421 142356 005002 CLR R2 421 142172 012703 077406 MOV #77406,R3 ; DEFAULT PDR
422 142360 005003 CLR R3 422 142176 005002 CLR R2
423 142362 005004 CLR R4 423 142200 005001 CLR R1
424 142364 005005 CLR R5 424 142202 012700 000010 MOV #8.,R0
425 142366 005007 CLR PC 425 142206 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR
426 426 142212 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR
427 177412 RKDA=177412 427 142216 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR
428 000005 READGO=5 428 142222 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR
429 BOOTRK: 429 142226 010361 172200 MOV R3,172200(R1) ; SUPER I PDR
430 142370 000005 RESET 430 142232 010261 172240 MOV R2,172240(R1) ; SUPER I PAR
431 142372 000303 SWAB R3 ; UNIT NUMBER 431 142236 010361 172220 MOV R3,172220(R1) ; SUPER D PDR
432 142374 006303 ASL R3 432 142242 010261 172260 MOV R2,172260(R1) ; SUPER D PAR
433 142376 006303 ASL R3 433 142246 010361 177600 MOV R3,177600(R1) ; USER I PDR
434 142400 006303 ASL R3 434 142252 010261 177640 MOV R2,177640(R1) ; USER I PAR
435 142402 006303 ASL R3 435 142256 010361 177620 MOV R3,177620(R1) ; USER D PDR
436 142404 006303 ASL R3 436 142262 010361 177660 MOV R3,177660(R1) ; USER D PAR
437 142406 012701 177412 MOV #RKDA,R1 ; CSR 437 142266 062702 000200 ADD #200,R2
438 142412 010311 MOV R3,(R1) ; LOAD DA 438 142272 062701 000002 ADD #2,R1
439 142414 005041 CLR -(R1) ; CLEAR BA 439 142276 077035 SOB R0,1$
440 142416 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC 440 142300 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE
441 142422 012741 000005 MOV #READGO,-(R1) ; READ & GO 441 142306 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE
442 142426 005002 CLR R2 442 142314 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE
443 142430 005003 CLR R3 443 142322 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT
444 142432 005004 CLR R4 444 142330 012737 000001 177572 MOV #1,@#MMR0
445 142434 005005 CLR R5 445
446 142436 105711 TSTB (R1) 446 142336 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000
447 142440 100376 BPL .-2 447 142344 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000
448 142442 105011 CLRB (R1) 448 142352 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER
449 142444 005007 CLR PC 449
450 450 142360 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS
451 176700 RPCSR=0176700 451 142364 012702 142412 MOV #SUPERS,R2 ; ADDRESS SUPER CODE
452 BOOTRP: 452 142370 012246 10$: MOV (R2)+,-(SP)
453 142446 000005 RESET 453 142372 006623 MTPI (R3)+
454 142450 012701 176700 MOV #RPCSR, R1 454 142374 020227 142656 CMP R2,#SUPERE
455 142454 012761 000040 000010 MOV #0000040, 10(R1) ; RESET 455 142400 103773 BLO 10$
456 142462 010361 000010 MOV R3, 10(R1) ; SET UNIT 456
457 142466 012711 000021 MOV #0000021, (R1) ; PACK ACK 457 142402 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK
458 142472 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE 458 142410 000207 RTS PC
459 142500 012761 177000 000002 MOV #-512., 2(R1) ; SET WC 459
460 142506 005061 000004 CLR 4(R1) ; CLR BA 460 ;
461 142512 005061 000006 CLR 6(R1) ; CLR DA 461 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000
462 142516 005061 000034 CLR 34(R1) ; CLR CYL 462 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS
463 142522 012711 000071 MOV #0000071, (R1) ; READ 463 ;
464 142526 105711 TSTB (R1) ; WAIT 464 SUPERS:
465 142530 100376 BPL .-2 465 142412 012700 000037 MOV #37,R0 ; LOAD PATTERN
466 142532 105011 CLRB (R1) 466 142416 012701 174000 MOV #174000,R1
467 142534 010300 MOV R3,R0 467 142422 032737 000001 177570 BIT #1,@#177570
468 142536 005007 CLR PC 468 142430 001414 BEQ 10$
469 469 142432 012700 007417 MOV #7417,R0
470 .END START 470 142436 010001 MOV R0,R1
470 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

View file

@ -33,232 +33,407 @@ The **BOOTMON.mac** source code is shown below.
KW11LKS = 177546 KW11LKS = 177546
KW11VEC = 100 KW11VEC = 100
.ASECT .ASECT
.=140000 .=140000
START: RESET START: RESET
CLR @#PSW CLR @#PSW
MOV #START,SP MOV #START,SP
CLR @#DL11XCSR ; CLEAR THE XCSR CLR @#DL11XCSR ; CLEAR THE XCSR
MOV #BANNER,R0 MOV #BANNER,R0
JSR PC,PRINT JSR PC,PRINT
MOV #CLKAST,@#KW11VEC MOV #CLKAST,@#KW11VEC
MOV #340,@#KW11VEC+2 MOV #340,@#KW11VEC+2
BIS #100,@#KW11LKS ; SET CLOCK TICKING BIS #100,@#KW11LKS ; SET CLOCK TICKING
MOV #PROMPT,R0 MOV #PROMPT,R0
JSR PC,PRINT JSR PC,PRINT
SUB #256,SP SUB #256,SP
MOV SP,R0 MOV SP,R0
JSR PC,INPUT JSR PC,INPUT
CLR R0 CLR R0
1$: WAIT 1$: WAIT
INC R0 INC R0
TST LGHTON TST LGHTON
BEQ 1$ BEQ 1$
MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG
MOV LGHTON,-(SP) ; CALL SUPER LOOP START MOV LGHTON,-(SP) ; CALL SUPER LOOP START
RTI RTI
LGHTON: .WORD 0 LGHTON: .WORD 0
CLKTIC: .WORD 0 CLKTIC: .WORD 0
CLKAST: CLKAST:
INC CLKTIC INC CLKTIC
RTI RTI
ONECHR: ONECHR:
TSTB @#DL11XCSR TSTB @#DL11XCSR
BPL ONECHR BPL ONECHR
MOVB R0,@#177566 MOVB R0,@#177566
RTS PC RTS PC
PRTPTR: .WORD 0 PRTPTR: .WORD 0
PRINT: PRINT:
BITB #100,@#DL11XCSR BITB #100,@#DL11XCSR
BNE PRINT BNE PRINT
MOV R0,PRTPTR MOV R0,PRTPTR
MOV #PRTAST,@#DL11VEC MOV #PRTAST,@#DL11VEC
MOV #200,@#DL11VEC+2 MOV #200,@#DL11VEC+2
BISB #100,@#DL11XCSR BISB #100,@#DL11XCSR
RTS PC RTS PC
PRTAST: PRTAST:
TSTB @PRTPTR TSTB @PRTPTR
BEQ 2$ BEQ 2$
MOVB @PRTPTR,@#177566 MOVB @PRTPTR,@#177566
INC PRTPTR INC PRTPTR
RTI RTI
2$: CLRB @#177564 2$: CLRB @#177564
RTI RTI
BUFFER: .WORD 0 ; INPUT BUFFER POINTER BUFFER: .WORD 0 ; INPUT BUFFER POINTER
LENGTH: .WORD 0 ; INPUT BUFFER LENGTH LENGTH: .WORD 0 ; INPUT BUFFER LENGTH
INPUT: INPUT:
MOV R0,BUFFER MOV R0,BUFFER
CLR LENGTH CLR LENGTH
MOV #INPAST,@#60 MOV #INPAST,@#60
MOV #200,@#62 MOV #200,@#62
BISB #100,@#177560 BISB #100,@#177560
RTS PC RTS PC
INPAST: INPAST:
MOV R0,-(SP) MOV R0,-(SP)
MOVB @#177562,R0 MOVB @#177562,R0
CMPB R0,#15 CMPB R0,#15
BEQ 7$ ; CARRIAGE RETURN BEQ 7$ ; CARRIAGE RETURN
CMPB R0,#127. CMPB R0,#127.
BEQ 2$ ; <DEL> BEQ 2$ ; <DEL>
CMPB R0,#10 CMPB R0,#10
BNE 4$ ; BACK SPACE BNE 4$ ; BACK SPACE
2$: TST LENGTH ; DATA IN BUFFER? 2$: TST LENGTH ; DATA IN BUFFER?
BEQ 3$ BEQ 3$
DEC LENGTH ; LENGTH DEC LENGTH ; LENGTH
MOV #DEL,R0 MOV #DEL,R0
JSR PC,PRINT JSR PC,PRINT
3$: BR 9$ 3$: BR 9$
4$: CMPB R0,#40 4$: CMPB R0,#40
BLT 9$ ; BELOW SPACE BLT 9$ ; BELOW SPACE
CMPB R0,#177 CMPB R0,#177
BGE 9$ ; SKIP STUFF TOO BIG BGE 9$ ; SKIP STUFF TOO BIG
JSR PC,ONECHR ; ECHO CHAR JSR PC,ONECHR ; ECHO CHAR
CMPB R0,#172 CMPB R0,#172
BGT 5$ ; ABOVE Z BGT 5$ ; ABOVE Z
CMPB R0,#141 CMPB R0,#141
BLT 5$ ; BELOW A BLT 5$ ; BELOW A
BICB #40,R0 ; CONVERT TO UPPER CASE BICB #40,R0 ; CONVERT TO UPPER CASE
5$: CMP LENGTH,#254 5$: CMP LENGTH,#254
BGE 9$ BGE 9$
MOVB R0,-(SP) MOVB R0,-(SP)
MOV BUFFER,R0 MOV BUFFER,R0
ADD LENGTH,R0 ADD LENGTH,R0
MOVB (SP)+,(R0) MOVB (SP)+,(R0)
INC LENGTH INC LENGTH
BR 9$ BR 9$
7$: MOV BUFFER,R0 7$: MOV BUFFER,R0
ADD LENGTH,R0 ADD LENGTH,R0
CLRB (R0) CLRB (R0)
MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2
MOV #100,@#242 MOV #100,@#242
MOV #2000,@#177772 MOV #2000,@#177772
9$: MOV (SP)+,R0 9$: MOV (SP)+,R0
RTI RTI
CMD: CMD:
CLR @#177772 ; NO MORE PIR CALLS CLR @#177772 ; NO MORE PIR CALLS
MOV R0,-(SP) MOV R0,-(SP)
MOV R1,-(SP) MOV R1,-(SP)
MOV R2,-(SP) MOV R2,-(SP)
MOV R3,-(SP) MOV R3,-(SP)
MOV R4,-(SP) MOV R4,-(SP)
MOV #EOL,R0 MOV #EOL,R0
JSR PC,PRINT JSR PC,PRINT
1$: BITB #100,@#177564 1$: BITB #100,@#177564
BNE 1$ BNE 1$
CLR R4 CLR R4
MOV #CMDLST,R3 ; CMD LIST MOV #CMDLST,R3 ; CMD LIST
3$: MOVB (R3)+,R0 3$: MOVB (R3)+,R0
BEQ 13$ BEQ 13$
MOV BUFFER,R2 ; USER CMD MOV BUFFER,R2 ; USER CMD
4$: MOVB (R2)+,R1 4$: MOVB (R2)+,R1
BEQ 15$ ; NULL COMMAND? BEQ 15$ ; NULL COMMAND?
CMPB R1,#40 CMPB R1,#40
BEQ 4$ ; SKIP SPACE BEQ 4$ ; SKIP SPACE
5$: CMPB R0,R1 5$: CMPB R0,R1
BNE 7$ BNE 7$
MOVB (R3)+,R0 MOVB (R3)+,R0
BEQ 9$ BEQ 9$
MOVB (R2)+,R1 MOVB (R2)+,R1
BEQ 9$ BEQ 9$
CMPB R1,#40 CMPB R1,#40
BNE 5$ BNE 5$
BR 9$ BR 9$
7$: MOVB (R3)+,R0 7$: MOVB (R3)+,R0
BNE 7$ BNE 7$
INC R4 INC R4
BR 3$ BR 3$
9$: ASL R4 9$: ASL R4
JSR PC,@CMDTBL(R4) ; EXECUTE JSR PC,@CMDTBL(R4) ; EXECUTE
BR 15$ BR 15$
13$: MOV #UNKMSG,R0 13$: MOV #UNKMSG,R0
JSR PC,PRINT JSR PC,PRINT
15$: CLR LENGTH 15$: CLR LENGTH
MOV #PROMPT,R0 MOV #PROMPT,R0
JSR PC,PRINT JSR PC,PRINT
MOV (SP)+,R4 MOV (SP)+,R4
MOV (SP)+,R3 MOV (SP)+,R3
MOV (SP)+,R2 MOV (SP)+,R2
MOV (SP)+,R1 MOV (SP)+,R1
MOV (SP)+,R0 MOV (SP)+,R0
RTI RTI
CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP CMDTBL: .WORD BOOT,HALT,TEST,DIAG,LIGHTS,HELP
HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12> 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 EOL: .BYTE 15,12,0
DEL: .BYTE 10,40,10,0 DEL: .BYTE 10,40,10,0
CMDLST: .ASCIZ 'BOOT' CMDLST: .ASCIZ 'BOOT'
.ASCIZ 'HALT' .ASCIZ 'HALT'
.ASCIZ 'TEST' .ASCIZ 'TEST'
.ASCIZ 'LIGHTS' .ASCIZ 'DIAG'
.ASCIZ 'HELP' .ASCIZ 'LIGHTS'
.BYTE 0 .ASCIZ 'HELP'
.BYTE 0
UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15> UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15> BANNER: .ASCIZ 'PDP-11 MONITOR V1.0'<12><15><12><15>
; 'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15> ; 'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15>
PROMPT: .ASCIZ 'BOOT> ' PROMPT: .ASCIZ 'BOOT> '
BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15> BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
PERMSG: .ASCIZ ' CLOCK TICKS'<12><15> PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
LOOMSG: .ASCIZ ' ITERATIONS'<12><15>
.EVEN .EVEN
HELP: HELP:
MOV #HLPMSG,R0 MOV #HLPMSG,R0
JSR PC,PRINT JSR PC,PRINT
RTS PC RTS PC
HALT: HALT:
HALT HALT
MOV #EOL,R0 MOV #EOL,R0
JSR PC,PRINT JSR PC,PRINT
RTS PC RTS PC
TEST: TEST:
CLR CLKTIC CLR CLKTIC
MOV #15000,R5 MOV #15000,R5
10$: MOV R5,@#177570 ; DISPLAY 10$: MOV R5,@#177570 ; DISPLAY
MOV R5,R4 MOV R5,R4
ASR R4 ASR R4
15$: CLR R0 15$: CLR R0
MOV R5,R1 MOV R5,R1
DIV R4,R0 DIV R4,R0
MOV R0,R2 MOV R0,R2
MUL R4,R2 MUL R4,R2
ADD R3,R1 ADD R3,R1
CMP R1,R5 CMP R1,R5
BEQ 20$ BEQ 20$
HALT HALT
20$: SOB R4,15$ 20$: SOB R4,15$
SOB R5,10$ SOB R5,10$
MOV #PERMSG+5,R0 MOV #PERMSG+5,R0
MOV CLKTIC,R3 MOV CLKTIC,R3
25$: CLR R2 25$: CLR R2
DIV #10,R2 DIV #10,R2
ADD #'0,R3 ADD #'0,R3
MOVB R3,-(R0) MOVB R3,-(R0)
MOV R2,R3 MOV R2,R3
BNE 25$ BNE 25$
JSR PC,PRINT JSR PC,PRINT
RTS PC 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 MMR0=177572
MMR1=177574 MMR1=177574
@ -266,228 +441,228 @@ The **BOOTMON.mac** source code is shown below.
MMR3=172516 MMR3=172516
LIGHTS: LIGHTS:
MOV #77406,R3 ; DEFAULT PDR MOV #77406,R3 ; DEFAULT PDR
CLR R2 CLR R2
CLR R1 CLR R1
MOV #8.,R0 MOV #8.,R0
1$: MOV R3,172300(R1) ; KERNEL I PDR 1$: MOV R3,172300(R1) ; KERNEL I PDR
MOV R2,172340(R1) ; KERNEL I PAR MOV R2,172340(R1) ; KERNEL I PAR
MOV R3,172320(R1) ; KERNEL D PDR MOV R3,172320(R1) ; KERNEL D PDR
MOV R2,172360(R1) ; KERNEL D PAR MOV R2,172360(R1) ; KERNEL D PAR
MOV R3,172200(R1) ; SUPER I PDR MOV R3,172200(R1) ; SUPER I PDR
MOV R2,172240(R1) ; SUPER I PAR MOV R2,172240(R1) ; SUPER I PAR
MOV R3,172220(R1) ; SUPER D PDR MOV R3,172220(R1) ; SUPER D PDR
MOV R2,172260(R1) ; SUPER D PAR MOV R2,172260(R1) ; SUPER D PAR
MOV R3,177600(R1) ; USER I PDR MOV R3,177600(R1) ; USER I PDR
MOV R2,177640(R1) ; USER I PAR MOV R2,177640(R1) ; USER I PAR
MOV R3,177620(R1) ; USER D PDR MOV R3,177620(R1) ; USER D PDR
MOV R3,177660(R1) ; USER D PAR MOV R3,177660(R1) ; USER D PAR
ADD #200,R2 ADD #200,R2
ADD #2,R1 ADD #2,R1
SOB R0,1$ SOB R0,1$
BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE
BIS #176000,@#172276 ; SUPER 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 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE
MOV #77,@#MMR3 ; 77 FOR 22 BIT MOV #77,@#MMR3 ; 77 FOR 22 BIT
MOV #1,@#MMR0 MOV #1,@#MMR0
MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000
MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000
MOV #010000,@#177776 ; SET PM TO SUPER MOV #010000,@#177776 ; SET PM TO SUPER
MOV #40200,R3 ; SUPER CODE ADDRESS MOV #40200,R3 ; SUPER CODE ADDRESS
MOV #SUPERS,R2 ; ADDRESS SUPER CODE MOV #SUPERS,R2 ; ADDRESS SUPER CODE
10$: MOV (R2)+,-(SP) 10$: MOV (R2)+,-(SP)
MTPI (R3)+ MTPI (R3)+
CMP R2,#SUPERE CMP R2,#SUPERE
BLO 10$ BLO 10$
MOV #40200,LGHTON ; CHANGE IDLE TASK MOV #40200,LGHTON ; CHANGE IDLE TASK
RTS PC RTS PC
; ;
; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000
; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS
; ;
SUPERS: SUPERS:
MOV #37,R0 ; LOAD PATTERN MOV #37,R0 ; LOAD PATTERN
MOV #174000,R1 MOV #174000,R1
BIT #1,@#177570 BIT #1,@#177570
BEQ 10$ BEQ 10$
MOV #7417,R0 MOV #7417,R0
MOV R0,R1 MOV R0,R1
COM R1 COM R1
BIT #2,@#177570 BIT #2,@#177570
BEQ 10$ BEQ 10$
MOV #36163,R0 MOV #36163,R0
MOV #37000,R1 MOV #37000,R1
10$: MOV R1,R2 10$: MOV R1,R2
SUB #2,R2 SUB #2,R2
BIC #1,R2 ; WAIT ADDRESS BIC #1,R2 ; WAIT ADDRESS
MOV R2,R3 MOV R2,R3
BIC #177701,R3 ; ADDRESS OFFSET BIC #177701,R3 ; ADDRESS OFFSET
MOV #0000001,40000(R3) ; WRITE WAIT MOV #0000001,40000(R3) ; WRITE WAIT
ADD #2,R3 ADD #2,R3
MOV #0000113,40000(R3) ; WRITE JMP (R3) MOV #0000113,40000(R3) ; WRITE JMP (R3)
MOV R2,R4 MOV R2,R4
ASH #-6,R4 ASH #-6,R4
BIC #177600,R4 BIC #177600,R4
MOV #1700,R5 MOV #1700,R5
SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT
MOV R2,R4 MOV R2,R4
ASH #-12.,R4 ASH #-12.,R4
BIC #177761,R4 ; PAR SELECT OFFSET BIC #177761,R4 ; PAR SELECT OFFSET
MOV R5,172240(R4) ; SUPER I SPACE MOV R5,172240(R4) ; SUPER I SPACE
MOV R1,R3 MOV R1,R3
ASH #-12.,R3 ASH #-12.,R3
BIC #177761,R3 ; PAR SELECT OFFSET BIC #177761,R3 ; PAR SELECT OFFSET
CMP R3,R4 ; SAME PAR CMP R3,R4 ; SAME PAR
BEQ 30$ BEQ 30$
MOV R1,R4 MOV R1,R4
ASH #-6,R4 ASH #-6,R4
BIC #177600,R4 BIC #177600,R4
MOV #1700,R5 MOV #1700,R5
SUB R4,R5 ; PAR ADDRESS BASE FOR JMP SUB R4,R5 ; PAR ADDRESS BASE FOR JMP
MOV R5,172240(R3) ; SUPER I SPACE MOV R5,172240(R3) ; SUPER I SPACE
30$: 30$:
MOV #3,R4 MOV #3,R4
ADD @#177570,R4 ADD @#177570,R4
MOV #2,R3 MOV #2,R3
ADD PC,R3 ADD PC,R3
40$: JMP (R2) 40$: JMP (R2)
SOB R4,40$ SOB R4,40$
MOV R0,R2 MOV R0,R2
ROR R2 ; ROTATE PATTERN ROR R2 ; ROTATE PATTERN
ROL R1 ROL R1
ROR R0 ROR R0
BR 10$ BR 10$
SUPERE: SUPERE:
BOOT: BOOT:
CLR R3 ; UNIT CLR R3 ; UNIT
1$: MOVB (R2)+,R1 1$: MOVB (R2)+,R1
BEQ BOOTRK ; DEFAULT DEVICE IS RK0 BEQ BOOTRK ; DEFAULT DEVICE IS RK0
CMPB R1,#40 CMPB R1,#40
BEQ 1$ BEQ 1$
CMPB R1,#'R CMPB R1,#'R
BEQ 5$ BEQ 5$
MOV #BADBOO,R0 MOV #BADBOO,R0
JSR PC,PRINT JSR PC,PRINT
RTS PC RTS PC
5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P
7$: MOVB (R2)+,R0 ; DIGIT 7$: MOVB (R2)+,R0 ; DIGIT
BEQ 9$ BEQ 9$
CMPB R0,#40 CMPB R0,#40
BEQ 9$ BEQ 9$
CMPB R0,#'7 CMPB R0,#'7
BGT 11$ BGT 11$
SUB #'0,R0 SUB #'0,R0
BLT 11$ BLT 11$
ASL R3 ASL R3
ASL R3 ASL R3
ASL R3 ASL R3
BIS R0,R3 ; PUT DIGIT INTO UNIT BIS R0,R3 ; PUT DIGIT INTO UNIT
BR 7$ BR 7$
9$: CLR R2 9$: CLR R2
MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0 MOV #137,(R2)+ ; STORE "JMP @#140000" INSTRUCTION AT ADDRESS 0
MOV #START,(R2)+ MOV #START,(R2)+
MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4 MOV #START,(R2)+ ; STORE #140000 IN VECTOR 4, IN CASE OF TRAP TO 4
CLR (R2)+ CLR (R2)+
CMPB R1,#'K CMPB R1,#'K
BEQ BOOTRK BEQ BOOTRK
CMPB R1,#'L CMPB R1,#'L
BEQ BOOTRL BEQ BOOTRL
CMPB R1,#'P CMPB R1,#'P
BEQ BOOTRP BEQ BOOTRP
11$: MOV #UNKMSG,R0 11$: MOV #UNKMSG,R0
JSR PC,PRINT JSR PC,PRINT
RTS PC RTS PC
RLCS=174400 RLCS=174400
BOOTRL: BOOTRL:
RESET RESET
SWAB R3 ; UNIT NUMBER SWAB R3 ; UNIT NUMBER
MOV #RLCS,R1 ; CSR MOV #RLCS,R1 ; CSR
MOV #13,4(R1) ; CLR ERR MOV #13,4(R1) ; CLR ERR
BIS #4,R3 ; UNIT+GSTAT BIS #4,R3 ; UNIT+GSTAT
MOV R3,(R1) ; ISSUE CMD MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT TSTB (R1) ; WAIT
BPL .-2 BPL .-2
CLRB R3 CLRB R3
BIS #10,R3 ; UNIT+RDHDR BIS #10,R3 ; UNIT+RDHDR
MOV R3,(R1) ; ISSUE CMD MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT TSTB (R1) ; WAIT
BPL .-2 BPL .-2
MOV 6(R1),R2 ; GET HDR MOV 6(R1),R2 ; GET HDR
BIC #77,R2 ; CLR SECTOR BIC #77,R2 ; CLR SECTOR
INC R2 ; MAGIC BIT INC R2 ; MAGIC BIT
MOV R2,4(R1) ; SEEK TO 0 MOV R2,4(R1) ; SEEK TO 0
CLRB R3 CLRB R3
BIS #6,R3 ; UNIT+SEEK BIS #6,R3 ; UNIT+SEEK
MOV R3,(R1) ; ISSUE CMD MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT TSTB (R1) ; WAIT
BPL .-2 BPL .-2
CLR 2(R1) ; CLR BA CLR 2(R1) ; CLR BA
CLR 4(R1) ; CLR DA CLR 4(R1) ; CLR DA
MOV #-512.,6(R1) ; SET WC MOV #-512.,6(R1) ; SET WC
CLRB R3 CLRB R3
BIS #14,R3 ; UNIT+READ BIS #14,R3 ; UNIT+READ
MOV R3,(R1) ; ISSUE CMD MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT TSTB (R1) ; WAIT
BPL .-2 BPL .-2
BIC #377,(R1) BIC #377,(R1)
CLR R2 CLR R2
CLR R3 CLR R3
CLR R4 CLR R4
CLR R5 CLR R5
CLR PC CLR PC
RKDA=177412 RKDA=177412
READGO=5 READGO=5
BOOTRK: BOOTRK:
RESET RESET
SWAB R3 ; UNIT NUMBER SWAB R3 ; UNIT NUMBER
ASL R3 ASL R3
ASL R3 ASL R3
ASL R3 ASL R3
ASL R3 ASL R3
ASL R3 ASL R3
MOV #RKDA,R1 ; CSR MOV #RKDA,R1 ; CSR
MOV R3,(R1) ; LOAD DA MOV R3,(R1) ; LOAD DA
CLR -(R1) ; CLEAR BA CLR -(R1) ; CLEAR BA
MOV #-256.*2,-(R1) ; LOAD WC MOV #-256.*2,-(R1) ; LOAD WC
MOV #READGO,-(R1) ; READ & GO MOV #READGO,-(R1) ; READ & GO
CLR R2 CLR R2
CLR R3 CLR R3
CLR R4 CLR R4
CLR R5 CLR R5
TSTB (R1) TSTB (R1)
BPL .-2 BPL .-2
CLRB (R1) CLRB (R1)
CLR PC CLR PC
RPCSR=0176700 RPCSR=0176700
BOOTRP: BOOTRP:
RESET RESET
MOV #RPCSR, R1 MOV #RPCSR, R1
MOV #0000040, 10(R1) ; RESET MOV #0000040, 10(R1) ; RESET
MOV R3, 10(R1) ; SET UNIT MOV R3, 10(R1) ; SET UNIT
MOV #0000021, (R1) ; PACK ACK MOV #0000021, (R1) ; PACK ACK
MOV #0010000, 32(R1) ; 16B MODE MOV #0010000, 32(R1) ; 16B MODE
MOV #-512., 2(R1) ; SET WC MOV #-512., 2(R1) ; SET WC
CLR 4(R1) ; CLR BA CLR 4(R1) ; CLR BA
CLR 6(R1) ; CLR DA CLR 6(R1) ; CLR DA
CLR 34(R1) ; CLR CYL CLR 34(R1) ; CLR CYL
MOV #0000071, (R1) ; READ MOV #0000071, (R1) ; READ
TSTB (R1) ; WAIT TSTB (R1) ; WAIT
BPL .-2 BPL .-2
CLRB (R1) CLRB (R1)
MOV R3,R0 MOV R3,R0
CLR PC CLR PC
.END START .END START

View file

@ -8,7 +8,7 @@ BOOTMON.txt: BOOTMON.mac
macro11 BOOTMON.mac -l BOOTMON.txt macro11 BOOTMON.mac -l BOOTMON.txt
BOOTMON.json: 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 BOOTMON.md: BOOTMON.mac
tabify -8 -d BOOTMON.mac > BOOTMON.md tabify -8 -d BOOTMON.mac > BOOTMON.md

View file

@ -254,8 +254,8 @@ CPUStatePDP11.prototype.resetMMU = function()
this.mmuLastMode = 0; this.mmuLastMode = 0;
this.mmuMask = 0x3ffff; this.mmuMask = 0x3ffff;
this.lastAI = 0; // last auto-incs and/or auto-decs; this gets propagated to MMR1 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 get propagated to MMR2 this.lastPC = 0; // last PC at the time of getOpcode(); this is propagated to MMR2 as appropriate
this.resetTriggers(); this.resetTriggers();
@ -327,6 +327,15 @@ CPUStatePDP11.prototype.setMMR0 = function(newMMR0)
{ {
newMMR0 &= 0xf381; newMMR0 &= 0xf381;
if (this.regMMR0 != newMMR0) { 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.regMMR0 = newMMR0;
this.mmuLastMode = (newMMR0 >> 5) & 3; this.mmuLastMode = (newMMR0 >> 5) & 3;
this.mmuLastPage = (newMMR0 >> 1) & 0xf; this.mmuLastPage = (newMMR0 >> 1) & 0xf;
@ -352,7 +361,12 @@ CPUStatePDP11.prototype.setMMR0 = function(newMMR0)
*/ */
CPUStatePDP11.prototype.getMMR1 = function() 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)) { if (!(this.regMMR0 & PDP11.MMR0.ABORT)) {
this.assert(!(this.lastAI & ~0xffff));
this.regMMR1 = this.lastAI & 0xffff; this.regMMR1 = this.lastAI & 0xffff;
} }
var result = this.regMMR1; var result = this.regMMR1;
@ -370,6 +384,10 @@ CPUStatePDP11.prototype.getMMR1 = function()
*/ */
CPUStatePDP11.prototype.getMMR2 = 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)) { if (!(this.regMMR0 & PDP11.MMR0.ABORT)) {
this.regMMR2 = this.lastPC; this.regMMR2 = this.lastPC;
} }

View file

@ -559,7 +559,7 @@ if (DEBUGGER) {
var fCompleted = false; var fCompleted = false;
if (!dbg.isBusy(true)) { if (!dbg.isBusy(true)) {
dbg.setBusy(true); dbg.setBusy(true);
fCompleted = dbg.stepCPU(fRepeat? 1 : 0); fCompleted = dbg.stepCPU(fRepeat? 1 : 0, null);
dbg.setBusy(false); dbg.setBusy(false);
} }
return fCompleted; return fCompleted;
@ -1317,7 +1317,7 @@ if (DEBUGGER) {
* *
* @this {DebuggerPDP11} * @this {DebuggerPDP11}
* @param {number} nCycles (0 for one instruction without checking breakpoints) * @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) * @param {boolean} [fUpdateDisplays] is false to disable Computer display updates (default is true)
* @return {boolean} * @return {boolean}
*/ */
@ -1325,6 +1325,10 @@ if (DEBUGGER) {
{ {
if (!this.checkCPU()) return false; if (!this.checkCPU()) return false;
if (fRegs === null) {
fRegs = (!this.sTraceCmdPrev || this.sTraceCmdPrev == "tr");
}
this.nCycles = 0; this.nCycles = 0;
if (!nCycles) { if (!nCycles) {
@ -2773,12 +2777,12 @@ if (DEBUGGER) {
{ {
if (sAddr == '?') { if (sAddr == '?') {
this.println("breakpoint commands:"); this.println("breakpoint commands:");
this.println("\tbp [a]\tset exec breakpoint at addr [a]"); this.println("\tbp [#]\tset exec breakpoint at addr #");
this.println("\tbr [a]\tset read breakpoint at addr [a]"); this.println("\tbr [#]\tset read breakpoint at addr #");
this.println("\tbw [a]\tset write breakpoint at addr [a]"); this.println("\tbw [#]\tset write breakpoint at addr #");
this.println("\tbc [a]\tclear breakpoint at addr [a]"); this.println("\tbc [#]\tclear breakpoint at addr #");
this.println("\tbl\tlist all breakpoints"); this.println("\tbl\tlist all breakpoints");
this.println("\tbn [n]\tbreak after [n] instruction(s)"); this.println("\tbn [#]\tbreak after # instruction(s)");
return; return;
} }
@ -3681,6 +3685,15 @@ if (DEBUGGER) {
*/ */
DebuggerPDP11.prototype.doTrace = function(sCmd, sCount) 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 dbg = this;
var fRegs = (sCmd != "t"); var fRegs = (sCmd != "t");
var nCount = this.parseValue(sCount, null, true) || 1; var nCount = this.parseValue(sCount, null, true) || 1;
@ -3689,6 +3702,7 @@ if (DEBUGGER) {
nCycles = nCount; nCycles = nCount;
nCount = 1; nCount = 1;
} }
this.sTraceCmdPrev = sCmd;
web.onCountRepeat( web.onCountRepeat(
nCount, nCount,
function onCountStep() { function onCountStep() {

View file

@ -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 * 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. * 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. * ES6 ALERT: By using octal constants, I'm finally dipping my toe into ES6 (aka ECMAScript 2015) waters.
* If you're loading this raw source code into your browser, then by now (2016) you're almost certainly using * You'll even see a few binary constants below, too. If you're loading this raw source code into your browser,
* an ES6-aware browser. Everyone else should be using code compiled by Google's Closure Compiler, which * then by now (2016) you're almost certainly using an ES6-aware browser. Production sites should be using code
* we configure to produce code that's backward-compatible with ES5 (for example, octal constants are * compiled by Google's Closure Compiler, which we configure to produce code that's backward-compatible with ES5
* converted to decimal values). * (for example, all binary, octal, and hex constants are converted to decimal values).
* *
* For more details: https://github.com/google/closure-compiler/wiki/ECMAScript6 * 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 UDPAR6: 0o177674, // User D Page Address Register 6
UDPAR7: 0o177676, // User D Page Address Register 7 UDPAR7: 0o177676, // User D Page Address Register 7
R0SET0: 0o177700, R0SET0: 0o177700, //
R1SET0: 0o177701, R1SET0: 0o177701, //
R2SET0: 0o177702, R2SET0: 0o177702, //
R3SET0: 0o177703, R3SET0: 0o177703, //
R4SET0: 0o177704, R4SET0: 0o177704, //
R5SET0: 0o177705, R5SET0: 0o177705, //
R6KERNEL: 0o177706, R6KERNEL: 0o177706, //
R7KERNEL: 0o177707, R7KERNEL: 0o177707, //
R0SET1: 0o177710, R0SET1: 0o177710, //
R1SET1: 0o177711, R1SET1: 0o177711, //
R2SET1: 0o177712, R2SET1: 0o177712, //
R3SET1: 0o177713, R3SET1: 0o177713, //
R4SET1: 0o177714, R4SET1: 0o177714, //
R5SET1: 0o177715, R5SET1: 0o177715, //
R6SUPER: 0o177716, R6SUPER: 0o177716, //
R6USER: 0o177717, R6USER: 0o177717, //
/* /*
* This next group of registers is largely ignored; all accesses are routed to regsControl[], * This next group of registers is largely ignored; all accesses are routed to regsControl[],

View file

@ -655,7 +655,7 @@ PanelPDP11.prototype.processContinue = function(value, index)
var dbg = this.dbg; var dbg = this.dbg;
if (dbg && !dbg.isBusy(true)) { if (dbg && !dbg.isBusy(true)) {
dbg.setBusy(true); dbg.setBusy(true);
dbg.stepCPU(0); dbg.stepCPU(0, null);
dbg.setBusy(false); dbg.setBusy(false);
} }
else { else {