Go to most recent revision |
    Blame |
    Compare with Previous |
    Last modification |
    View Log
    | Download
  
  
;      twind.as
 
 
 
; 29.12.90
 
 
 
;-----
 
WT
 
        CALL    EWT
 
        XOR     A
 
        LD      E,A
 
        LD      D,A
 
        JR      sR_BOX
 
;-----
 
EWT
 
        LD      E,(IX+3)
 
        LD      D,(IX+2)
 
        EXX
 
        LD      C,(IX)
 
        LD      B,(IX+1)
 
        DEC     B
 
WIND1
 
        INC     B
 
        PUSH    BC
 
        CALL    sADDR
 
        LD      B,E
 
WIND    LD      A,0
 
        OR      A
 
        CALL    Z,sSPACE
 
        DJNZ    WIND
 
 
 
        DEC     D
 
        EXX
 
        POP     BC
 
        JR      NZ,WIND1
 
 
 
        LD      B,(IX+1)
 
        CALL    sWATRB
 
        LD      L,(IX+3)
 
        LD      H,(IX+2)
 
        CALL    sDRAW
 
        CALL    sAT_NEXT
 
        DEC     H
 
        JR      NZ,WIND3
 
 
 
        LD      A,(IX+5)
 
        JR      WIND4-1
 
WIND3
 
        CALL    sDRAW
 
        LD      A,(IX+5)
 
        BIT     7,A
 
        JR      NZ,$+3
 
 
 
        LD      (DE),A
 
 
 
        CALL    sAT_NEXT
 
        DEC     H
 
        JR      NZ,WIND3
 
 
 
        INC     E
 
WIND4
 
        BIT     7,A
 
        RET     NZ
 
 
 
        LD      (DE),A
 
        INC     E
 
        DEC     L
 
        JR      NZ,WIND4
 
        RET
 
;-----
 
sR_WT
 
;97(61):wt    - Вывод окна. Подфункция в рег. A: A=0 окно с одинарной рамкой, А=1 без рамки, А=2 с двойной рамкой, A=3..127 без рамки, A=128..255 только подкраска. IX= вектор окна
 
        LD      HL,WIND+1
 
        LD      E,0
 
        BIT     7,A
 
        JR      Z,WT00
 
 
 
        RES     7,A
 
        DEC     E
 
WT00
 
        LD      (HL),E
 
        OR      A
 
        JR      Z,WT
 
 
 
        DEC     A
 
        JR      Z,EWT
 
 
 
        DEC     A
 
        JR      NZ,EWT
 
 
 
        CALL    WT
 
        XOR     A
 
        LD      DE,#202
 
sR_BOX
 
        OR      A
 
        JR      NZ,$+4
 
 
 
        LD      A,#F
 
 
 
        LD      (BXCSR),A
 
        EX      AF,AF'
 
        LD      A,E
 
        AND     7
 
        LD      C,A
 
        LD      A,D
 
        AND     7
 
        LD      B,A
 
        EX      AF,AF'
 
        AND     128
 
        JR      Z,BOX
 
;BOX_
 
        EXX
 
        XOR     A
 
        LD      BC,#A62F
 
;      ORG  $-2
 
;      CPL
 
;      AND  (HL)
 
        JR      NASTR
 
BOX
 
        EXX
 
        LD      A,-1
 
; LD  BC,OR NOP
 
        LD      BC,#B6
 
;      ORG  $-2
 
;      OR   (HL)
 
;      NOP
 
 
 
NASTR
 
        LD      (LEND),BC
 
        LD      (CCPL+1),A
 
        LD      HL,SRS+1
 
        RES     6,(HL)
 
        INC     A
 
        JR      NZ,$+4
 
 
 
        SET     6,(HL)
 
 
 
        PUSH    IX
 
        LD      B,(IX+1)
 
        LD      C,(IX)
 
        CALL    sADDR
 
        EXX
 
        PUSH    DE
 
        EXX
 
        POP     HL
 
        LD      E,(IX+3)
 
        LD      D,(IX+2)
 
        LD      IX,TCORR
 
        LD      A,C
 
        AND     7
 
        RLCA
 
        LD      (IX+DCORR),A
 
        INC     A
 
        LD      (IX+DCORR1),A
 
        RLCA
 
        RLCA
 
SRS     XOR     #FA
 
        PUSH    AF
 
        BIT     0,(IX+RSCR)
 
        JR      NZ,$+4
 
        AND     #7F
 
        LD      (IX+DSTL),A
 
        POP     AF
 
        XOR     #38
 
        BIT     1,(IX+RSCR)
 
        JR      NZ,$+4
 
        AND     #7F
 
        LD      (IX+DSTR),A
 
        LD      A,H
 
        ADD     A,B
 
        LD      H,A
 
        PUSH    HL
 
        LD      A,D
 
        DEC     E
 
        RLCA
 
        RLCA
 
        SUB     B
 
        RLCA
 
        LD      B,A
 
        JR      WD1
 
;-----
 
BXCSR   DEFB    %1111
 
RSCR    EQU     -1
 
TCORR
 
        DEFW    -1
 
        DEFW    #FE7F
 
        DEFW    #FC3F
 
        DEFW    #F81F
 
        DEFW    #F00F
 
        DEFW    #E007
 
        DEFW    #C003
 
        DEFW    #8001
 
;-----
 
sDRAW1:
 
        INC     H
 
        LD      A,7
 
        AND     H
 
        JR      NZ,WD1 ;NO !!
 
 
 
        LD      A,#20
 
        ADD     A,L
 
        LD      L,A
 
        JR      C,WD1 ;NEXT BLOK
 
 
 
        LD      A,H
 
        SUB     8
 
        LD      H,A
 
WD1:
 
        SET     0,(HL)
 
        LD      A,L
 
        ADD     A,E
 
        LD      L,A
 
SETR:
 
        SET     7,(HL)
 
        SUB     E
 
        LD      L,A
 
        DJNZ    sDRAW1
 
 
 
CORR:   LD      B,(IX+0)
 
CORR1:  LD      C,(IX+0)
 
        INC     E
 
        LD      D,E
 
        BIT     3,(IX+RSCR)
 
        CALL    NZ,LINE
 
        POP     HL
 
        LD      E,D
 
        BIT     2,(IX+RSCR)
 
        CALL    NZ,LINE
 
        POP     IX
 
        RET
 
;-----
 
 
 
LINE:
 
        DEC     E
 
        LD      A,B
 
        JR      NZ,WD2
 
 
 
        AND     C
 
LEND
 
        CPL     ;NOP
 
        AND     (HL)
 
        LD      (HL),A
 
        RET
 
;-----
 
WD2:
 
        CALL    LEND
 
WD3:
 
        INC     L
 
        DEC     E
 
        JR      Z,WD4
 
 
 
CCPL    LD      (HL),0
 
        JR      WD3
 
;-----
 
WD4:
 
        LD      A,C
 
        JR      LEND
 
;-----
 
DSTL    EQU     WD1+1-TCORR
 
DSTR    EQU     SETR+1-TCORR
 
DCORR   EQU     CORR+2-TCORR
 
DCORR1  EQU     CORR1+2-TCORR
 
;**;**