mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
875 lines
14 KiB
NASM
Executable File
875 lines
14 KiB
NASM
Executable File
;===========================================================
|
||
; ‚¥ªâ®à ¬ë誨
|
||
;===========================================================
|
||
MOUSE_vector:
|
||
bit 7,c
|
||
jr nz,A32E3 ; c >=80h
|
||
inc c
|
||
dec c ; c=0 ¨¨æ. ¬ë誨
|
||
jr z,init_mouse
|
||
dec c ; c=1 ¯®ª § âì ¬ëèªã
|
||
jr z,show_mouse
|
||
dec c ; c=2 áªàëâì ¬ëèªã
|
||
jp z,hide_mouse
|
||
dec c ; c=3 ã§ âì á®áâ. ¬ë誨
|
||
jp z,get_mouse_status
|
||
dec c ; c=4 ãáâ. ª®®à¤¨ âë ¬ë誨
|
||
jp z,set_mouse_coords
|
||
dec c ; c=5 § £«ãèª
|
||
jp z,A32DF
|
||
dec c ; c=6 § £«ãèª
|
||
jr z,A32DF
|
||
dec c ; c=7 ãáâ. Y £à ¨æë ¯¥à¥¬. ¬ë誨
|
||
jp z,set_y_limit
|
||
dec c ; c=8 ãáâ. X £à ¨æë ¯¥à¥¬. ¬ë誨
|
||
jp z,set_x_limit
|
||
dec c ; c=9 § £à㧨âì ªãàá®à ¬ë誨
|
||
jp z,A3385
|
||
dec c ; c=0Ah ãáâ. ᨬ¢®«/ âਡãâ ¬ë誨 ¤«ï ⥪áâ. ०¨¬
|
||
jp z,A341F
|
||
dec c ; c=0Bh ¯®«ãç¨âì ªãàá®à ¬ë誨
|
||
jp z,A33CC
|
||
dec c ; c=0Ch § £«ãèª
|
||
jr z,A32DF
|
||
dec c ; c=0Dh § £«ãèª
|
||
jr z,A32DF
|
||
dec c ; c=0Eh ¯®«ãç¨âì çã¢á⢨â. ¬ë誨
|
||
jp z,A342D
|
||
dec c ; c=0Fh ãáâ. çã¢áâ¢. ¬ë誨
|
||
jp z,A3428
|
||
A32DF: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
; c >= 80h
|
||
A32E3: res 7,c
|
||
inc c
|
||
dec c ; c=80h Ž¡à ¡®â稪 ¯¯ à â. ¯à¥àë¢ ¨ï ®â ¬ëè¨
|
||
jp z,A374B
|
||
dec c ; c=81h ¨ä ¤«ï ¬ë誨 ® ᬥ¥ ०¨¬ íªà
|
||
jp z,A3700
|
||
dec c ; c=82h § £«ãèª
|
||
jr z,A32F5
|
||
dec c ; c=83h ¯à¨ã¤. ¯¥à¥à¨á®¢ª ¬ë誨
|
||
jp z,A3760
|
||
A32F5: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #00. ˆ¨æ¨ «¨§ æ¨ï ¤à ©¢¥à ¬ë誨
|
||
;-----------------------------------------------------------
|
||
init_mouse:
|
||
di
|
||
ld a,55h
|
||
out (10h),a
|
||
ld a,2Dh
|
||
out (10h),a
|
||
ld a,0
|
||
out (1Bh),a
|
||
ld a,1
|
||
out (1Bh),a
|
||
ld a,0
|
||
out (1Bh),a
|
||
ld a,3
|
||
out (1Bh),a
|
||
ld a,41h
|
||
out (1Bh),a
|
||
ld a,4
|
||
out (1Bh),a
|
||
ld a,47h
|
||
out (1Bh),a
|
||
ld a,5
|
||
out (1Bh),a
|
||
ld a,0E0h
|
||
out (1Bh),a
|
||
ei
|
||
xor a
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #01. <20>®ª § âì 㪠§ â¥«ì ¬ë誨
|
||
;-----------------------------------------------------------
|
||
show_mouse:
|
||
push ix
|
||
push hl
|
||
push de
|
||
ex af,af'
|
||
push af
|
||
ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||
ld de,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||
di
|
||
call A3524
|
||
ld a,true
|
||
ld (enable_mouse_cursor),a ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||
ei
|
||
pop af
|
||
ex af,af'
|
||
pop de
|
||
pop hl
|
||
pop ix
|
||
xor a
|
||
ret
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #02. ‘ªàëâì 㪠§ â¥«ì ¬ë誨
|
||
;-----------------------------------------------------------
|
||
hide_mouse:
|
||
push ix
|
||
push hl
|
||
push de
|
||
ex af,af'
|
||
push af
|
||
di
|
||
xor a ; false
|
||
ld (enable_mouse_cursor),a ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||
call A34D7
|
||
ei
|
||
pop af
|
||
ex af,af'
|
||
pop de
|
||
pop hl
|
||
pop ix
|
||
xor a
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #03. “§ âì á®â®ï¨¥ ¬ë誨
|
||
; ‚®§¢à é ¥â ª®®à¤¨ âë ¬ë誨 ¨ á®áâ®ï¨¥ ª®¯®ª
|
||
;-----------------------------------------------------------
|
||
get_mouse_status:
|
||
ld hl,(D378C) ; X ª®®à¤¨ â
|
||
ld de,(D378E) ; Y ª®®à¤¨ â
|
||
ld a,(D3792) ; 0 bit - «¥¢ ï, 1 bit - ¯à ¢ ï
|
||
and a
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #04. “áâ ®¢¨âì ª®®à¤¨ âë 㪠§ â¥«ï ¬ë誨
|
||
; ”ãªæ¨ï ¯¥à¥¬¥é ¥â ªãàá®à ¢ § ¤ ë¥ ª®®à¤¨ âë
|
||
;
|
||
; ¢å®¤: hl/de = X/Y ª®®à¤¨ âë
|
||
; ¢ë室: a = ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;-----------------------------------------------------------
|
||
set_mouse_coords:
|
||
push ix
|
||
push hl
|
||
push de
|
||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||
ld (D378E),de ; Y ª®®à¤¨ â ¬ë誨
|
||
ex af,af'
|
||
push af
|
||
di
|
||
call A3772
|
||
ei
|
||
pop af
|
||
ex af,af'
|
||
pop de
|
||
pop hl
|
||
pop ix
|
||
xor a ;?
|
||
ret
|
||
|
||
|
||
|
||
A3385: push bc
|
||
push de
|
||
push hl
|
||
push ix
|
||
;ld a,l
|
||
;ld (D37A6),a
|
||
;ld a,h
|
||
;ld (D37A7),a
|
||
ld (D37A6),hl; ; è¨à¨ /¢ëá®â áâ५ª¨ ¬ë誨
|
||
ld c,e
|
||
ld b,0
|
||
ld (D379E),bc
|
||
ld c,d
|
||
ld (D37A0),bc
|
||
exx
|
||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||
ld c,a
|
||
ld b,0
|
||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||
ld l,b
|
||
ld h,b
|
||
add hl,bc
|
||
dec a
|
||
jr nz,$-2
|
||
push hl
|
||
ld bc,257 ;A0101 ; 257 ?
|
||
and a
|
||
sbc hl,bc
|
||
ccf
|
||
exx
|
||
pop bc
|
||
pop hl
|
||
ld a,EINVHND ; ª®¤ "¥áãé¥áâ¢. ¤¥áªà. ä ©« "
|
||
jr c,A33C7
|
||
ld de,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||
di
|
||
ldir
|
||
xor a ; ª®¤ "Ok"
|
||
A33C7: pop hl
|
||
pop de
|
||
pop bc
|
||
ei
|
||
ret
|
||
|
||
|
||
A33CC: push ix
|
||
exx
|
||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||
ld c,a
|
||
ld b,0
|
||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||
ld l,b
|
||
ld h,b
|
||
add hl,bc
|
||
dec a
|
||
jr nz,$-2
|
||
push hl
|
||
ld bc,257 ;A0101 ; 257 ?
|
||
and a
|
||
sbc hl,bc
|
||
ccf
|
||
exx
|
||
pop bc
|
||
pop hl
|
||
ld a,EINVHND ; ª®¤ "¥áãé¥áâ¢. ¤¥áªà. ä ©« "
|
||
jr c,A340B
|
||
ld de,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||
ex de,hl
|
||
di
|
||
ldir
|
||
;ld a,(D37A6) ;@@
|
||
;ld l,a
|
||
;ld a,(D37A7)
|
||
;ld h,a
|
||
ld hl,(D37A6); ; è¨à¨ /¢ëá®â áâ५ª¨ ¬ë誨
|
||
;ld bc,(D379E)
|
||
;ld e,c
|
||
;ld bc,(D37A0)
|
||
;ld d,c
|
||
ld a,(D379E);
|
||
ld e,a;
|
||
ld a,(D37A0);
|
||
ld d,a;
|
||
xor a
|
||
;ld c,a
|
||
;ld b,a
|
||
A340B: ei
|
||
ret
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #08. “áâ ®¢ª £®à¨§. £à ¨æ ¯¥à¥¬¥é¥¨ï ¬ë誨
|
||
;
|
||
; ¢å®¤: hl = ¬¨¨¬ «ì ï
|
||
; de = ¬ ªá¨¬ «ì ï
|
||
;-----------------------------------------------------------
|
||
set_x_limit:
|
||
ld (D3794),hl
|
||
ld (D3796),de
|
||
xor a
|
||
ret
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #07. “áâ ®¢ª ¢¥àâ. £à ¨æ ¯¥à¥¬¥é¥¨ï ¬ë誨
|
||
;
|
||
; ¢å®¤: hl = ¬¨¨¬ «ì ï
|
||
; de = ¬ ªá¨¬ «ì ï
|
||
;-----------------------------------------------------------
|
||
set_y_limit:
|
||
ld (D3798),hl
|
||
ld (D379A),de
|
||
xor a
|
||
ret
|
||
|
||
|
||
|
||
A341F: ld (D37A2),hl
|
||
ld (D37A4),de
|
||
xor a
|
||
ret
|
||
|
||
|
||
A3428: ld (D379C),hl
|
||
xor a
|
||
ret
|
||
|
||
|
||
A342D: ld hl,(D379C)
|
||
xor a
|
||
ret
|
||
|
||
|
||
A3432: ld (A348B+1),hl
|
||
ld (A348E+1),de
|
||
srl d
|
||
rr e
|
||
srl d
|
||
rr e
|
||
srl d
|
||
rr e
|
||
ld d,e
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
ld e,l
|
||
in a,(89h)
|
||
db 0DDh
|
||
ld h,a
|
||
in a,(0A2h)
|
||
db 0DDh
|
||
ld l,a
|
||
di
|
||
ld a,54h ; ®¬¥à áâà.
|
||
out (0A2h),a
|
||
ld a,d
|
||
add a,a
|
||
add a,a
|
||
ld l,a
|
||
ld h,43h ; áâ. à §àï¤ ?
|
||
in a,(0C9h)
|
||
rrca
|
||
and 80h
|
||
or 1
|
||
add a,e
|
||
out (89h),a
|
||
inc l
|
||
ld a,(hl)
|
||
ld bc,(D37A2)
|
||
and b
|
||
xor c
|
||
ld (hl),a
|
||
inc l
|
||
ld a,(hl)
|
||
ld bc,(D37A4)
|
||
and b
|
||
xor c
|
||
ld (hl),a
|
||
db 0DDh
|
||
ld a,l
|
||
out (0A2h),a
|
||
db 0DDh
|
||
ld a,h
|
||
out (89h),a
|
||
ret
|
||
|
||
|
||
A348B: ld hl,0
|
||
A348E: ld de,0
|
||
srl d
|
||
rr e
|
||
srl d
|
||
rr e
|
||
srl d
|
||
rr e
|
||
ld d,e
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
ld e,l
|
||
in a,(89h)
|
||
db 0DDh
|
||
ld h,a
|
||
in a,(0A2h)
|
||
db 0DDh
|
||
ld l,a
|
||
di
|
||
ld a,50h
|
||
out (0A2h),a
|
||
ld a,d
|
||
add a,a
|
||
add a,a
|
||
ld l,a
|
||
ld h,43h ; áâ. à §àï¤ ?
|
||
in a,(0C9h)
|
||
rrca
|
||
and 80h
|
||
or 1
|
||
add a,e
|
||
out (89h),a
|
||
inc l
|
||
ld a,(hl)
|
||
ld (hl),a
|
||
inc l
|
||
ld a,(hl)
|
||
ld (hl),a
|
||
db 0DDh
|
||
ld a,l
|
||
out (0A2h),a
|
||
db 0DDh
|
||
ld a,h
|
||
out (89h),a
|
||
ret
|
||
|
||
A34D7: ld a,0
|
||
bit 7,a
|
||
jr z,A348B
|
||
in a,(0E2h)
|
||
ld b,a
|
||
in a,(89h)
|
||
ld c,a
|
||
push bc
|
||
ld a,50h
|
||
out (0E2h),a
|
||
A34E9: ld hl,0
|
||
A34EC: ld de,0
|
||
ld a,e
|
||
ex af,af'
|
||
A34F1: ld a,0
|
||
and 1
|
||
ld de,LC000
|
||
jr z,A34FD
|
||
ld de,LC000+320
|
||
A34FD: add hl,de
|
||
A34FE: ld a,0 ; 14 á®åà. ¢ëá®â áâ५ª¨ ¬ë誨
|
||
db 0DDh
|
||
ld h,a
|
||
ex af,af'
|
||
A3503: ld bc,10
|
||
out (89h),a
|
||
ex af,af'
|
||
ld (A3510+1),hl
|
||
ld d,h
|
||
ld e,l
|
||
ldir
|
||
A3510: ld hl,0
|
||
ex af,af'
|
||
inc a
|
||
jr z,A351B
|
||
db 0DDh
|
||
dec h
|
||
jr nz,A3503
|
||
A351B: pop bc
|
||
ld a,b
|
||
out (0E2h),a
|
||
ld a,c
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
|
||
A3524: ld a,(D378B)
|
||
ld (A34D7+1),a
|
||
bit 7,a
|
||
jp z,A3432
|
||
cp 82h ; 130
|
||
jr nz,A3537
|
||
srl h
|
||
rr l
|
||
A3537: ld ix,mouse_pointer ; 10x14 ¬ áᨢ áâ५ª¨ ¬ë誨
|
||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||
ld c,a
|
||
ld b,0
|
||
ld (D37AA),bc
|
||
ld (A3503+1),bc
|
||
ld c,b
|
||
ld (D37A8),bc
|
||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||
ld (A34FE+1),a
|
||
ld c,a
|
||
ld b,0
|
||
ld (D37AC),bc
|
||
ld bc,(D37A0)
|
||
ld a,e
|
||
sub c
|
||
ld e,a
|
||
jr nc,A357B
|
||
neg
|
||
ld e,a
|
||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||
ld c,a
|
||
ld b,0
|
||
ld a,(D37A7) ; 14 ¢ëá®â áâ५ª¨ ¬ë誨
|
||
sub e
|
||
A3571: add ix,bc
|
||
dec e
|
||
jr nz,A3571
|
||
ld c,a
|
||
ld (D37AC),bc
|
||
A357B: ld bc,(D379E)
|
||
and a
|
||
sbc hl,bc
|
||
jr nc,A359A
|
||
ld b,h
|
||
ld c,l
|
||
ld hl,0
|
||
and a
|
||
sbc hl,bc
|
||
ld (D37A8),hl
|
||
ld a,(D37A6) ; 10 è¨à¨ áâ५ª¨ ¬ë誨
|
||
sub l
|
||
ld l,a
|
||
ld (D37AA),hl
|
||
ld hl,0
|
||
A359A: ld (A34E9+1),hl
|
||
ld (A34EC+1),de
|
||
push hl
|
||
in a,(0E2h)
|
||
ld h,a
|
||
in a,(89h)
|
||
ld l,a
|
||
ex (sp),hl
|
||
ld a,5Ch ; ¢¨¤¥®-áâà ¨æ
|
||
out (0E2h),a
|
||
ld a,e
|
||
ex af,af'
|
||
in a,(0C9h)
|
||
ld (A34F1+1),a
|
||
and 1
|
||
ld de,LC000
|
||
jr z,A35BE
|
||
ld de,LC000+320 ; ç «® 2-£® íªà ?
|
||
A35BE: add hl,de
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ex de,hl
|
||
ld bc,(D37AC)
|
||
db 0DDh
|
||
ld h,c
|
||
ex af,af'
|
||
A35CB: ld bc,(D37A8)
|
||
add hl,bc
|
||
ld bc,(D37AA)
|
||
out (89h),a
|
||
ex af,af'
|
||
ld (A35DD+1),de
|
||
ldir
|
||
A35DD: ld de,0
|
||
ex af,af'
|
||
inc a
|
||
jr z,A35E8
|
||
db 0DDh
|
||
dec h
|
||
jr nz,A35CB
|
||
A35E8: pop bc
|
||
ld a,b
|
||
out (0E2h),a
|
||
ld a,c
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
|
||
A35F1: in a,(1Bh)
|
||
rrca
|
||
ret nc
|
||
in a,(1Ah)
|
||
ld l,a
|
||
bit 6,a
|
||
ccf
|
||
ret z
|
||
in a,(1Bh)
|
||
rrca
|
||
jr nc,$-3
|
||
in a,(1Ah)
|
||
ld e,a
|
||
bit 6,a
|
||
ccf
|
||
ret nz
|
||
in a,(1Bh)
|
||
rrca
|
||
jr nc,$-3
|
||
in a,(1Ah)
|
||
ld d,a
|
||
bit 6,a
|
||
ccf
|
||
ret nz
|
||
ld a,e
|
||
and 3Fh
|
||
ld e,a
|
||
ld a,l
|
||
and 3
|
||
rrca
|
||
rrca
|
||
or e
|
||
ld e,a
|
||
ld a,d
|
||
and 3Fh
|
||
ld d,a
|
||
ld a,l
|
||
and 0Ch
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
or d
|
||
ld d,a
|
||
ld a,l
|
||
rlca
|
||
rlca
|
||
rlca
|
||
res 6,a
|
||
jr nc,$+4
|
||
set 6,a
|
||
rlca
|
||
rlca
|
||
and 3
|
||
ld (D3792),a ; á®áâ. ª®¯®ª: 0/1 bits - «¥¢ ï/¯à ¢ ï
|
||
call A36C3
|
||
;ld a,e ;@@
|
||
;ld (D3790),a
|
||
;ld a,d
|
||
;ld (D3791),a
|
||
ld (D3790),de
|
||
scf
|
||
ret
|
||
|
||
|
||
A364B: ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||
ld de,(D3790)
|
||
ld d,0
|
||
bit 7,e
|
||
jr nz,A366F
|
||
add hl,de
|
||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||
ex de,hl
|
||
ld hl,(D3796)
|
||
and a
|
||
sbc hl,de
|
||
jr nc,A3689
|
||
ld hl,(D3796)
|
||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||
jr A3689
|
||
;
|
||
A366F: ld a,e
|
||
neg
|
||
ld e,a
|
||
and a
|
||
sbc hl,de
|
||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||
jr c,A3683
|
||
ld de,(D3794)
|
||
sbc hl,de
|
||
jr nc,A3689
|
||
A3683: ld hl,(D3794)
|
||
ld (D378C),hl ; X ª®®à¤¨ â ¬ë誨
|
||
A3689: ld hl,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||
ld de,(D3791)
|
||
ld d,0
|
||
bit 7,e
|
||
jr nz,A36A9
|
||
add hl,de
|
||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||
ex de,hl
|
||
ld hl,(D379A) ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
and a
|
||
sbc hl,de
|
||
ret nc
|
||
ld hl,(D379A) ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||
ret
|
||
;
|
||
A36A9: ld a,e
|
||
neg
|
||
ld e,a
|
||
and a
|
||
sbc hl,de
|
||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||
jr c,A36BC
|
||
ld de,(D3798) ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
sbc hl,de
|
||
ret nc
|
||
A36BC: ld hl,(D3798) ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
ld (D378E),hl ; Y ª®®à¤¨ â ¬ë誨
|
||
ret
|
||
|
||
|
||
A36C3: ld hl,(D379C)
|
||
ld a,l
|
||
or l
|
||
ret z
|
||
dec a
|
||
ret z
|
||
ld a,e
|
||
bit 7,a
|
||
ld b,0FFh
|
||
jr z,A36D6
|
||
ld b,7Fh
|
||
neg
|
||
A36D6: inc b
|
||
sub l
|
||
jr nc,A36D6
|
||
bit 7,b
|
||
jr z,A36E4
|
||
ld a,b
|
||
res 7,a
|
||
neg
|
||
ld b,a
|
||
A36E4: ld e,b
|
||
ld a,d
|
||
bit 7,a
|
||
ld b,0FFh
|
||
jr z,A36F0
|
||
ld b,7Fh
|
||
neg
|
||
A36F0: inc b
|
||
sub h
|
||
jr nc,A36F0
|
||
bit 7,b
|
||
jr z,A36FE
|
||
ld a,b
|
||
res 7,a
|
||
neg
|
||
ld b,a
|
||
A36FE: ld d,b
|
||
ret
|
||
|
||
|
||
A3700: ld (D378B),a
|
||
or a
|
||
jr z,A3720
|
||
cp 1
|
||
jr z,A3720
|
||
cp 2 ; 40x32x16 ⥪á⮢ë©
|
||
jr z,A3723
|
||
cp 3 ; 80x32x16 ⥪á⮢ë©
|
||
jr z,A3737
|
||
bit 7,a
|
||
jr z,A3720
|
||
; £à ä. ०¨¬ë íªà
|
||
;res 7,a ;@@
|
||
cp 81h ; 320x256x256
|
||
jr z,A3723
|
||
cp 82h ; 640x256x16
|
||
jr z,A3737
|
||
A3720: xor a
|
||
scf
|
||
ret
|
||
|
||
; 320x256x256 ०¨¬
|
||
A3723: ld de,319 ; ¬ ªá. X £à ¨æ
|
||
A3726: ld hl,0 ; ¬¨. X/Y £à ¨æë
|
||
call set_x_limit ; ãáâ. X £à ¨æã ¯¥à¥¬. 㪠§ ⥫ï
|
||
ld de,255 ; ¬ ªá. Y £à ¨æ
|
||
jp set_y_limit ; ãáâ. Y £à ¨æã ¯¥à¥¬. 㪠§ ⥫ï
|
||
|
||
; 640x256x16 ०¨¬
|
||
A3737: ld de,639 ; ¬ ªá. X £à ¨æ
|
||
jr A3726
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ”ãªæ¨ï #80. Ž¡à ¡®â稪 ¯¯ à â. ¯à¥àë¢ ¨ï ®â ¬ëè¨
|
||
;
|
||
; <20>® ¯à¨å®¤ã ¯à¥àë¢ ¨ï ®â ¬ëè¨ ¢ë§ë¢ ¥âáï ¤ ï äãªæ¨ï
|
||
; ¤à ©¢¥à . ‚ á«ãç ¥, ª®£¤ âॡã¥âáï à ¡®â ¯®¤¯à®£à ¬¬ë
|
||
; ¯à¨ § ¯à¥é¥ëå ¯à¥àë¢ ¨ïå, ¨á¯®«ì§ã©â¥ ¤ ãî äãªæ¨î,
|
||
; çâ®¡ë ¨§¡¥¦ âì ¯®â¥à¨ ¯ ª¥â®¢ ¤ ëå ®â ¬ëè¨.
|
||
;-----------------------------------------------------------
|
||
A374B: in a,(0E2h)
|
||
ld b,a
|
||
in a,(89h)
|
||
ld c,a
|
||
push bc
|
||
call A3772
|
||
call A3765
|
||
pop bc
|
||
ld a,b
|
||
out (0E2h),a
|
||
ld a,c
|
||
out (89h),a
|
||
ret
|
||
|
||
|
||
A3760: call A3765
|
||
and a
|
||
ret
|
||
|
||
|
||
A3765: call A35F1
|
||
ret nc
|
||
call A364B
|
||
ld a,0
|
||
ld (A3776+1),a
|
||
ret
|
||
|
||
|
||
A3772: db 3Eh ; ld a,..
|
||
enable_mouse_cursor:
|
||
db false ; ä« £ ¢ë¢®¤ 㪠§ â¥«ï ¬ë誨
|
||
or a
|
||
ret z ; ¥ ¢ë¢®¤¨âì 㪠§ ⥫ì
|
||
A3776: ld a,0
|
||
call A34D7
|
||
ld hl,(D378C) ; X ª®®à¤¨ â ¬ë誨
|
||
ld de,(D378E) ; Y ª®®à¤¨ â ¬ë誨
|
||
call A3524
|
||
ld a,-1
|
||
ld (A3776+1),a
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
D378B: db 3
|
||
D378C: dw 160 ; X ª®®à¤¨ â ¬ë誨
|
||
D378E: dw 128 ; Y ª®®à¤¨ â ¬ë誨
|
||
D3790: db 0
|
||
D3791: db 0
|
||
D3792: db 0 ; á®áâ. ª®¯®ª: 0/1 bits - «¥¢ ï/¯à ¢ ï
|
||
db 0; ; 㦥 ?
|
||
;
|
||
D3794: dw 0
|
||
D3796: dw 319
|
||
D3798: dw 0 ; ¬¨. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
D379A: dw 255 ; ¬ ªá. Y £à ¨æ ¤«ï 㪠§ ⥫ï
|
||
|
||
D379C: dw 0
|
||
D379E: dw 0
|
||
D37A0: dw 0
|
||
;
|
||
D37A2: dw 0FF00h
|
||
D37A4: dw 0FF77h
|
||
;
|
||
D37A6: db 10 ; è¨à¨ áâ५ª¨ ¬ë誨
|
||
D37A7: db 14 ; ¢ëá®â áâ५ª¨ ¬ë誨
|
||
;
|
||
D37A8: dw 0
|
||
D37AA: dw 0
|
||
D37AC: dw 0
|
||
|
||
|
||
|
||
; ‘â५ª ¬ë誨. Œ áᨢ 10x14 ¡ ©â®¢ + 116 = 256
|
||
mouse_pointer:
|
||
db 0,0,-1,-1,-1,-1,-1,-1,-1,-1 ; 1
|
||
db 0,-2,0,-1,-1,-1,-1,-1,-1,-1 ; 2
|
||
db 0,-2,-2,0,-1,-1,-1,-1,-1,-1 ; 3
|
||
db 0,-2,-2,-2,0,-1,-1,-1,-1,-1 ; 4
|
||
db 0,-2,-2,-2,-2,0,-1,-1,-1,-1 ; 5
|
||
db 0,-2,-2,-2,-2,-2,0,-1,-1,-1 ; 6
|
||
db 0,-2,-2,-2,-2,-2,-2,0,-1,-1 ; 7
|
||
db 0,-2,-2,-2,-2,0,0,0,0,-1 ; 8
|
||
db 0,-2,-2,0,-2,0,-1,-1,-1,-1 ; 9
|
||
db 0,-2,0,0,-2,-2,0,-1,-1,-1 ; 10
|
||
db 0,0,-1,-1,0,-2,0,-1,-1,-1 ; 11
|
||
db 0,-1,-1,-1,0,-2,-2,0,-1,-1 ; 12
|
||
db -1,-1,-1,-1,-1,0,0,-1,-1,-1 ; 13
|
||
db -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 ; 14
|
||
;
|
||
ds 256-140 ; 116
|