Login

Subversion Repositories NedoOS

Rev

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

;      twind.as

; 29.12.90

;-----
WT
        CALL    EWT
        XOR     A
        LD      E,A
        LD      D,A
        JR      sR_BOX
;-----
EWT
        LD      E,(IX+3) ;wid
        LD      D,(IX+2) ;hgt
        EXX
        LD      C,(IX)   ;x
        LD      B,(IX+1) ;y
        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      WIND4m1
WIND3
        CALL    sDRAW
        LD      A,(IX+5)
        BIT     7,A
        JR      NZ,$+3

        LD      (DE),A

        CALL    sAT_NEXT
        DEC     H
        JR      NZ,WIND3
WIND4m1
        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 ;0xff
WT00
        LD      (HL),E
        OR      A
        JR      Z,WT ;A=0 ╨╛╨║╨╜╨╛ ╤Б ╨╛╨┤╨╕╨╜╨░╤А╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣

        DEC     A
        JR      Z,EWT ;A=1 ╨╛╨║╨╜╨╛ ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕

        DEC     A
        JR      NZ,EWT
;A=2 ╨╛╨║╨╜╨╛ ╤Б ╨┤╨▓╨╛╨╣╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣
        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 ;╨░╨┤╤А╨╡╤Б╤Г╨╡╤В╤Б╤П ╤З╨╡╤А╨╡╨╖ (IX+RSCR) ;d0: ╤З╤С╤А╨╜╨░╤П ╨╗╨╕╨╜╨╕╤П ╤Б╨╗╨╡╨▓╨░ (DSTL) ;d1: ╤З╤С╤А╨╜╨░╤П ╨╗╨╕╨╜╨╕╤П ╤Б╨┐╤А╨░╨▓╨░ (DSTR) ;d2: ╤З╤С╤А╨╜╨░╤П ╨╗╨╕╨╜╨╕╤П ╨▓╨▓╨╡╤А╤Е╤Г ;d3: ╤З╤С╤А╨╜╨░╤П ╨╗╨╕╨╜╨╕╤П ╨▓╨╜╨╕╨╖╤Г
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) ;╨╝╨░╤Б╨║╨░ 0xff..0x01
CORR1:  LD      C,(IX+0) ;╨░╨┤╤А╨╡╤Б +1 ╨┐╨╛ ╤Б╤А╨░╨▓╨╜╨╡╨╜╨╕╤О ╤Б ╨┐╤А╨╡╨┤╤Л╨┤╤Г╤Й╨╕╨╝ ;╨╝╨░╤Б╨║╨░ 0xff..0x80
        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
;**;**