[HECnet] DAP

G. gerry77 at mail.com
Tue Dec 10 23:47:20 PST 2019


On Tue, 10 Dec 2019 22:03:35 -0500, Thomas DeBellis wrote:

> The first instruction is a branch-on-bit-set and it looks like it is 
> testing a bit and branching if it is set. It would appear that bit is 
> associated with V7 DAP, based both on the symbolic value and comment.

Correct. I'm far from being proficient at VAX assembly, but...

|  596 CHECK_PROTOCOL_VERSION:                 ; Set appropriate DAP$Q_DCODE_FLG bits
|  597         MOVZBL  DAP$B_VERNUM(R9),R0     ; Combine version number and ECO
|  598         ASHL    #8,R0,R0                ;  number fields into one 16-bit
|  599         ADDB2   DAP$B_ECONUM(R9),R0     ;  value for easy comparison
|  600
|  601 ;
|  602 ; Set status flag if partner implemented to DAP spec since V4.1.
|  603 ;
|  604
|  605         CMPW    R0,#^X0401              ; Did partner implement since DAP V4.1?
|  606         BLSSU   10$                     ; Branch if not
|  607         $SETBIT #DAP$V_GEQ_V41,(R9)     ; Set flag
|
| [Same for V4.2, V5.2, V5.4, V5.6, and V6.0]
|
|  650 ; Set status flag if partner implemented to DAP spec since V7.0.
|  651 ;
|  652
|  653         CMPW    R0,#^X0700              ; Did partner implement since DAP V7.0?
|  654         BLSSU   10$                     ; Branch if not
|  655         $SETBIT #DAP$V_GEQ_V70,(R9)     ; Set flag
|  656
|
| [Same for V7.1 and V7.2 too]

> If that branch isn't taken, then an unconditional branch is taken to what 
> appears to be an unsupported function return.

It seems so:

| 2462 ;++
| 2463 ; The ACCFUNC field value is unsupported for state table context.
| 2464 ;--
| 2465
| 2466 FAL$UNS_ACCFUNC::                       ; Entry point
| 2467         MOVL    #DAP$_ACCFUNC,R0        ; Get field ID code
| 2468         BRW     ERR_UNSUPPORT           ; Return error in Status message
| ....
| 3165 ;++
| 3166 ; Return DAP unsupported error.
| 3167 ; R0 contains DAP field ID code on input.
| 3168 ;--
| 3169
| 3170 ERR_UNSUPPORT:                          ; Entry point
| 3171         MOVZBL  DAP$B_TYPE(R9),R1       ; Get DAP message type
| 3172         MOVL    #DAP$_UNSUPPORT,R2      ; Get DAP MACCODE value
| 3173         BRB     EXIT_STS_FAIL           ; Send Status message
| ....
| 3183 ;++
| 3184 ; Build and send (failure) Status message to partner.
| 3185 ; Declare this last message of a response sequence and exit state with failure.
| 3186 ; R0 contains RMS completion code on input.
| 3187 ;--
| 3188
| 3189 EXIT_STS_FAIL:                          ; Entry point
| 3190         BISL2   #FAL$M_LAST_MSG,(R8)    ; Declare this last message to block
| 3191         BSBW    FAL$ENCODE_STS          ; Build Status message
| 3192         BSBW    FAL$TRANSMIT            ; Send Status message to partner

G.




More information about the Hecnet-list mailing list