AC0 = %0 AC1 = %1 AC2 = %2 AC3 = %3 AC4 = %4 AC5 = %5 V.0 =: ^O< 0> V.TR4 =: ^O< 4> V.TR10 =: ^O< 10> V.BPT =: ^O< 14> V.IOT =: ^O< 20> V.PWFL =: ^O< 24> V.EMT =: ^O< 30> V.TRAP =: ^O< 34> V.PET =: ^O<114> V.PIRQ =: ^O<240> V.FTRP =: ^O<244> V.MMU =: ^O<250> ; ; В старших версиях ВМ3 - на шине всегда есть PARH2 по виртуальному адресу 172512, ; но в некоторых документах говорится и про доступный PARH3 (логично предположить, что по адресу 172514) ; ; PARH0, PARH1 и PARH3 ; ; Для поддержки пультового режима в диспетчер памяти введены четыре дополнительных регистра, ; три из них имеют постоянные значения, а один доступен по чтению и записи по адресу 172512 (виртуальному, в HALT-моде). ; ; Если в режиме HALT процессор обращается к младшей половине памяти, то виртуальный адрес транслируется ; в физический без изменений, при этом одновременно с физическим адресом выдается сигнал SEL. ; ; Если в этом режиме процессор обращается к четверти памяти, начинающейся с виртуального адреса 100000, ; для получения физического адреса виртуальный адрес складывается с содержимым программно-доступного регистра PARH2 ; с (виртуальным) адресом 172512, сдвинутым влево на 6 разрядов. ; ; Адресация области регистров внешних устройств в физическом адресном пространстве происходит аналогично через ; программно-доступный регистр PARH3, в который предварительно заносится (процессором) код 177600 ; ; В справочнике Шахнова за 1988 год прямо сказано, что PARH0 инициализируется константой 170000, а PARH1 - константой 167600. ; ;PARH0 =: ^O<> ;PARH1 =: ^O<> PARH2 =: ^O<172512> ;PARH3 =: ^O<172514> N$WNDW =: ^O<100000> ; Базовый адрес окна доступа ко всей памяти в HALT режиме ; PDP-2011 PARH6 =: ^O<177534> ; PDP2011 halt mode Page 6 Window to real mode memory WPAR6 =: ^O<140000> ; Базовый адрес окна доступа ко всей памяти в HALT режиме - PDP-2011 BPR0L =: ^O<170400> ; Breakpoint register 0 BPR0H =: ^O<170402> BPR1L =: ^O<170404> ; Breakpoint register 1 BPR1H =: ^O<170406> BPR2L =: ^O<170410> ; Breakpoint register 2 BPR2H =: ^O<170412> BPR3L =: ^O<170414> ; Breakpoint register 3 BPR3H =: ^O<170416> BPR4L =: ^O<170420> ; Breakpoint register 4 BPR4H =: ^O<170422> BPR5L =: ^O<170424> ; Breakpoint register 5 BPR5H =: ^O<170426> BPR6L =: ^O<170430> ; Breakpoint register 6 BPR6H =: ^O<170432> BPR7L =: ^O<170434> ; Breakpoint register 7 BPR7H =: ^O<170436> ; ; Вектора регистры устройств ; SWREG =: ^O<177570> DSPREG =: ^O<177570> ; Clock V.LTC =: ^O<100> LCCSR =: ^O<177546> ; line clock V.PTC =: ^O<104> ; kw11p clock PCCSR =: ^O<172540> ; Консольный терминал V.TKB =: ^O< 60> V.TPS =: ^O< 64> TKS =: ^O<177560> TKB =: ^O<177562> TPS =: ^O<177564> TPB =: ^O<177566> ; Line printer LPS =: ^O<177514> LPB =: ^O<177516> ; CF and ZF card ; high-order byte | low-order byte ; ; +----------------------------------------+ ;+0 | Reserved | Adapter CSR | ; |----------------------------------------| ;+2 | Reserved for DMA co-adapter CSR | ; |----------------------------------------| ;+4 | Reserved for DMA address register | ; |----------------------------------------| ;+6 | Reserved for DMA word count | ; |----------------------------------------| ;+10 | Reserved | ; |----------------------------------------| ;+12 | Reserved | ; |----------------------------------------| ;+14 | Reserved | Alternate status (r/o) | ; | Reserved | Device control (w/o) | ; |----------------------------------------| ;+16 | Reserved | ; |----------------------------------------| ;+20 | Data (r/w) | ; |----------------------------------------| ;+22 | Reserved | Error (r/o) | ; | Reserved | Features (w/o) | ; |----------------------------------------| ;+24 | Reserved | Sector Count (r/w) | ; |----------------------------------------| ;+26 | Reserved | Sector Number (r/w) | ; |----------------------------------------| ;+30 | Reserved | Cylinder Low (r/w) | ; |----------------------------------------| ;+32 | Reserved | Cylinder High (r/w) | ; |----------------------------------------| ;+34 | Reserved | Device/Head (r/w) | ; |----------------------------------------| ;+36 | Reserved | Status (r/o) | ; | Reserved | Command (w/o) | ; +----------------------------------------+ ;1 2 CS0# CS1# DA2 DA1 DA0 ; ; 1 1 x x x Нет обращения (шина данных в третьем состоянии) ; ; 0 0 x x x Недопустимый адрес (шина данных в третьем состоянии) ; ; ; ;3FX 37X Control Block Registers - блок управляющих регистров ; ; 1 0 0 X x Не используется (шина данных в третьем состоянии) ; ; 1 0 1 0 x Не используется (шина данных в третьем состоянии) ; ;3F6 376 1 0 1 1 0 R: Alternate Status (AS) - альтернативный регистр состояния ;3F6 376 1 0 1 1 0 W: Device Control (DC) - регистр управления устройством ; ;3F7 377 1 0 1 1 1 R: Drive Address (DA) - регистр адреса (не используется)? ; ; ; ;1FX 17X Command Block Registers - блок командных регистров ; ;1F0 170 0 1 0 0 0 R/W: Data (DR) - регистр данных ; ;1F1 171 0 1 0 0 1 R: Error (ER) - регистр ошибок ;1F1 171 0 1 0 0 1 W: Features (FR) - регистр свойств ; ;1F2 172 0 1 0 1 0 R/W: Sector Count (SC) - регистр счетчика секторов ; ;1F3 173 0 1 0 1 1 R/W: Sector Number (SN) - регистр номера сектора/LBA[7:0]? ; ;1F4 174 0 1 1 0 0 R/W: Cylinder Low (CL) - регистр младшего байта номера цилиндра LBA[15:8]? ; ;1F5 175 0 1 1 0 1 R/W: Cylinder High (CH) - регистр старшего байта номера цилиндра/LBA[23:16]? ; ;1F6 176 0 1 1 1 0 R/W: Device/Head (D/H) - регистр номера устройства и головки/LBA[27:24]? ; ;1F7 177 0 1 1 1 1 R: Status (SR) - регистр состояния ;1F7 177 0 1 1 1 1 W: Command (CR) - регистр команд .MACRO PATA BNAME, BADDR, BVEC, BPRI 'BNAME'BASE =: 'BADDR' P$CSR =: ^O<00> ; 000000 'BNAME'CSR =: 'BNAME'BASE+P$CSR ; adapter CSR AC.INT =: ^O<200> ; interrupt request AC.IE =: ^O<100> ; interrupt enable AC.DTM =: ^O< 40> ; dead time indicator AC.NDM =: ^O< 20> ; DMA co-adapter not installed AC.PC =: ^O< 10> ; Running on IBM PC Firmware-11/386 AC.MD1 =: ^O< 1> ; Use PIO mode 1 P$CSR2 =: ^O<14> ; 001100 'BNAME'CSR2 =: 'BNAME'BASE+P$CSR2 ; alt status (r) | device control (w/o) DC.STA =: ^O< 10> ; statically set bit DC.SRS =: ^O< 4> ; software reset DC.NIE =: ^O< 2> ; negative interrupt buffer enable ; 001110 drive address (r) ;----------------------------------------------- P$DBUF =: ^O<20> ; 010000 'BNAME'DBUF =: 'BNAME'BASE+P$DBUF ; data buffer i/o P$ERR =: ^O<22> ; 010010 P$FR =: ^O<22> ; 010010 'BNAME'ERR =: 'BNAME'BASE+P$ERR ; error register (r/o) Feature Register (w) ER.BBK =: ^O<200> ; bad block detected ER.UNC =: ^O<100> ; uncorrectable data error ER.MC =: ^O< 40> ; media changed ER.IDN =: ^O< 20> ; ID not found ER.MCR =: ^O< 10> ; media change requested ER.ABR =: ^O< 4> ; aborted command ER.TK0 =: ^O< 2> ; track 0 not found ER.AMN =: ^O< 1> ; address mark not found P$SCNT =: ^O<24> ; 010100 'BNAME'SCNT =: 'BNAME'BASE+P$SCNT ; sector count P$SNUM =: ^O<26> ; 010110 'BNAME'SNUM =: 'BNAME'BASE+P$SNUM ; sector number P$CYLL =: ^O<30> ; 011000 'BNAME'CYLL =: 'BNAME'BASE+P$CYLL ; cylinder low P$CYLH =: ^O<32> ; 011010 'BNAME'CYLH =: 'BNAME'BASE+P$CYLH ; cylinder high P$DH =: ^O<34> ; 011100 'BNAME'DH =: 'BNAME'BASE+P$DH ; drive/head DH.STA =: ^O<240> ; statically set bits DH.LBA =: ^O<100> ; address mode select (0=CHS,1=LBA) DH.DRV =: ^O< 20> ; drive select number DH.HS =: ^O< 17> ; head select DH.FIX =: DH.STA!DH.LBA ; fixed bits DH.PRM =: DH.FIX ; Primary device DH.SLV =: DH.FIX!DH.DRV ; Secondary device P$STAT =: ^O<36> ; 011110 'BNAME'STAT =: 'BNAME'BASE+P$STAT ; status CS.BSY =: ^O<200> ; busy CS.DRD =: ^O<100> ; drive ready CS.DWF =: ^O< 40> ; drive write fault CS.DSC =: ^O< 20> ; drive seek complete CS.DRQ =: ^O< 10> ; data request CS.COR =: ^O< 4> ; corrected data error CS.IDX =: ^O< 2> ; index pulse CS.ERR =: ^O< 1> ; error P$CMD =: ^O<36> ; 011110 'BNAME'CMD =: 'BNAME'BASE+P$CMD ; command CS.RD =: ^O< 41> ; read (w/o retry) CS.WT =: ^O< 61> ; write (w/o retry) CS.RVF =: ^O<101> ; read verify (w/o retry) CS.REC =: ^O< 20> ; recalibrate CS.RDM =: ^O<304> ; Read Multiply CS.WTM =: ^O<305> ; Write Multiply CS.SMM =: ^O<306> ; Set Multiply Mode CS.INF =: ^O<354> ; get info CS.DGN =: ^O<220> ; execute drive diagnostic CS.SF =: ^O<357> ; Set Features FR.STM =: ^O< 3> ; -> P$FR MD.PIO =: ^O< 10+000> ; -> P$SCNT FR.APM =: ^O< 5> ; -> P$FR (254) ; 17761024 <- 1? (? - PIO mode) ; 17761022 <- 3 ; 17761036 <- 357 ; #define ATA_CMD_READ_PIO 0x20 ; #define ATA_CMD_READ_PIO_EXT 0x24 ; #define ATA_CMD_READ_DMA 0xC8 ; #define ATA_CMD_READ_DMA_EXT 0x25 ; #define ATA_CMD_WRITE_PIO 0x30 ; #define ATA_CMD_WRITE_PIO_EXT 0x34 ; #define ATA_CMD_WRITE_DMA 0xCA ; #define ATA_CMD_WRITE_DMA_EXT 0x35 ; #define ATA_CMD_CACHE_FLUSH 0xE7 ; #define ATA_CMD_CACHE_FLUSH_EXT 0xEA ; #define ATA_CMD_PACKET 0xA0 ; #define ATA_CMD_IDENTIFY_PACKET 0xA1 ; #define ATA_CMD_IDENTIFY 0xEC 'BNAME'VEC =: 'BVEC' ; Interrupt vector 'BNAME'PRI =: 'BPRI' .ENDM PATA PATA WQ <^O<177120>> <^O<204>> <^O<5>> ; For WQ IDE and CF controller PATA WS <^O<177120>> <^O<204>> <^O<5>> ; For WQ IDE and CF controller PATA ZA <^O<161000>> <^O<350>> <^O<4>> ; For ZA CF controller PATA ZB <^O<161040>> <^O<354>> <^O<4>> ; For ZB CF controller PATA ZC <^O<161100>> <^O<360>> <^O<4>> ; For ZC CF controller PATA ZD <^O<161140>> <^O<364>> <^O<4>> ; For ZD CF controller PATA ZE <^O<161200>> <^O<370>> <^O<4>> ; For ZE CF controller PATA ZF <^O<161240>> <^O<374>> <^O<4>> ; For ZF CF controller MSVCSR =: ^O<172100> SLUBA =: ^O<176500> ; KDJ11-E SLUs base address SLUBV =: ^O<300> ; base vector SLUAA =: ^O<176600> ; KDJ11-E SLUs alternate address SLUAV =: ^O<400> ; alternate vector H$R0 =: ^O<177700> ; R0 bus address on some PDP-11 H$R1 =: ^O<177701> ; R1 bus address on some PDP-11 H$R2 =: ^O<177702> ; R2 bus address on some PDP-11 H$R3 =: ^O<177703> ; R3 bus address on some PDP-11 H$R4 =: ^O<177704> ; R4 bus address on some PDP-11 H$R5 =: ^O<177705> ; R5 bus address on some PDP-11 H$SP =: ^O<177706> ; SP bus address on some PDP-11 H$PC =: ^O<177707> ; PC bus address on some PDP-11 PCR =: ^O<177520> ; Page Control Register on KDJ11-A BCSR =: ^O<177520> ; Control/Status Register on KDJ11-B ; EK-PDP94-MG-001_Sep90.pdf pg. 5-27 CS.BRE =: ^O<100000> ; Battery backup reboot enanle (1 - battery backup voltage failed to maintain the system memory ; 0 - battery backup voltage maintained the system memory or ; there are no battery backup CS.PLS =: ^O<40000> ; DCOK is pulsed while the POK input remains asserted - ; system reboot was requested by the control panel switch CS.FIE =: ^O<20000> ; Force line clock interrupt enable. CS.DLR =: ^O<10000> ; Disable line clock register CS.CS1 =: ^O<4000> ; Clock select CS.CS0 =: ^O<2000> ; 00 - external BEVNT, 01 - on board 50 Hz, 10 - 60 Hz, 11 - 800 Hz CS.EHB =: ^O<1000> ; Enable HALT Break CS.SM =: ^O<400> ; Enable standalone mode CS.DW7 =: ^O<200> ; Disable 17773000 ROM windows CS.DW6 =: ^O<100> ; Disable 17765000 ROM windows CS.EEP =: ^O<40> ; 0 - ROM at 17765000, 1 - EEPROM at 17765000 CS.EWE =: ^O<20> ; 1 - EEPROM write enabled ; 10 ; Not used, read as zero CS.GC2 =: ^O<4> ; Processor mastership CS.GC1 =: ^O<2> ; grant count CS.GC0 =: ^O<1> ; 000 - disabled, 001 - 0.4 mks, ..., 111 - 25.6 mks PCRB =: ^O<177522> ; Page Control Register on KDJ11-B ; EK-PDP94-MG-001_Sep90.pdf pg. 5-29 CDR =: ^O<177524> ; J-11 configuration and display register; EK-PDP94-MG-001_Sep90.pdf pg. 5-30 ; -- SW1 - Console mode (1 - disable console) ; -- SW2 SW3 SW4 - boot ROM mode ; -- SW5 - force dialog mode ; -- SW6 SW7 SW8 - console baud rate CD.DCN =: ^O<200> ; Disable console CD.DLG =: ^O<10> ; Force dialog CD.SP2 =: ^O<4> ; UART CD.SP1 =: ^O<2> ; speed CD.SP0 =: ^O<1> ; select ADSR =: ^O<177526> ; J-11 additional status register; EK-PDP94-MG-001_Sep90.pdf pg. 5-31 ; ^O<100000> ; ^O<40000> AD.SS =: ^O<20000> ; Serial select (0 - 176500/300, 1 - 176600/400) AD.SE =: ^O<10000> ; Serial enable ; ^O<4000> ; ^O<2000> ; ^O<1000> AD.TOY =: ^O<400> ; TOY communication ; ^O<200> ; ^O<100> AD.MS =: ^O<40> ; Memory select (0 - 0..2 mb, 1 - 0..4 mb) AD.ME =: ^O<20> ; Memory enable ; ^O<10> ; ^O<4> AD.PMI =: ^O<2> ; Flag for PMI cycle (set by system) ; ^O<1> DCSR =: ^O<177730> ; J-11 diagnostic controller status register; EK-PDP94-MG-001_Sep90.pdf pg. 5-49 UBA ctrl DC.NXM =: ^O<100000> ; Diagnostic nonexistent mempry error register ; ^O<40000> ; ^O<20000> ; ^O<10000> ; ^O<4000> ; ^O<2000> ; ^O<1000> DC.DM =: ^O<400> ; Diagnostic mode DC.DON =: ^O<200> ; DNPR done ; ^O<100> ; ^O<40> ; ^O<20> DC.BRD =: ^O<10> ; Unibus boot ROM at 17 773 000 disabled DC.DR1 =: ^O<4> ; Diagnostic data register selection DC.DR0 =: ^O<2> ; ... DC.DGO =: ^O<1> ; Diagnostic DATI GO DDR =: ^O<177732> ; J-11 diagnostic data register; EK-PDP94-MG-001_Sep90.pdf pg. 5-51 KMCR =: ^O<177734> ; J-11 memory configuration register; EK-PDP94-MG-001_Sep90.pdf pg. 5-48 ;177740 low error address register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-18 ;177742 high error address register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-18 MSER =: ^O<177744> ; Memory system error register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-19 MS.PE =: ^O<100000> ; Parity error abort MS.PEH =: ^O< 200> ; Parity error high MS.PEL =: ^O< 100> ; Parity error low MS.PET =: ^O< 40> ; Parity error tag CCR =: ^O<177746> ; Cache Control Register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-19 CC.wTP =: ^O<2000> ; Write wrong parity CC.BP =: ^O<1000> ; Cache bypass CC.FL =: ^O< 400> ; Flush cache CC.EPA =: ^O< 200> ; Enable parity error abort CC.WWP =: ^O< 100> ; Write wrong parity CC.FM1 =: ^O< 10> ; Force miss bit 1 CC.FM0 =: ^O< 4> ; Force miss bit 0 CC.DM =: ^O< 2> ; Diagnostic mode CC.DPI =: ^O< 1> ; Disable cache parity interrupt CPUMR =: ^O<177750> ; Maintenance register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-21 CM.B15 =: ^O<100000> ; User Boot bit 15 Address CM.B14 =: ^O< 40000> ; User Boot bit 14 Address CM.B13 =: ^O< 20000> ; User Boot bit 13 Address CM.B12 =: ^O< 10000> ; User Boot bit 12 Address CM.UBS =: ^O< 1000> ; Unibus system CM.FPA =: ^O< 400> ; Floating Point Accelerator present CM.ID3 =: ^O< 200> ; Module ID bit 3 CM.ID2 =: ^O< 100> ; Module ID bit 2 On J11 - 0001 CM.ID1 =: ^O< 40> ; Module ID bit 1 CM.ID0 =: ^O< 20> ; Module ID bit 0 CM.HLT =: ^O< 10> ; HALT enabling CM.PW1 =: ^O< 4> ; Power On bit 1 option 00 - PC from 24, PS from 26 01 - MicroODT, PS = 0 CM.PW0 =: ^O< 2> ; Power On bit 0 option 10 - PC = 173000, PS = 0 11 - PC = USer Boot + "0000", PS = 0 CM.POK =: ^O< 1> ; Power OK CHMR =: ^O<177752> ; Cache hit/miss register, EK-KB11C-TM-001_1170procMan.pdf pg. VI-4-21 ;177754 Cache Data register (см PDP-11/44) ;177760 System Size - Lower ;177762 System Size - Upper ;177764 System Id CPUERR =: ^O<177766> ; CPU Error Register CE.HLT =: ^O<200> ; Illegal HALT CE.ADR =: ^O<100> ; Address errkr CE.NXM =: ^O< 40> ; Non-Existing memory CE.IO =: ^O< 20> ; I/O bus timeout CE.YSP =: ^O< 10> ; Yellow stack violation CE.RSP =: ^O< 4> ; Red stack violation ;177770 microbreak register, EK-KB11C-TM-001_1170procMan.pdf PIRQ =: ^O<177772> ; Program interrupt Request IR.PR7 =: ^O<100000> IR.PR6 =: ^O< 40000> IR.PR5 =: ^O< 20000> IR.PR4 =: ^O< 10000> IR.PR3 =: ^O< 4000> IR.PR2 =: ^O< 2000> IR.PR1 =: ^O< 1000> IR.PR0 =: ^O< 400> ;177774 Stack limit PS =: ^O<177776> PR0 =: ^O<0*40> PR1 =: ^O<1*40> PR2 =: ^O<2*40> PR3 =: ^O<3*40> PR4 =: ^O<4*40> PR5 =: ^O<5*40> PR6 =: ^O<6*40> PR7 =: ^O<7*40> ALT.RG =: ^O<4000> K.MODE =: ^O<0*40000> S.MODE =: ^O<1*40000> U.MODE =: ^O<3*40000> C.BIT =: ^O<1>