?login_element?

Subversion Repositories NedoOS

Rev

Rev 1210 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;      twind.as
  2.  
  3. ; 29.12.90
  4.  
  5. ;-----
  6. WT
  7.         CALL    EWT
  8.         XOR     A
  9.         LD      E,A
  10.         LD      D,A
  11.         JR      sR_BOX
  12. ;-----
  13. EWT
  14.         LD      E,(IX+3) ;wid
  15.         LD      D,(IX+2) ;hgt
  16.         EXX
  17.         LD      C,(IX)   ;x
  18.         LD      B,(IX+1) ;y
  19.         DEC     B
  20. WIND1
  21.         INC     B
  22.         PUSH    BC
  23.         CALL    sADDR
  24.         LD      B,E
  25. WIND    LD      A,0
  26.         OR      A
  27.         CALL    Z,sSPACE
  28.         DJNZ    WIND
  29.  
  30.         DEC     D
  31.         EXX
  32.         POP     BC
  33.         JR      NZ,WIND1
  34.  
  35.         LD      B,(IX+1)
  36.         CALL    sWATRB
  37.         LD      L,(IX+3)
  38.         LD      H,(IX+2)
  39.         CALL    sDRAW
  40.         CALL    sAT_NEXT
  41.         DEC     H
  42.         JR      NZ,WIND3
  43.  
  44.         LD      A,(IX+5)
  45.         JR      WIND4m1
  46. WIND3
  47.         CALL    sDRAW
  48.         LD      A,(IX+5)
  49.         BIT     7,A
  50.         JR      NZ,$+3
  51.  
  52.         LD      (DE),A
  53.  
  54.         CALL    sAT_NEXT
  55.         DEC     H
  56.         JR      NZ,WIND3
  57. WIND4m1
  58.         INC     E
  59. WIND4
  60.         BIT     7,A
  61.         RET     NZ
  62.  
  63.         LD      (DE),A
  64.         INC     E
  65.         DEC     L
  66.         JR      NZ,WIND4
  67.         RET
  68. ;-----
  69. sR_WT
  70. ;97(61):wt    - Вывод окна. Подфункция в рег. A: A=0 окно с одинарной рамкой, А=1 без рамки, А=2 с двойной рамкой, A=3..127 без рамки, A=128..255 только подкраска. IX= вектор окна
  71.         LD      HL,WIND+1
  72.         LD      E,0
  73.         BIT     7,A
  74.         JR      Z,WT00
  75.  
  76.         RES     7,A
  77.         DEC     E ;0xff
  78. WT00
  79.         LD      (HL),E
  80.         OR      A
  81.         JR      Z,WT ;A=0 окно с одинарной рамкой
  82.  
  83.         DEC     A
  84.         JR      Z,EWT ;A=1 окно без рамки
  85.  
  86.         DEC     A
  87.         JR      NZ,EWT
  88. ;A=2 окно с двойной рамкой
  89.         CALL    WT
  90.         XOR     A
  91.         LD      DE,#202
  92. sR_BOX
  93.         OR      A
  94.         JR      NZ,$+4
  95.         LD      A,#F
  96.  
  97.         LD      (BXCSR),A
  98.         EX      AF,AF'
  99.         LD      A,E
  100.         AND     7
  101.         LD      C,A
  102.         LD      A,D
  103.         AND     7
  104.         LD      B,A
  105.         EX      AF,AF'
  106.         AND     128
  107.         JR      Z,BOX
  108. ;BOX_
  109.         EXX
  110.         XOR     A
  111.         LD      BC,#A62F
  112. ;      ORG  $-2
  113. ;      CPL
  114. ;      AND  (HL)
  115.         JR      NASTR
  116. BOX
  117.         EXX
  118.         LD      A,-1
  119. ; LD  BC,OR NOP
  120.         LD      BC,#B6
  121. ;      ORG  $-2
  122. ;      OR   (HL)
  123. ;      NOP
  124.  
  125. NASTR
  126.         LD      (LEND),BC
  127.         LD      (CCPL+1),A
  128.         LD      HL,SRS+1
  129.         RES     6,(HL)
  130.         INC     A
  131.         JR      NZ,$+4
  132.  
  133.         SET     6,(HL)
  134.  
  135.         PUSH    IX
  136.         LD      B,(IX+1)
  137.         LD      C,(IX)
  138.         CALL    sADDR
  139.         EXX
  140.         PUSH    DE
  141.         EXX
  142.         POP     HL
  143.         LD      E,(IX+3)
  144.         LD      D,(IX+2)
  145.         LD      IX,TCORR
  146.         LD      A,C
  147.         AND     7
  148.         RLCA
  149.         LD      (IX+DCORR),A
  150.         INC     A
  151.         LD      (IX+DCORR1),A
  152.         RLCA
  153.         RLCA
  154. SRS     XOR     #FA
  155.         PUSH    AF
  156.         BIT     0,(IX+RSCR)
  157.         JR      NZ,$+4
  158.         AND     #7F
  159.         LD      (IX+DSTL),A
  160.         POP     AF
  161.         XOR     #38
  162.         BIT     1,(IX+RSCR)
  163.         JR      NZ,$+4
  164.         AND     #7F
  165.         LD      (IX+DSTR),A
  166.         LD      A,H
  167.         ADD     A,B
  168.         LD      H,A
  169.         PUSH    HL
  170.         LD      A,D
  171.         DEC     E
  172.         RLCA
  173.         RLCA
  174.         SUB     B
  175.         RLCA
  176.         LD      B,A
  177.         JR      WD1
  178. ;-----
  179. BXCSR   DEFB    %1111 ;адресуется через (IX+RSCR) ;d0: чёрная линия слева (DSTL) ;d1: чёрная линия справа (DSTR) ;d2: чёрная линия вверху ;d3: чёрная линия внизу
  180. RSCR    EQU     -1
  181. TCORR ;маски для левого и правого края
  182.         DEFW    -1
  183.         DEFW    #FE7F
  184.         DEFW    #FC3F
  185.         DEFW    #F81F
  186.         DEFW    #F00F
  187.         DEFW    #E007
  188.         DEFW    #C003
  189.         DEFW    #8001
  190. ;-----
  191. sDRAW1:
  192.         INC     H
  193.         LD      A,7
  194.         AND     H
  195.         JR      NZ,WD1 ;NO !!
  196.  
  197.         LD      A,#20
  198.         ADD     A,L
  199.         LD      L,A
  200.         JR      C,WD1 ;NEXT BLOK
  201.  
  202.         LD      A,H
  203.         SUB     8
  204.         LD      H,A
  205. WD1: ;тут патчится отрисовщик чёрной линии слева
  206.         SET     0,(HL)
  207.         LD      A,L
  208.         ADD     A,E
  209.         LD      L,A
  210. SETR: ;тут патчится отрисовщик чёрной линии справа
  211.         SET     7,(HL)
  212.         SUB     E
  213.         LD      L,A
  214.         DJNZ    sDRAW1
  215.  
  216. CORR:   LD      B,(IX+0) ;маска 0xff..0x01
  217. CORR1:  LD      C,(IX+0) ;адрес +1 по сравнению с предыдущим ;маска 0xff..0x80
  218.         INC     E
  219.         LD      D,E
  220.         BIT     3,(IX+RSCR)
  221.         CALL    NZ,LINE ;чёрная линия внизу
  222.         POP     HL
  223.         LD      E,D
  224.         BIT     2,(IX+RSCR)
  225.         CALL    NZ,LINE ;чёрная линия вверху
  226.         POP     IX
  227.         RET
  228. ;-----
  229.  
  230. LINE:
  231.         DEC     E
  232.         LD      A,B
  233.         JR      NZ,WD2
  234.  
  235.         AND     C
  236. LEND
  237.         CPL     ;NOP
  238.         AND     (HL)
  239.         LD      (HL),A
  240.         RET
  241. ;-----
  242. WD2:
  243.         CALL    LEND
  244. WD3:
  245.         INC     L
  246.         DEC     E
  247.         JR      Z,WD4
  248.  
  249. CCPL    LD      (HL),0
  250.         JR      WD3
  251. ;-----
  252. WD4:
  253.         LD      A,C
  254.         JR      LEND
  255. ;----- адреса патчей
  256. DSTL    EQU     WD1+1-TCORR
  257. DSTR    EQU     SETR+1-TCORR
  258. DCORR   EQU     CORR+2-TCORR
  259. DCORR1  EQU     CORR1+2-TCORR
  260. ;**;**
  261.