Metropoli BBS
VIEWER: viewsel.asm MODE: TEXT (ASCII)
.data
  lim dw ?
  bas dd ?
  acc dw ?
.code
viewsel proc,sel:word   ;prints info of selector
  lsl ax,sel
  mov lim,ax
  mov bx,sel
  mov ax,6
  int 31h
  shl ecx,16
  mov cx,dx
  mov bas,ecx
  lar ax,sel
  mov acc,ax
  callp printf,"sel=%xh base=%xh limit=%xh acc=%b\n",sel,bas,lim,acc
  shr acc,8
  .if acc & 128
    callp print,"(P)"
  .else
    callp print,"(NP)"
  .endif
  callp print,"(--)"
  .if acc & 16
    callp print,"(CD)"
  .else
    callp print,"(sys)"
    callp print,"\n"
    ret
  .endif
  .if acc & 8
    callp print,"(C)"
    .if acc & 4
      callp print,"(C)"
    .else
      callp print,"(NC)"
    .endif
    .if acc & 2
      callp print,"(R)"
    .else
      callp print,"(NR)"
    .endif
    .if acc & 1
      callp print,"(A)"
    .else
      callp print,"(NA)"
    .endif
  .else
    callp print,"(D)"
    .if acc & 4
      callp print,"(ED)"
    .else
      callp print,"(EU)"
    .endif
    .if acc & 2
      callp print,"(W)"
    .else
      callp print,"(NW)"
    .endif
    .if acc & 1
      callp print,"(A)"
    .else
      callp print,"(NA)"
    .endif
  .endif
  callp print,"\n"
  ret
viewsel endp
[ RETURN TO DIRECTORY ]