User Tag List

Страница 11 из 35 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя
Показано с 101 по 110 из 341

Тема: МС1201.2018

  1. #101

    Регистрация
    18.03.2011
    Адрес
    Воронеж
    Сообщений
    558
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ответил - это когда тот, кто задавал вопрос понял о чем спрашивал.
    Вопрос не праздный. Если делать свою минимальную реализацию железа, то для того, что бы заработала RT-11 (с загрузкой через терминальную линию), какие минимальные условия надо соблюсти ? Обязательно ли заводить прерывания от терминальной линии, обязательно ли от таймера ?
    Может это можно как-то обойти при генерации какой-то версии и какого-то монитора ?
    Сколько требуется по минимуму памяти (в каких случаях)?

  2. #102

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    Если делать свою минимальную реализацию железа
    Есть стандарт архитектуры, если следовать ему - всё работает. Хотящие странного - берут доки, берут исходники и изучают. Меня это не интересовало, поэтому всё, что я мог - написАл. Когда у меня что то не идёт или надо что то реализовать - беру доки, беру исходники - вдумчиво курю. Этот способ меня НИКОГДА не подводил. Другие способы (включая - может кто то ответит), как показывает практика - результат не гарантируют.

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    это когда тот, кто задавал вопрос понял о чем спрашивал.
    Если спрашивающий не понимает своего вопроса - он никогда не получит понятный ему ответ

  3. #103

    Регистрация
    18.03.2011
    Адрес
    Воронеж
    Сообщений
    558
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вы пишите драйвер CF для RSX. А почему не выкладываете то, что пишите ? Может кто-то что-то подскажет, может кто-то научится чему-то у Вас.
    Кстати, драйвер RSX для контроллера винчестера от ДВК написали ?

  4. #104

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    Вы пишите драйвер CF для RSX. А почему не выкладываете то, что пишите ?
    Платы в общем доступе нет, прошивка дорабатывается, возможны изменения драйвера. Будет готово - будет выложена. И прошивку ПЗУ и драйвера под RT и RSX

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    Может кто-то что-то подскажет
    У нас так много пишущих драйвера под RT, а особенно под RSX?

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    может кто-то научится чему-то у Вас
    Готовых драйвером (и простых и сложных) - и в RT и в RSX навалом. Как и наличие документации. Кому то помогло?

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    Кстати, драйвер RSX для контроллера винчестера от ДВК написали ?
    Больше 25 лет назад - в 93 году - почитайте тему Оживление Квант 4С

  5. #105

    Регистрация
    18.03.2011
    Адрес
    Воронеж
    Сообщений
    558
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    У нас так много пишущих драйвера под RT, а особенно под RSX?
    откуда они появятся при таком отношении ?


    Цитата Сообщение от Hunta Посмотреть сообщение
    Больше 25 лет назад - в 93 году - почитайте тему Оживление Квант 4С
    дайте, пожалуйста, прямую ссылку на скачивание драйвера и его исходника. К какой версии RSX он подходит ?

    у кого работает RSX на ДВК отзовитесь !

  6. #106

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    откуда они появятся при таком отношении ?
    Каком таком?

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    прямую ссылку на скачивание драйвера и его исходника
    MWDRV.MAC
    Код:
            .TITLE  MWDRV
            .IDENT  /01/
    
            .LIST   ME
            .LIST   BEX
            .NLIST  CND
            .NLIST  TTM
    
    ;
    ; DVK mini winchester controller driver
    ;
    ; MACRO library calls
    ;
    
    M$$W11=2
    LD$MW=1
    VC$MW=0
    
            .MCALL  PKTDF$
            .MCALL  KRBDF$,UCBDF$
    
            PKTDF$                  ; Define i/o packet offsets
            KRBDF$
            UCBDF$
    
    .MACRO DB REPT
      .REPT 'REPT'
        .WORD 0
      .ENDR
    .ENDM DB
    
    .MACRO PATCH REPT
    ; .REPT 'REPT'
    ;   NOP
    ; .ENDR
    .ENDM PATCH
    ;
    ; Equated symbols
    ;
    
    RETRY=2.                        ; Error retry count
    
    MWID=-20
            MW$ID=401
    MWPRE=-14
    MWERR=-14
            ER.SNF=400
            ER.TR0=1000
            ER.GFL=2000
            ER.HNF=10000
            ER.ACR=20000
            ER.DCR=40000
    MWREV=-12
    MWSEC=-12
    MWRD=-10
    MWCYL=-6
    MWTRK=-4
    MWCSR2=-2
            HSEEK= 20
            READ=  40
            WRITE= 60
            FORMAT=120
    
            S2.ERR=400
            S2.DRQ=4000
            S2.SEK=10000
            S2.WRF=20000
            S2.DWY=40000
    MWCSR=0
            ST.OPN= 1
            ST.INIT=10
            ST.IE=  100
            ST.DRQ= 200
            ST.DCP= 4000
            ST.BUSY=100000
    ;
    ; Local data
    ;
    ; Controller impure data tables (indexed by controller number)
    ;
    
    ;
    ; Diagnostic function code table
    ;
    FUNTBL: .WORD   IO.HMS!IQ.UMD, 20
            .WORD   IO.WDH!IQ.UMD, 120
    FUNTBE:
    
    .IF DF  R$$MPL
    
    S.VCTM=-1
    S.VITM=-1
    S.VKRB=-1
    S.VPKT=-1
    S.VSTS=-1
    S.VST2=-1
    
    EXEVEC: .WORD   0               ; Vector yet not filled
    
    SCTM:   .WORD   S.CTM
    SITM:   .WORD   S.ITM
    SKRB:   .WORD   S.KRB
    SPKT:   .WORD   S.PKT
    SSTS:   .WORD   S.STS
    SST2:   .WORD   S.ST2
    
    BLKC2:  .WORD   $BLKC2
    BMSET:  .WORD   $BMSET
    CRPAS:  .WORD   $CRPAS
    CVLBN:  .WORD   $CVLBN
    DTOER:  .WORD   $DTOER
    DVERR:  .WORD   $DVERR
    FORK:   .WORD   $FORK
    GTPKT:  .WORD   $GTPKT
    IODON:  .WORD   $IODON
    KISR6:  .WORD   KISAR6
    RLCN:   .WORD   $RLCN
    RQCND:  .WORD   $RQCND
    VOLVD:  .WORD   $VOLVD
    
    EXEVCL=<<<.-EXEVEC>/2>-1>
    
    SCBPAT: .WORD   CTM1,SCTM
            .WORD   ITM1,SITM
            .WORD   RKRB1,SKRB
            .WORD   KRB1,SKRB
            .WORD   KRB2,SKRB
            .WORD   KRB3,SKRB
            .WORD   KRB4,SKRB
            .WORD   KRB5,SKRB
            .WORD   PKT1,SPKT
            .WORD   PKT2,SPKT
            .WORD   PKT3,SPKT
            .WORD   PKT4,SPKT
            .WORD   STS1,SSTS
            .WORD   RST21,SST2
            .WORD   0
    
    .ENDC   ;DF R$$MPL
    
    RTTBL:  DB      M$$W11          ; Error retry count and positioning flag
    
    ;
    ; Driver dispatch table
    ;
    
            DDT$    MW,M$$W11,NEW=Y,OPT=Y   ; Generate dispatch table
    
    ;+
    ; ** - MWINI - Controller initiator
    ;
    ; This routine is entered from the queue I/O directive when an I/O request
    ; is queued and at the end of a previous I/O operation to propagate the ini-
    ; tion of the driver. If the specified controller is not busy, then an attempt
    ; is made to dequeue the next I/O request. Else a return to the caller is
    ; executed. If the dequeue attempt is successful, then the next I/O operation
    ; is initiated. A return to the caller is then executed.
    ;
    ; Inputs:
    ;
    ;       R5=address of the UCB of the controller to be initiated.
    ;
    ; Outputs:
    ;
    ;       If the specified controller is not busy and an I/O request is waiting
    ;       to be processed, then the request is dequeued and the I/O operation
    ;       is initiated.
    ;-
    
            .ENABL  LSB
    MWINI:  NOP                     ; OR BPT - CALL XDT - for debug only
            GTPKT$  MW,M$$W11       ; Get next i/o packet to process
    ;
    ; The following arguments are returned by $GTPKT:
    ;
    ;       R1=address of the I/O request packet.
    ;       R2=physical unit number of the request UCB.
    ;       R3=controller index.
    ;       R4=address of the status control block.
    ;       R5=address of the UCB of the controller to be initiated.
    ;
    ; Controller I/O request packet format:
    ;
    ;       WD. 00 -- I/O queue thread word.
    ;       WD. 01 -- request priority, event flag number.
    ;       WD. 02 -- address of the tcb of the requestor task.
    ;       WD. 03 -- pointer to second lun word in requestor task header.
    ;       WD. 04 -- contents of the first lun word in requestor task heade
    ;       WD. 05 -- I/O function code (IO.RLB or IO.WLB).
    ;       WD. 06 -- virtual address of I/O status block.
    ;       WD. 07 -- relocation bias of I/O status block.
    ;       WD. 10 -- I/O status block address (real or displacement + 14000
    ;       WD. 11 -- virtual address of AST service routine.
    ;       WD. 12 -- relocation bias of buffer address
    ;       WD. 13 -- buffer address of I/O transfer.
    ;       WD. 14 -- number of bytes to be transfered.
    ;       WD. 15 -- not used.
    ;       WD. 16 -- cylinder
    ;       WD. 17 -- sector in low and track in high byte of word
    ;       WD. 20 -- relocation bias of diagnostic reg. adrs else not used
    ;       WD. 21 -- diagnostic reg. blk adrs (real or displ.+140000)
    ;
    
            PATCH 5
    
            CALL    @RQCND          ; Request controller for data transfer
            MOV     S.VPKT(R4),R1   ; Retreive I/O packet address
    PKT1=.-2
            MOV     S.VKRB(R4),R3   ; Retrieve address of KRB
    KRB1=.-2
            MOVB    K.CON(R3),R3    ; Retrieve controller index
            CALL    @VOLVD          ; Validate volume valid
            BCS     50$             ; If CS we failed (JMP 200$ THRU 50$:)
            TST     R0              ; Transfer function?
            BMI     10$             ; If MI yes
            TST     I.PRM+2(R1)     ; Size the disk?
            BPL     50$             ; If PL no (JMP 200$ THRU 50$:)
    
            MOV     @S.VKRB(R4),R2  ; RETREIVE CSR ADDRESS
    KRB2=.-2
            CALL    MWWAIT          ;
            MOV     #IS.SUC&377, R0
            CLR     U.CNT(R5)
            JMP     220$            ;  and exit
    
    10$:                            ; Ref label
            PATCH 3
    
            MOV     #RETRY&377,RTTBL(R3)    ; Clear recal flag and set retries
    
            CLC                             ; Convert
            ROR     U.CNT(R5)               ;   to word count
    
            PATCH 5
    
            CMPB    #IO.HMS/^D<256>,I.FCN+1(R1)  ; DIAGNOSTIC FUNCTION?
            BNE     40$             ; IF NE NO
            MOV     #FUNTBL,R0      ; GET ADDRESS OF FUNCTION TABLE
    20$:    CMP     (R0)+,I.FCN(R1) ;  FUNCTION CODE MATCH?
            BEQ     30$             ; IF EQ YES
            TST     (R0)+           ; BYPASS CONTROLLER CODE
            CMP     #FUNTBE,R0      ; END OF FUNCTION TABLE?
            BEQ     40$             ; IF EQ YES
            BR      20$             ; TRY AGAIN
    30$:    MOV     (R0),U.BUF(R5)  ; SET CONTROLLER FUNCTION BITS
            BR      70$             ; GO CHECK LOGICAL BLOCK NUMBER
    40$:    MOV     #IE.IFC&377,R0  ; ASSUME ILLEGAL FUNCTION
            MOV     #READ,U.BUF(R5) ; ASSUME READ LOGICAL FUNCTION
            CMPB    #IO.RLB/256.,I.FCN+1(R1) ; READ LOGICAL FUNCTION?
            BHIS    60$             ; IF HIS FUNCTION IS LEGAL
    
    50$:    JMP     200$            ; FUNCTION IS ILLEGAL
    
    60$:    BEQ     70$             ; IF EQ FUNCTION WAS READ
                                    ; CONVERT TO WRITE LOGICAL FUNCTION
            ADD     #WRITE-READ, U.BUF(R5)
    70$:
            PATCH 3
    ;
    ; INITIATE I/O OPERATION
    ;
    MWLOOP:
            PATCH 5
    
            MOV     @S.VKRB(R4),R2  ; GET ADDRESS OF CSR
    KRB3=.-2
            MOV     S.VPKT(R4),R1   ; RETRIEVE ADDRESS OF I/O REQUEST PACKET
    PKT2=.-2
            MOVB    S.VITM(R4),S.VCTM(R4)   ; SET CURRENT DEVICE TIMEOUT COUNT
    ITM1=.-4
    CTM1=.-2
            CALL    MWWAIT                  ;
            MOV     I.PRM+10(R1), MWCYL(R2) ; INSERT CYLINDER ADDRESS
            MOVB    I.PRM+13(R1), MWTRK(R2) ; INSERT TRACK ADDRESS
            MOVB    I.PRM+12(R1), R0
            INC     R0
            BIC     #^C<17>, R0
            MOVB    R0,           MWSEC(R2) ; INSERT SECTOR ADDRESS
    ;
    ; On REAL ДВК set write predcompensation
    ;
             CMP     U.BUF(R5),    #WRITE
             BNE     80$
             MOV     #360./4,      MWPRE(R2)
    80$:
            MOV     U.BUF(R5),    MWCSR2(R2) ; LOAD FUNCTION AND GO
            CMP     U.BUF(R5),    #WRITE
            BNE     90$
            CALL    LOAD
    
    90$:
            CALL    @BMSET
            BIS     #ST.IE, (R2)
            BMI     100$
            BIC     #ST.IE, (R2)
            CALL    @(SP)+
            BR      110$
    100$:   RETURN
    
    ;+
    ; CANCEL i/o OPERATION IS A NOP FOR FILE STRUCTURED DEVICES.
    ;-
    MWCAN:                          ;;;NOP FOR MW
    
    ;+
    ; POWERFAIL IS HANDLED VIA THE DEVICE TIMEOUT FACILITY AND
    ; CAUSES NO IMMEDIATE ACTION ON THE UNIT.
    ;-
    MWPWF:
            RETURN
    
    ;+
    ; **-$MWINT-CONTROLLER INTERRUPTS
    ;-
    
            INTSE$  MW,PR4,M$$W11   ;;;SAVE REGISTERS AND SET PRIORITY
    
            PATCH 5
    
            MOV     U.SCB(R5),R4    ;;;GET ADDRESS OF SCB
            MOV     @S.VKRB(R4),R4  ;;;GET ADDRESS OF CSR
    KRB4=.-2
            BIC     #ST.IE,(R4)     ;;;CLEAR INTERRUPT ENABLE
            CALL    @FORK           ;;;CREATE A SYSTEM PROCESS
    
            PATCH 5
    
            MOV     R4,R2           ;COPY ADDRESS OF CSR
            MOV     U.SCB(R5),R4    ;RETRIEVE ADDRESS OF SCB
            MOV     S.VKRB(R4),R3   ;RETRIEVE ADDRESS OF KRB
    KRB5=.-2
            MOVB    K.CON(R3),R3    ;RETRIEVE CONTROLLER INDEX
            MOV     S.VPKT(R4),R1   ;GET i/o PACKET ADDRESS
    PKT3=.-2
    
    110$:   MOV     #IS.SUC&377,R0  ;ASSUME SUCCESSFUL TRANSFER
            BITB    #IQ.UMD,I.FCN(R1)  ;DIAGNOSTIC FUNCTION EXECUTED?
            BNE     220$            ;IF NE YES
    
            PATCH 5
    
            BIT     #S2.ERR, MWCSR2(R2)     ; Any errors ?
            BEQ     150$            ; Branch, if no
            CALL    @DVERR          ; Log device error
            CALL    FLUSH
    120$:   BITB    #IQ.X,I.FCN(R1) ; Inhibit retries ?
            BNE     180$            ; Branch, if yes
    130$:   DECB    RTTBL(R3)       ; Any more retries ?
            BLE     180$            ; Branch, if no
    140$:   JMP     MWLOOP          ; Retry entire operation
    
    150$:
            PATCH 5
    
            BITB    #IO.WLC&377,I.FCN(R1)   ; Write followed by write check ?
            BNE     170$                    ; Branch, if yes
            BITB    #US.WCK,U.STS(R5)       ; Write check enabled by MCR?
            BEQ     170$                    ; Branch, if no
    160$:   CMPB    U.BUF(R5), #WRITE       ; Write function ?
            BNE     170$                    ; Branch, if no
    ;       BIS     #2*2,U.BUF(R5)          ; Set write check function
    ;       BIT     #2*2,R1                 ; Was last function a write check ?
    ;       BNE     170$                    ; Branch, if yes
    ;       MOV     #RETRY&377,RTTBL(R3)    ; Reinitialize retry count
    ;       BR      140$                    ; Start write check operation
    
    170$:   CMPB    U.BUF(R5), #READ
            BNE     172$
            CALL    UNLOAD
    172$:
            ADD     #256.*2/100, I.PRM(R1)  ; Adjust KISAR6 value
            SUB     #256., U.CNT(R5)        ; Yet one sector
            BHI     175$                    ; Branch, if request not sutisfied
            CLR     U.CNT(R5)               ; All request
            BR      190$
    
    175$:
            PATCH 5
    
          ; HALT                            ; !!!!!!
    
            INCB    I.PRM+12(R1)            ; Next sector
            BICB    #^C<17>, I.PRM+12(R1)   ; Up to 16. (fixed) sectors on track
            BNE     140$                    ; Branch, if not sector #0
            INCB    I.PRM+13(R1)            ; Next track
            CMPB    I.PRM+13(R1),U.PRM+1(R5); Max head
            BLO     140$
            CLRB    I.PRM+13(R1)            ; Zero header
            INC     I.PRM+10(R1)            ; Next cylinder
            BR      140$
    
    180$:
            MOV     #IE.VER&377,R0  ;UNRECOVERABLE ERROR
            CLR     R1
            BR      200$
    
    190$:   MOV     I.PRM+4(R1), R1
            CLC
            ROL     U.CNT(R5)
            SUB     U.CNT(R5), R1   ; CALCULATE BYTES ACTUALLY TRANSFERED
    
    200$:   MOVB    RTTBL(R3),R2    ;GET FINAL ERROR RETRY COUNT
            BIS     #RETRY*256.,R2  ;MERGE STARTING RETRY COUNT
    
            PATCH 2
    
            CALL    @RLCN           ;RELEASE CONTROLLER
            CALL    @IODON          ;FINISH i/o OPERATION
            JMP     MWINI           ;PROCESS NEXT REQUEST
    
    ;
    ; DEVICE TIMEOUT RESULTS IN A HOME SEEK FOLLOWED BY THE i/o OPERATION
    ; BEING REPEATED UNLESS THE OPERATION WAS DIAGNOSTIC.  TIMEOUTS ARE
    ; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A
    ; HARDWARE FAILURE.
    ;
    
    MWOUT:  INCB    S.VSTS(R4)      ;;;LEAVE CONTROLLER BUSY
    STS1=.-2
            CALL    @DTOER          ;;;LOG DEVICE TIMEOUT
            BCC     230$            ;IF CC TIMEOUT DURING NORMAL FUNCTION
    
    220$:   CALL    @CRPAS          ; Pass controller registers to task
            BR      190$            ; Diagnostic processing complete
    
    230$:   MOV     S.VPKT(R4),R1   ;GET I/O PACKET ADDRESS
    PKT4=.-2
            BITB    #IQ.X,I.FCN(R1) ;INHIBIT RETRIES?
            BNE     180$            ;IF NE YES
            BR      130$            ;
    
            .DSABL  LSB
    
    ;+
    ;
    ;-
    MWWAIT:
            PATCH 6
    
            TST     (R2)
            BMI     MWWAIT
            RETURN                  ;
    ;+
    ;
    ;-
    FLUSH:
            PATCH 4
            TST     MWRD(R2)
            BIT     #S2.DRQ, MWCSR2(R2)
            BNE     FLUSH
            RETURN
    ;+
    ; R0 -
    ; R1 - I/O packet address
    ; R2 - CSR
    ; R3 - controller index
    ; R4 - SCB
    ; R5 - UCB
    ;-
    LOAD:
            PATCH 4
            BIT     #S2.DRQ, MWCSR2(R2)
            BEQ     LOAD
            MOV     R0, -(SP)
            MOV     U.CNT(R5), R0
            MOV     R5, -(SP)       ; for KISAR6
            MOV     R4, -(SP)
            MOV     R3, -(SP)
            MOV     KISR6, R5
            MOV     (R5), -(SP)
            MOV     I.PRM(R1), (R5)
            MOV     I.PRM+2(R1), R4
            MOV     #256., R3
    10$:    TST     R0
            BEQ     20$
            MOV     (R4)+, MWRD(R2)
            DEC     R0
            BR      30$
    20$:    CLR     MWRD(R2)
    30$:    SOB     R3, 10$
            BR      COMM
    
    ;+
    ; R0 -
    ; R1 - I/O packet address
    ; R2 - CSR
    ; R3 - controller index
    ; R4 - SCB
    ; R5 - UCB
    ;-
    UNLOAD:
            PATCH 4
    
            BIT     #S2.DRQ, MWCSR2(R2)
            BEQ     UNLOAD
            MOV     R0, -(SP)
            MOV     U.CNT(R5), R0
            MOV     R5, -(SP)       ; for KISAR6
            MOV     R4, -(SP)
            MOV     R3, -(SP)
            MOV     KISR6, R5
            MOV     (R5), -(SP)
            MOV     I.PRM(R1), (R5)
            MOV     I.PRM+2(R1), R4
            MOV     #256., R3
    10$:    TST     R0
            BEQ     20$
            MOV     MWRD(R2), (R4)+
            DEC     R0
            BR      30$
    20$:    TST     MWRD(R2)
    30$:    SOB     R3, 10$
    COMM:   MOV     (SP)+, (R5)
            MOV     (SP)+, R3
            MOV     (SP)+, R4
            MOV     (SP)+, R5
            MOV     (SP)+, R0
            RETURN
    ;+
    ; **-MWCHK-VALIDATE AND CONVERT THE LBN
    ;
    ; THIS ROUTINE IS CALLED FROM $DRQRQ TO DO LBN PROCESSING
    ; FOR DEVICES WHICH SUPPORT QUEUE OPTIMIZATION.  IF BLKC2
    ; DETECTS AN ERROR IT WILL RETURN TO THE CORRECT PLACE IN
    ; $DRQRQ AFTER CALLING $IOALT.
    ;
    ; INPUTS:
    ;
    ;       R1=I/O PACKET ADDRESS
    ;       R5=UCB ADDRESS
    ;
    ; OUTPUTS:
    ;
    ;       IF THE CHECKS SUCCEEDS, THEN THE LBN IN THE PACKET
    ;       IS REPLACED BY THE CYLINDER/TRACK/SECTOR.  R1 IS PRESERVED.
    ;
    ;       IF THE CHECKS FAILS, THEN $IOALT IS ENTERED WITH A FINAL
    ;       STATUS OF IE.BLK AND A RETURN TO THE CORRECT PLACE IN
    ;       $DRQRQ IS EXECUTED.
    ;
    ;
    ; NOTE: ALL FUNCTIONS PUT INTO THE DRIVER QUEUE ARRIVE HERE.
    ;       THESE INCLUDE IO.ATT, IO.DET, AND ACP FUNCTIONS.
    ;-
    
    MWCHK:
            PATCH 5
    
            MOV     I.FCN(R1),-(SP) ;PUT THE FUNCTION ONTO THE STACK
            CMPB    #IO.ATT/256.,1(SP) ;IS IT ATTACH
            BEQ     20$             ;IF EQ YES - LEAVE IT ALONE
            CMPB    #IO.DET/256.,1(SP) ;IS IT DETACH
            BEQ     20$             ;IF EQ YES - LEAVE IT ALONE
            BIC     #7,(SP)         ;CLEAR THE SUBFUNCTION BITS
            CMP     #IO.STC,(SP)    ;IS IT SET CHARACTERISTICS?
            BEQ     20$             ;IF EQ YES - LEAVE IT ALONE
            TST     (SP)+           ;CLEAN THE STACK
            CALL    @BLKC2          ;CHECK LOGICAL BLOCK NUMBER
            CALL    @CVLBN          ;CONVERT LOGICAL BLOCK NUMBER
            SWAB    R1              ;SWAP TRACK TO HIGH BYTE
            BIS     R1,R0           ;MERGE TRACK WITH SECTOR
            MOV     R0,I.PRM+12(R3) ;SAVE DESIRED TRACK AND SECTOR ADDRESS
            MOV     R2,I.PRM+10(R3) ;SAVE DESIRED CYLINDER ADDRESS
            MOV     R3,R1           ;RESTORE THE PACKET ADDRESS
    10$:    RETURN                  ;EXIT
    20$:    TST     (SP)+           ;CLEAN THE STACK
            BR      10$             ;AND EXIT
    
    
    .IF DF  R$$MPL
    
    MWKRB:  BCS     20$             ; Off-line request - done
    
            TST     EXEVEC          ; If done already
            BNE     20$             ; Skip this
    
            PATCH 5
    
            MOV     R2,-(SP)        ; Save R2
            MOV     R3,-(SP)        ;  and R3
            MOV     @#KINAR6,-(SP)  ;   and mapping APR6
            MOV     @#112,R0        ; Get address of table of entries
            MOV     (R0),R0         ; Get address of APR bias (first word)
            MOV     (R0),@#KINAR6   ; Map common through APR6
            MOV     #EXEVEC,R3      ; Point to vector
            MOV     #EXEVCL,R2      ; Specify length of vector
            CALL    @#140004        ; Translate vector
            MOV     (SP)+,@#KINAR6  ; Restore mapping
            MOV     (SP)+,R3        ;  And R3
            MOV     (SP)+,R2        ;   And R2
            MOV     #SCBPAT,R0      ; Get patch table address
    10$:    MOV     (R0)+,R1        ; Move table entry
            BEQ     20$             ; If EQ - end of table
            MOV     @(R0)+,(R1)     ; If NEQ - start to patch
            BR      10$             ; Complete it
    20$:
            RETURN
    
    MWUCB:  RETURN
    
            PATCH 40
    
    .ENDC   ;DF R$$MPL
    
            .END
    MWTAB.MAC
    Код:
            .TITLE  MWTAB
            .IDENT  /01/
    ;
    ; SYSTEM TABLES
    ;
    ; MACRO LIBRARY CALLS
    ;
             .MCALL  CLKDF$
             .MCALL  KRBDF$
             .MCALL  SCBDF$
             .MCALL  UCBDF$
    
             CLKDF$                  ;DEFINE CLOCK BLOCK OFFSETS
             KRBDF$
             SCBDF$                  ;DEFINE SCB OFFSETS
             UCBDF$                  ;DEFINE UCB OFFSETS
    
    ;
    ;
    
    $MWDAT::
    ;
    ;                                               MW CTB
    ;
            .WORD   0               ; L.ICB
    $CTB0:
            .WORD   $CTB1           ; L.LNK
            .ASCII  /MW/            ; L.NAM
            .WORD   .DC0            ; L.DCB
            .BYTE   2               ; L.NUM
            .BYTE   0               ; L.STS
    $MWCTB::                        ; L.KRB
            .WORD   $MWA
            .WORD   $MWB
    ;
    ;                                               MW DCB
    ;
    $MWTBL=0                        ;LOADABLE MWDRV
    $MWDCB::
    .DC0:
            .WORD   .DC1            ; D.LNK
            .WORD   .MW0            ; D.UCB
            .ASCII  /MW/            ; D.NAM
            .BYTE   0,1             ; D.UNIT
            .WORD   MWND-MWST       ; D.UCBL
            .WORD   $MWTBL          ; D.DSP
            .WORD   177477,70,0,177200,377,0,0,377 ; D.MSK
            .WORD   0               ; D.PCB
    ;
    ;                                               MW UCB'S
    ;
    MWST=.
            .IF     DF M$$MUP
            .WORD   0
            .ENDC
    .MW0::
            .WORD   .DC0
            .WORD   .-2
            .BYTE   UC.ALG!1,US.MNT
            .BYTE   0,US.OFL
            .WORD   DV.DIR!DV.MSD!DV.UMD!DV.F11!DV.MNT
            .WORD   2
            .WORD   0.
            .WORD   512.
            .WORD   $MW0
            .WORD   0,0,0,0,0,0,0,0
            .BYTE   16.,8.
            .WORD   1024.
    MWND=.
    
            .IF     DF M$$MUP
            .WORD   0
            .ENDC
    .MW1::
            .WORD   .DC0
            .WORD   .-2
            .BYTE   UC.ALG!1,US.MNT
            .BYTE   0,US.OFL
            .WORD   DV.DIR!DV.MSD!DV.UMD!DV.F11!DV.MNT
            .WORD   2
            .WORD   0.
            .WORD   512.
            .WORD   $MW1
            .WORD   0,0,0,0,0,0,0,0
            .BYTE   16.,8.
            .WORD   1024.
    ;
    ;                                               MW SCB'S
    ;
    $MW0::
            .WORD   0,.-2           ; S.LHD
            .WORD   0,0,0,0         ; S.FRK
            .WORD   0               ; S.KS5
            .WORD   0               ; S.PKT
            .BYTE   0               ; S.CTM
            .BYTE   4.              ; S.ITM
            .BYTE   0               ; S.STS
            .BYTE   S3.OPT          ; S.ST3
            .WORD   0!S2.LOG!S2.OPT!0       ; S.ST2
            .WORD   $MWA            ; S.KRB
            .BYTE   9.              ; S.RCNT
            .BYTE   -20             ; S.ROFF
            .WORD   0               ; S.EMB
    
    $MW1::
            .WORD   0,.-2           ; S.LHD
            .WORD   0,0,0,0         ; S.FRK
            .WORD   0               ; S.KS5
            .WORD   0               ; S.PKT
            .BYTE   0               ; S.CTM
            .BYTE   4.              ; S.ITM
            .BYTE   0               ; S.STS
            .BYTE   S3.OPT          ; S.ST3
            .WORD   0!S2.LOG!S2.OPT!0       ; S.ST2
            .WORD   $MWB            ; S.KRB
            .BYTE   9.              ; S.RCNT
            .BYTE   -20             ; S.ROFF
            .WORD   0               ; S.EMB
    ;
    ;                                               MWA  KRB
    ;
            .BYTE   PR4             ; K.PRI
            .BYTE   300/4           ; K.VCT
            .BYTE   0*2,0           ; K.CON, K.IOC
            .WORD   0!KS.OFL        ; K.STS
    $MWA::  .WORD   174020          ; K.CSR
            .WORD   MWA-$MWA        ; K.OFF
            .BYTE   0,0             ; K.HPU
            .WORD   0               ; K.OWN
            .WORD   0,.-2           ; K.CRQ
            .BLKW   6               ; MAPPING ASSIGNMENT BLOCK
            .WORD   0               ; KE.RHB
    MWA:
    ;
    ;                                               MWB  KRB
    ;
            .BYTE   PR4             ; K.PRI
            .BYTE   310/4           ; K.VCT
            .BYTE   1*2,0           ; K.CON, K.IOC
            .WORD   0!KS.OFL        ; K.STS
    $MWB::  .WORD   174060          ; K.CSR
            .WORD   MWB-$MWB        ; K.OFF
            .BYTE   0,0             ; K.HPU
            .WORD   0               ; K.OWN
            .WORD   0,.-2           ; K.CRQ
            .BLKW   6               ; MAPPING ASSIGNMENT BLOCK
            .WORD   0               ; KE.RHB
    MWB:
    ;
    ;                         MW Configuration
    ;
    ;                       Physical Unit Number
    ;
    ;       0       1       2       3       4       5       6       7
    ;
    ; MWA   MW0:
    ; MWB           MW1:
    ;
    ;
    $MWEND::
    
    .DC1 = 0                                ; END OF DCB LIST FOR MW:
    
    $CTB1 = 0                               ; END OF CTB LIST FOR MW:
    
            .END
    Работает под RSX-11M-Plus v4.0 и v4.6. Весьма не доделан в плане качества, но вряд ли буду доделывать

    - - - Добавлено - - -

    Готовая система
    http://www.kpxx.ru/KBAHT4C/Софт/RSX-...Патрона
    Там есть готовый драйвер

  7. #106
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #107

    Регистрация
    18.03.2011
    Адрес
    Воронеж
    Сообщений
    558
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а готовый ?
    А возможно сделать поддержку 2-х винчестеров ?

  9. #108

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Читать не умеем?
    Готовый в образе. И он изначально поддерживал два винчестера - потому что у меня так было сделано в Кванте

  10. #109

    Регистрация
    18.03.2011
    Адрес
    Воронеж
    Сообщений
    558
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Весьма не доделан в плане качества
    что не доделано ? и что значит "качество" ?

    Дайте, пожалуйста, командные строки компиляции и линковки.

  11. #110

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ra3qdp Посмотреть сообщение
    что не доделано ? и что значит "качество" ?
    То и значит, что его код надо ещё вылизать по размеру и скорости работы
    Код:
    .ENABLE SUBSTITUTION
    .PARSE <FILSPC> "[" $DR $DR
    .PARSE $DR "]" $DR
    .SETS $DR "['$DR']"
    .GOSUB GEN MW
    .EXIT
    .GEN:
    .SETS P1 COMMAN
    MAC '$DR''P1'TAB;1,'$DR''P1'TAB;1=LB:[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SY:'$DR''P1'TAB
    MAC '$DR''P1'DRV;1,'$DR''P1'DRV;1=LB:[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SY:'$DR''P1'DRV
    .OPEN '$DR'TMP.BLD;1
    .DATA '$DR''P1'DRV;1/-HD/-MM,'$DR''P1'DRV;1/-SP/CR,'$DR''P1'DRV;1='$DR''P1'DRV,'
    $DR''P1'TAB
    .DATA LB:[3,54]RSXVEC.STB/SS
    .DATA LB:[1,1]EXELIB/LB
    .DATA /
    .DATA STACK=0
    .DATA UNITS=0
    .DATA PAR=DRVPAR:120000:20000
    .DATA //
    .CLOSE
    TKB @'$DR'TMP.BLD;1
    .RETURN

Страница 11 из 35 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Запустить МС1201.02
    от Unik в разделе ДВК, УКНЦ
    Ответов: 99
    Последнее: 20.09.2023, 17:34
  2. Оживление МС1201.02
    от DATAsoft в разделе ДВК, УКНЦ
    Ответов: 18
    Последнее: 08.12.2018, 22:13
  3. МС1201.03 и МС1201.04 отличие (апгрейд?)
    от palsw в разделе ДВК, УКНЦ
    Ответов: 129
    Последнее: 20.04.2016, 15:00
  4. МС1201 - ТО и паспорт
    от stealth_w в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 13.12.2014, 22:00
  5. Ремонт МС1201.02
    от SKcorp. в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 08.07.2011, 21:45

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •