mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
1004 lines
20 KiB
NASM
Executable File
1004 lines
20 KiB
NASM
Executable File
; <20> ç¨ ¥âáï á 0600h. ‚ãâਠ¨¤¥â ¢ëà ¢¨¢ ¨¥ £à ¨æã 0900h.
|
||
;
|
||
; ’ ª¦¥ ¢ª«îç ¥â ª®¤ "Init_DOS".
|
||
;
|
||
|
||
|
||
|
||
|
||
; à ¡. ï祩ª¨ ª« ¢ë
|
||
|
||
T0600: ds 64 ; 40h (¥ ¬¥ïâì à §¬¥à, ¨¤¥â AND 3Fh)
|
||
;
|
||
D0640: db 0 ; ⥪. ¤à¥á ª®æ ª®«ìæ. ¡ãä¥à ?
|
||
D0641: db 0 ; ¤à¥á ç « ª®«ìæ. ¡ãä¥à ?
|
||
; ä« £¨ ª« ¢ë
|
||
D0642: db 2
|
||
db 0
|
||
db 0
|
||
db 3
|
||
;
|
||
D0646: dw 0
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #30. ަ¨¤ ¨¥ ¦ â¨ï ª« ¢¨ âãàë (¡¥§ íå ).
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A=ª®¤ ᨬ¢®«
|
||
; D=᪥-ª®¤
|
||
; …=ª®¤ ᨬ¢®«
|
||
; B=¡¨âë Ctrl,Alt,Shift
|
||
; C=¤à.á«ã¦.ª« ¢¨è¨
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_30:ld hl,D0641
|
||
ld a,(D0640)
|
||
cp (hl)
|
||
jr z,Func_30 ; ¥â ª« ¢¨è¨
|
||
call A06FC
|
||
ld a,e
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #31. ޝà®á ª« ¢¨ âãàë ¡¥§ ®¦¨¤ ¨ï.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A=ª®¤ ᨬ¢®«
|
||
; D=᪥-ª®¤
|
||
; …=ª®¤ ᨬ¢®«
|
||
; B=¡¨âë Ctrl,Alt,Shift
|
||
; C=¤à.á«ã¦.ª« ¢¨è¨
|
||
; "Z" - ¥â ª« ¢¨è
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_31:ld hl,D0641
|
||
ld a,(D0640)
|
||
cp (hl)
|
||
ret z ; ¥â ª« ¢¨è¨
|
||
call A06FC
|
||
ld a,e
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #32. ަ¨¤ ¨¥ ¦ â¨ï ª« ¢¨ âãàë (á í宬).
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A=ª®¤ ᨬ¢®«
|
||
; D=᪥-ª®¤
|
||
; …=ª®¤ ᨬ¢®«
|
||
; B=¡¨âë Ctrl,Alt,Shift
|
||
; C=¤à.á«ã¦.ª« ¢¨è¨
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_32:
|
||
call focus_to_inpline ; ¢ª«. ªãàá®à
|
||
call Func_31 ; ®¯à®á ª« ¢ë ¡¥§ ®¦¨¤ ¨ï
|
||
jr z,$-3
|
||
push de
|
||
push bc
|
||
push af
|
||
call cursor_off ; ¢ëª«. ªãàá®à
|
||
pop af
|
||
or a ; ¤®¡ ¢¨«
|
||
call nz,Func_5B ; ¢ë¢®¤ "a" íªà
|
||
pop bc
|
||
pop de
|
||
ld a,e
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #33. <20>®«ãç¨âì á®áâ®ï¨¥ ª« ¢¨ âãàë.
|
||
; ‚®§¢à é ¥â á®áâ®ï¨¥ ª« ¢¨ âãàë ¤ ë© ¬®¬¥â.
|
||
; „ ë¥ ¡¥àãâáï ¥ ¨§ ¡ãä¥à ª« ¢¨ âãàë (ª ª ¢ ®áâ «ìëå äãªæ¨ïå),
|
||
; ¥¯®á।á⢥® ¨§ १ã«ìâ ⮢ ¯®á«¥¤¥£® ᪠¨à®¢ ¨ï ª« ¢¨ âãàë.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A=0 - ¥â ᨬ¢®«®¢ ¢ ¡ãä¥à¥
|
||
; B=¡¨âë Ctrl,Alt,Shift
|
||
; C=¤à.á«ã¦.ª« ¢¨è¨
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_33:ld hl,D0641
|
||
ld a,(D0640)
|
||
cp (hl)
|
||
ld bc,(D0642) ; ä« £¨ ª« ¢ë
|
||
ld a,0
|
||
ret z ; ¥â ª« ¢¨è¨
|
||
dec a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #37. ޝà®á ¡ãä¥à ª« ¢¨ âãàë.
|
||
; ‚®§¢à é ¥¬ë¥ ॣ¨áâàë, ª ª ¨ ¢ äãªæ¨¨ 30h (WAITKEY).
|
||
; ˆä®à¬ æ¨ï ® ¦ ⨨ ®áâ ¥âáï ¢ ¡ãä¥à¥.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A=ª®¤ ᨬ¢®«
|
||
; D=᪥-ª®¤
|
||
; …=ª®¤ ᨬ¢®«
|
||
; B=¡¨âë Ctrl,Alt,Shift
|
||
; C=¤à.á«ã¦.ª« ¢¨è¨
|
||
; "Z" - ¥â ᨬ¢®«®¢ ¢ ¡ãä¥à¥
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_37:ld hl,D0641
|
||
ld a,(D0640)
|
||
cp (hl)
|
||
ret z ; ¥â ª« ¢¨è¨
|
||
ld l,(hl)
|
||
ld h,T0600 / 256 ; 06h áâ. ¡ ©â ¤à¥á
|
||
ld e,(hl)
|
||
inc l
|
||
ld d,(hl)
|
||
inc l
|
||
ld b,(hl)
|
||
inc l
|
||
ld c,(hl)
|
||
ld a,e
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #35. Žç¨áâ¨âì ¡ãä¥à ª« ¢¨ âãàë ¨ ¢ë¯®«¨âì äãªæ¨î.
|
||
;
|
||
; ¢å®¤: B=®¬¥à äãªæ¨¨ 30h, 31h, 32h, 33h
|
||
; ¢ë室: ‚ § ¢¨á¨¬®á⨠®â 㪠§ ®© äãªæ¨¨ ¢ ॣ¨áâॠB.
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_35:ld a,(D0641) ; ¤à¥á ç « ª®«ìæ.¡ãä¥à
|
||
ld (D0640),a ; ⥪. ¤à¥á ¢ ª®«ìæ. ¡ãä¥à¥
|
||
;
|
||
ld a,30h-1
|
||
cp b
|
||
jr c,A06D1
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
;
|
||
A06D1: ld a,35h ; ®¬¥à äãªæ¨¨
|
||
cp b
|
||
jr nc,A06DA
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
;
|
||
A06DA: ld c,b
|
||
rst 10h
|
||
ret
|
||
|
||
|
||
|
||
|
||
A06DD: ld hl,D0640
|
||
ld a,(D0641)
|
||
sub 4
|
||
and 3Fh ; ®£à ¨ç¨âì ¤à¥á ª®æ ª®«ìæ. ¡ãä¥à
|
||
cp (hl)
|
||
jr z,A0716 ; ¡¨¯, ª®¥æ ª®«ìæ. ¡ãä¥à
|
||
ld a,(hl)
|
||
inc (hl) ; ï祩ª D0640
|
||
inc (hl)
|
||
inc (hl)
|
||
inc (hl)
|
||
res 6,(hl) ; § 票¥ 40h -> 00h (á¡à. ª®¥æ ª®«ìæ. ¡ãä¥à ?)
|
||
ld l,a
|
||
ld h,T0600 / 256 ; 06h áâ. ¡ ©â ¤à¥á
|
||
ld (hl),e
|
||
inc l
|
||
ld (hl),d
|
||
inc l
|
||
ld (hl),b
|
||
inc l
|
||
ld (hl),c
|
||
ret
|
||
|
||
A06FC: ld hl,D0641
|
||
ld a,(D0640)
|
||
cp (hl)
|
||
ret z ; ¥â ª« ¢¨è¨
|
||
ld a,(hl)
|
||
inc (hl)
|
||
inc (hl)
|
||
inc (hl)
|
||
inc (hl)
|
||
res 6,(hl) ; § 票¥ 40h -> 00h (á¡à. ª®¥æ ª®«ìæ. ¡ãä¥à ?)
|
||
ld l,a
|
||
ld h,T0600 / 256 ; 06h áâ. ¡ ©â ¤à¥á
|
||
ld e,(hl)
|
||
inc l
|
||
ld d,(hl)
|
||
inc l
|
||
ld b,(hl)
|
||
inc l
|
||
ld c,(hl)
|
||
ret
|
||
|
||
; ¡¨¯
|
||
A0716: ex af,af'
|
||
bit 0,(ix+3)
|
||
jr z,A0728
|
||
exx
|
||
ld de,230 ; § ¤¥à¦ª ¢ãâà. 横«
|
||
ld hl,50 ; § ¤¥à¦ª ¢¥è. 横«
|
||
call beep ; §¢ãª
|
||
exx
|
||
A0728: ex af,af'
|
||
ret
|
||
|
||
|
||
|
||
|
||
A072A: set 7,(ix+2)
|
||
jr A0740
|
||
|
||
A0730: set 6,(ix+2) ; ãáâ. ¡¨â "®â¦ â "
|
||
jr A0740
|
||
|
||
A0736: set 5,(ix+2)
|
||
jr A0740
|
||
|
||
; ᪠¨à®¢ ¨¥ ª« ¢ë
|
||
keyb_scan:
|
||
ld ix,D0642 ; ä« £¨ ª« ¢ë
|
||
A0740: in a,(19h) ; ¯®àâ áâ âãá
|
||
rra ; 0-bit, ®ç¥à¥¤®© ¡ ©â ¯à¨è¥« ?
|
||
ret nc ; ¥â
|
||
in a,(18h)
|
||
cp 0F0h ; ª« ¢¨è ®â¦ â ?
|
||
jr z,A0730 ; ¤ , ãáâ. 6 bit
|
||
cp 0E0h ; ¯à¨§ ª "Upgrade Code" ã €â®
|
||
jr z,A072A ; ãáâ. 7 bit (à áè. ᪥-ª®¤)
|
||
cp 0E1h ; Pause
|
||
jr z,A0736 ; ãáâ. 5 bit
|
||
;
|
||
ld l,a
|
||
bit 6,(ix+2) ; ®â¦ â ª« ¢¨è ?
|
||
jr nz,A07B3 ; ¤ , á¡à®á ¡¨â®¢ ॣ¨áâà "B" (ix+1)
|
||
call A0990
|
||
call A0892 ; ãáâ. ¡¨âë ॣ¨áâà "B" (ix+1)
|
||
res 7,(ix+2) ; á¡à. ¡¨â "à áè. ᪥-ª®¤" ?
|
||
res 5,(ix+2) ; á¡à. ¡¨â ¯ ã§ë
|
||
ret z ; ¥ á®åà ïâì ª®¤, ¡¨âë ãáâ ¢«¨¢ «¨áì
|
||
call A09B4
|
||
;
|
||
ld hl,1C00h ; Caps Lock
|
||
and a
|
||
sbc hl,de
|
||
call z,A07C8
|
||
ld hl,0B800h ; Space + Ctrl, Alt
|
||
and a
|
||
sbc hl,de
|
||
call z,A07D1 ; ¯¥à¥ª«. ¡¨â Rus/Lat
|
||
ld hl,5000h ; Ins
|
||
and a
|
||
sbc hl,de
|
||
call z,A07EF
|
||
ld hl,4900h ; Num Lock
|
||
and a
|
||
sbc hl,de
|
||
call z,A07F8 ; ¨¢. 3-© ¡¨â (¡¨â Num Lock)
|
||
ld hl,0C900h ; Pause ¨«¨ Num Lock+80h (Num Lock+Ctrl/Atl/Shift)
|
||
and a
|
||
sbc hl,de
|
||
call z,A0801
|
||
ld hl,4800h ; Scroll Lock
|
||
and a
|
||
sbc hl,de
|
||
call z,A081E ; ¨¢. 2-© ¡¨â (¡¨â Scroll Lock)
|
||
ld hl,0CF00h ; Del+80h (á Shift)
|
||
and a
|
||
sbc hl,de
|
||
call z,reboot_system ; â¥áâ Ctrl+Alt
|
||
ld bc,(D0642) ; ä« £¨ ª« ¢ë
|
||
jp A06DD ;## á®åà. de,bc ¢ ª®«ìæ. ¡ãä¥à¥ ª« ¢ë
|
||
;jp TSR;
|
||
;ret ; ¥ ®¯â¨¬¨§¨âì
|
||
|
||
|
||
A07B3: res 6,(ix+2) ; á¡à. ¡¨â "ª« ¢¨è ®â¦ â "
|
||
call A0990
|
||
call A0837 ; á¡à. ¡¨âë ॣ¨áâà "B" (ix+1)
|
||
res 7,(ix+2) ; á¡à. ¡¨â "à áè. ᪥-ª®¤" ?
|
||
ld h,0
|
||
ld (D0646),hl
|
||
ret
|
||
|
||
A07C8: ld a,(ix+0)
|
||
xor 1
|
||
ld (ix+0),a
|
||
ret
|
||
|
||
A07D1: bit 5,(ix+1) ; ¡¨â Ctrl ?
|
||
ret z ; ¥â
|
||
ld a,(ix+0)
|
||
xor 80h ; 7-© ¡¨â (1=Rus,0=Lat)
|
||
ld (ix+0),a
|
||
bit 1,(ix+3)
|
||
ret z
|
||
exx
|
||
ld de,190 ; § ¤¥à¦ª ¢ãâà. 横«
|
||
ld hl,20 ; § ¤¥à¦ª ¢¥è. 横«
|
||
call beep ; §¢ãª
|
||
exx
|
||
ret
|
||
|
||
A07EF: ld a,(ix+0)
|
||
xor 2 ; 1-© ¡¨â
|
||
ld (ix+0),a
|
||
ret
|
||
|
||
A07F8: ld a,(ix+0)
|
||
xor 8 ; 3-© ¡¨â
|
||
ld (ix+0),a
|
||
ret
|
||
|
||
; Pause ¨«¨ Num Lock + Ctrl, Atl, Shift
|
||
A0801: bit 5,(ix+1) ; ¡¨â Ctrl ?
|
||
ret z ; ¥â
|
||
; pop hl ; ??
|
||
ld a,(ix+0)
|
||
xor 40h ; 6-© ¡¨â
|
||
ld (ix+0),a
|
||
bit 6,(ix+0)
|
||
ret z
|
||
ei
|
||
A0815: halt
|
||
bit 6,(ix+0)
|
||
jr nz,A0815
|
||
di
|
||
ret
|
||
|
||
A081E: ld a,(ix+0)
|
||
xor 4
|
||
ld (ix+0),a
|
||
ret
|
||
|
||
|
||
; ª« ¢¨è Del
|
||
reboot_system:
|
||
;bit 5,(ix+1) ; ¡¨â Ctrl
|
||
;ret z
|
||
;bit 4,(ix+1) ; ¡¨â Alt
|
||
;ret z
|
||
ld c,00110000b ; ¡¨âë Ctrl+Alt
|
||
ld a,(ix+1)
|
||
and c
|
||
cp c
|
||
ret nz
|
||
; á®äâ®¢ë© à¥¡ãâ
|
||
xor a
|
||
ld bc,01FDh
|
||
rst 08h
|
||
ret
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘¡à®á¨âì ¡¨âë ॣ¨áâà "B" (ix+1)
|
||
;-------------------------------------------------
|
||
A0837: ld a,l
|
||
cp 37h
|
||
jr nz,A084A
|
||
res 2,(ix+1)
|
||
bit 0,(ix+1)
|
||
ret nz
|
||
res 4,(ix+1)
|
||
ret
|
||
;
|
||
A084A: cp 39h
|
||
jr nz,A085C
|
||
res 0,(ix+1)
|
||
bit 2,(ix+1)
|
||
ret nz
|
||
res 4,(ix+1)
|
||
ret
|
||
;
|
||
A085C: cp 36h
|
||
jr nz,A086E
|
||
res 3,(ix+1)
|
||
bit 1,(ix+1)
|
||
ret nz
|
||
res 5,(ix+1)
|
||
ret
|
||
;
|
||
A086E: cp 3Ah
|
||
jr nz,A0880
|
||
res 1,(ix+1)
|
||
bit 3,(ix+1)
|
||
ret nz
|
||
res 5,(ix+1)
|
||
ret
|
||
;
|
||
A0880: cp 29h
|
||
jr nz,A0889
|
||
res 7,(ix+1) ; á¡à. ¡¨â LShift
|
||
ret
|
||
;
|
||
A0889: cp 34h
|
||
ret nz
|
||
res 6,(ix+1) ; á¡à. ¡¨â RShift
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; “áâ ®¢¨âì ¡¨âë ॣ¨áâà "B" (ix+1)
|
||
;-------------------------------------------------
|
||
A0892: ld a,l
|
||
cp 37h
|
||
jr nz,A08A0
|
||
set 2,(ix+1)
|
||
set 4,(ix+1)
|
||
ret
|
||
;
|
||
A08A0: cp 39h
|
||
jr nz,A08AD
|
||
set 0,(ix+1)
|
||
set 4,(ix+1)
|
||
ret
|
||
;
|
||
A08AD: cp 36h
|
||
jr nz,A08BA
|
||
set 3,(ix+1)
|
||
set 5,(ix+1)
|
||
ret
|
||
;
|
||
A08BA: cp 3Ah
|
||
jr nz,A08C7
|
||
set 1,(ix+1)
|
||
set 5,(ix+1)
|
||
ret
|
||
;
|
||
A08C7: cp 29h
|
||
jr nz,A08D0
|
||
;-- ¯®áâ ¢¨« (ä¨ªá £«îª PrintScreen)
|
||
; ¯à¨ ¦ ⨨ PrnScrn, ª« ¢ ¢ë¤ ¥â ¤¢®©®© ª®¤: LShift ¨ PrnScrn
|
||
bit 7,(ix+2) ; ¡ë« à áè. ᪥-ª®¤ (#E0) ?
|
||
jr z,$+4 ; ¥â (Ctrl,Alt,Shift ¥ ¦ âë)
|
||
xor a ; ä« £ "Z" (¥ á®åà. ª®¤ #29 LShift)
|
||
ret
|
||
;--
|
||
set 7,(ix+1) ; ãáâ. ¡¨â LShift
|
||
ret
|
||
;
|
||
A08D0: cp 34h
|
||
ret nz
|
||
set 6,(ix+1) ; ãáâ. ¡¨â RShift
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
;
|
||
; <20> ç «ì ï ¨¨æ¨ «¨§ æ¨ï „Ž‘
|
||
;
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Init_DOS:
|
||
di
|
||
call init_keyb_ports ; ¨¨æ. LPT-¯®à⮢ ¤«ï ª« ¢ë
|
||
call A10D1 ; ¨¨æ. ?? ¯®à⮢ + lpt-¯®à⮢ ª« ¢ë
|
||
ld c,0 ; ¨¨æ. ¬ë誨
|
||
rst 30h
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld c,81h ; ¨ä ® ᬥ¥ ०¨¬ (¤«ï ¬ë誨)
|
||
rst 30h
|
||
call scan_all_devices ; ®¯à¥¤¥«¨âì ¢á¥ ¤¥¢ ©áë ¢ á¨á⥬¥
|
||
ei
|
||
; ãáâ. ¢¥ªâ®à äãªæ¨î #00
|
||
ld de,Func_00 ; ¤à¥á äãªæ¨¨ "®¬¥à ¢¥àᨨ „Ž‘"
|
||
ld hl,T0200 ; â ¡«¨æ ¬«. à §à冷¢ ¤à¥á®¢
|
||
ld (hl),e ; á®åà. ¬«.à §àï¤
|
||
inc h ; 0300h
|
||
ld (hl),d ; á®åà. áâ.à §àï¤
|
||
;
|
||
ld bc,03C2h ; ¢ë¤¥«¨âì 3 ¡ ª¨ ¯ ¬ïâ¨
|
||
;ld bc,04C2h ; ¢ë¤¥«¨âì 4 ¡ ª¨ ¯ ¬ïâ¨
|
||
rst 08h
|
||
ld hl,list_dos_pages ; 16 ¡ ©â, ®¬¥à ¡ ®ª à áè¨à¥¨ï „Ž‘
|
||
ld c,a ; ¤¥áªà. ¡«®ª
|
||
ld b,-1
|
||
A00DF: inc b
|
||
push bc ; b=®¬¥à áâà ¨æë ¢ ¡«®ª¥
|
||
push hl
|
||
ld a,c ; ¤¥áªà. ¡«®ª
|
||
ld c,0C4h ; ¯®«ãç¨âì 䨧. ®¬¥à áâà. ¡«®ª
|
||
rst 08h
|
||
pop hl
|
||
pop bc
|
||
ld (hl),a ; á®åà. ®¬¥à ¡ ª¨
|
||
inc hl
|
||
jr nc,A00DF
|
||
;
|
||
call setup_znak ; áâà. § ª®£¥. ªãàá®à
|
||
ld b,-1 ; ¨¨æ. ¡ãä¥à ®ªà㦥¨ï ?
|
||
call Func_46 ; á¨á⥬ ï ®ªà㦥¨ï
|
||
jp Func_00 ; äãªæ¨ï "®¬¥à ¢¥àᨨ „Ž‘"
|
||
|
||
|
||
|
||
|
||
|
||
;ds 0900h - $ ; ¢ë஢¨âì £à ¨æã xx00h
|
||
L0900 equ $+100h AND 0FF00h
|
||
ds L0900 - $
|
||
|
||
|
||
|
||
; „®«¦® ç¨ âìáï â®ç® á xx00h! (¥ áâ « 䨪á¨âì (¤«ï ᪮à®áâ¨)).
|
||
; ‘ª¥-ª®¤ë ª« ¢¨è, 144 ¡ ©â .
|
||
A0900: db 0,43h,0,3Fh,3Dh,3Bh,3Ch,46h
|
||
db 0,44h,42h,40h,3Eh,0Fh,0,0
|
||
db 0
|
||
db 37h,29h,0
|
||
db 36h,10h,2,0
|
||
db 0,0,2Ah,1Eh,1Dh,11h,3,0
|
||
db 0,2Ch,2Bh,1Fh,12h,5,4,0
|
||
db 0,38h,2Dh,20h,14h,13h,6,0
|
||
db 0,2Fh,2Eh,22h,21h,15h,7,0
|
||
db 0
|
||
;A0939:
|
||
db 0
|
||
;A093A:
|
||
db 30h,23h,16h,8,9,0,0,31h
|
||
db 24h,17h,18h,0Bh,0Ah
|
||
;A0947:
|
||
db 0,0,32h
|
||
;A094A:
|
||
db 33h,25h,26h,19h
|
||
;A094E:
|
||
db 0Ch,0,0,0,27h,0,1Ah,0Dh
|
||
db 0,0,1Ch,34h
|
||
db 28h,1Bh,0,35h
|
||
db 0,0,0,0,0,0,0,0
|
||
db 0Eh,0,0,51h,0,54h,57h,0
|
||
db 0,0,50h,4Fh,52h,55h,56h,58h
|
||
db 1,49h,45h,4Dh,53h,4Ch
|
||
db 4Bh,59h
|
||
db 48h,0,0,0,0,41h,0,0
|
||
db 0,0,0,0,0,0,0,0
|
||
db 0,0
|
||
|
||
|
||
|
||
A0990: bit 7,(ix+2) ; ¡¨â "à áè. ᪥-ª®¤" ?
|
||
jr z,A09B0
|
||
cp 11h ; Alt («¥¢ë©/¯à ¢ë©)
|
||
ld l,39h ; RAlt
|
||
ret z
|
||
cp 14h ; Ctrl («¥¢ë©/¯à ¢ë©)
|
||
ld l,3Ah ; RCtrl
|
||
ret z
|
||
cp 5Ah ; Enter
|
||
ld l,4Eh ; enter
|
||
ret z
|
||
cp 4Ah ; /
|
||
ld l,a;4Ah ; /
|
||
ret z
|
||
cp 7Ch ; "*" ¢ ¤®¯.¯®«¥, PrintScreen
|
||
ld l,47h ; PrintScreen
|
||
ret z
|
||
ld l,a
|
||
A09B0: ld h,A0900 / 256 ; 09h áâ. ¡ ©â ¤à¥á
|
||
ld l,(hl) ; § £à㧨âì ᪥-ª®¤
|
||
ret
|
||
|
||
|
||
A09B4: ld d,l
|
||
ld e,0
|
||
bit 7,(ix+0)
|
||
jp nz,A09F6
|
||
ld a,(ix+1)
|
||
and 0C0h
|
||
jr nz,A09E3
|
||
set 7,d
|
||
bit 4,(ix+1)
|
||
ret nz
|
||
bit 5,(ix+1)
|
||
ret nz
|
||
ld d,l
|
||
ld bc,T0B75 ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
bit 0,(ix+0)
|
||
jr nz,A09DE
|
||
ld bc,T0AC1 ; ®à¬ «ì ï Lat-à ᪫ ¤ª
|
||
A09DE: ld h,0
|
||
add hl,bc
|
||
ld e,(hl)
|
||
ret
|
||
;
|
||
A09E3: ld bc,T0B1B ; Lat-à ᪫ ¤ª á Shift
|
||
bit 0,(ix+0)
|
||
jr z,A09EF
|
||
ld bc,T0BCF ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
A09EF: ld h,0
|
||
add hl,bc
|
||
ld e,(hl)
|
||
set 7,d
|
||
ret
|
||
;
|
||
;
|
||
A09F6: ld a,(ix+1)
|
||
and 0C0h
|
||
jr nz,A0A1B
|
||
set 7,d
|
||
bit 4,(ix+1)
|
||
ret nz
|
||
bit 5,(ix+1)
|
||
ret nz
|
||
ld d,l
|
||
bit 0,(ix+0)
|
||
ld bc,T0CDD ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
jr nz,A0A16
|
||
ld bc,T0C29 ; ®à¬ «ì ï Rus-à ᪫ ¤ª
|
||
A0A16: ld h,0
|
||
add hl,bc
|
||
ld e,(hl)
|
||
ret
|
||
;
|
||
A0A1B: ld bc,T0C83 ; Rus-à ᪫ ¤ª á Shift
|
||
bit 0,(ix+0)
|
||
jr z,A0A27
|
||
ld bc,T0D37 ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
A0A27: ld h,0
|
||
add hl,bc
|
||
ld e,(hl)
|
||
set 7,d
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #36. “¯à ¢«¥¨¥ áâனª ¬¨ ª« ¢¨ âãàë.
|
||
;
|
||
; ¢å®¤: B=®¬¥à ¯®¤äãªæ¨¨ (0,1,2)
|
||
; ¢ë室: ‚ § ¢¨á¨¬®á⨠®â 㪠§ ®© äãªæ¨¨ ¢ ॣ¨áâॠB.
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_36:inc b
|
||
dec b
|
||
jr z,A0A49 ; ãáâ. à ᪫ ¤ªã ª« ¢¨ âãàë
|
||
dec b
|
||
jr z,A0A3F ; ¯®«ãç¨âì á®áâ®ï¨¥ §¢ãª®¢ëå ¯¥à¥¬¥ëå
|
||
dec b
|
||
jr z,A0A44 ; ãáâ. á®áâ®ï¨¥ §¢ãª®¢ëå ¯¥à¥¬¥ëå
|
||
ld a,EUNOPER ; ª®¤ "¥¢®§¬®¦ ï ®¯¥à æ¨ï"
|
||
scf
|
||
ret
|
||
|
||
;B=1. <20>®«ãç¨âì á®áâ®ï¨¥ §¢ãª®¢ëå ¯¥à¥¬¥ëå
|
||
A0A3F: ld a,(D0003)
|
||
and a
|
||
ret
|
||
|
||
;B=2. “áâ ®¢¨âì á®áâ®ï¨¥ §¢ãª®¢ëå ¯¥à¥¬¥ëå
|
||
; A=§ 票¥ ¯¥à¥¬¥®©
|
||
; D0 - ᨣ « ¯¥à¥¯®«¥¨ï ¡ãä¥à ª« ¢¨ âãàë
|
||
; D1 - ᨣ « ¯¥à¥ª«îç¥¨ï «ìâ¥à ⨢ãî à ᪫ ¤ªã ª« ¢¨ âãàë
|
||
A0A44: ld (D0003),a
|
||
and a
|
||
ret
|
||
|
||
;B=0. “áâ ®¢¨âì à ᪫ ¤ªã ª« ¢¨ âãàë
|
||
; A=®¬¥à à ᪫ ¤ª¨
|
||
; 0 - normal
|
||
; 1 - shift
|
||
; 2 - caps lock
|
||
; 3 - caps lock + shift
|
||
; 4 - normal ( «ìâ¥à ⨢ ï ª« ¢.)
|
||
; 5 - shift ( «ìâ¥à ⨢ ï ª« ¢.)
|
||
; 6 - caps lock ( «ìâ¥à ⨢ ï ª« ¢.)
|
||
; 7 - caps lock + shift ( «ìâ¥à ⨢ ï ª« ¢.)
|
||
A0A49: ld bc,T0B1B - T0AC1 ; 90 à §¬¥à à ᪫ ¤ª¨ ¢ ’ ¡«¨æ¥ ª®¤®¢ ª« ¢¨è
|
||
bit 7,a
|
||
jr nz,A0A87
|
||
ld de,T0AC1 ; ®à¬ «ì ï Lat-à ᪫ ¤ª
|
||
or a
|
||
jr z,A0A83
|
||
ld de,T0B1B ; Lat-à ᪫ ¤ª á Shift
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0B75 ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0BCF ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0C29 ; ®à¬ «ì ï Rus-à ᪫ ¤ª
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0C83 ; Rus-à ᪫ ¤ª á Shift
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0CDD ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
dec a
|
||
jr z,A0A83
|
||
ld de,T0D37 ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
dec a
|
||
jr z,A0A83
|
||
xor a ; ª®¤
|
||
scf
|
||
ret
|
||
;
|
||
A0A83: ldir
|
||
xor a
|
||
ret
|
||
;
|
||
A0A87: res 7,a
|
||
ld de,T0AC1 ; ®à¬ «ì ï Lat-à ᪫ ¤ª
|
||
or a
|
||
jr z,A0ABC
|
||
ld de,T0B1B ; Lat-à ᪫ ¤ª á Shift
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0B75 ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0BCF ; Lat-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0C29 ; ®à¬ «ì ï Rus-à ᪫ ¤ª
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0C83 ; Rus-à ᪫ ¤ª á Shift
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0CDD ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock
|
||
dec a
|
||
jr z,A0ABC
|
||
ld de,T0D37 ; Rus-à ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
dec a
|
||
jr z,A0ABC
|
||
xor a
|
||
scf
|
||
ret
|
||
;
|
||
A0ABC: ex de,hl
|
||
ldir
|
||
xor a
|
||
ret
|
||
|
||
|
||
; ’ ¡«¨æ ª®¤®¢ ª« ¢¨è (8 à ᪫ ¤®ª ¯® 90 ¡ ©â)
|
||
; <20>®à¬ «ì ï à ᪫ ¤ª
|
||
T0AC1: db "`",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
|
||
db 9,"q","w","e","r","t","y","u","i","o","p","[","]"
|
||
db 0 ; CapsLock
|
||
db "a","s","d","f","g","h","j","k","l",";","'",0Dh
|
||
db 0 ; Left Shift
|
||
db "z","x","c","v","b","n","m",",",".","/"
|
||
db 0 ; Right Shift
|
||
db '\'
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á Shift
|
||
T0B1B: db "~",1Bh,"!","@","#","$","%","^","&","*","(",")","_","+",8
|
||
db 9,"Q","W","E","R","T","Y","U","I","O","P","{","}"
|
||
db 0 ; CapsLock
|
||
db "A","S","D","F","G","H","J","K","L",":",'"',0Dh
|
||
db 0 ; Left Shift
|
||
db "Z","X","C","V","B","N","M","<",">","?"
|
||
db 0 ; Right Shift
|
||
db "|"
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á ¢ª«. CapsLock
|
||
T0B75: db "`",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
|
||
db 9,"Q","W","E","R","T","Y","U","I","O","P","[","]",0
|
||
db "A","S","D","F","G","H","J","K","L",";","'",0Dh,0
|
||
db "Z","X","C","V","B","N","M",",",".","/",0
|
||
db '\'
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
T0BCF: db "~",1Bh,"!","@","#","$","%","^","&","*","(",")","_","+",8
|
||
db 9,"q","w","e","r","t","y","u","i","o","p","{","}",0
|
||
db "a","s","d","f","g","h","j","k","l",":",'"',0Dh,0
|
||
db "z","x","c","v","b","n","m","<",">","?",0
|
||
db "|"
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20>®à¬ «ì ï à ᪫ ¤ª
|
||
T0C29: db "ñ",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
|
||
db 9,"©","æ","ã","ª","¥","","£","è","é","§","å","ê",0
|
||
db "ä","ë","¢"," ","¯","à","®","«","¤","¦","í",0Dh,0
|
||
db "ï","ç","á","¬","¨","â","ì","¡","î",".",0
|
||
db '\'
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á Shift
|
||
T0C83: db "ð",1Bh,"!",'"',"#","$",":",",",".",";","?","%","_","+",8
|
||
db 9,"‰","–","“","Š","…","<22>","ƒ","˜","™","‡","•","š",0
|
||
db "”","›","‚","€","<22>","<22>","Ž","‹","„","†","<22>",0Dh,0
|
||
db "Ÿ","—","‘","Œ","ˆ","’","œ","<22>","ž",",",0
|
||
db "|"
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á ¢ª«. CapsLock
|
||
T0CDD: db "ð",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
|
||
db 9,"‰","–","“","Š","…","<22>","ƒ","˜","™","‡","•","š",0
|
||
db "”","›","‚","€","<22>","<22>","Ž","‹","„","†","<22>",0Dh,0
|
||
db "Ÿ","—","‘","Œ","ˆ","’","œ","<22>","ž",".",0
|
||
db '\'
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0 ; NumLock
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
;
|
||
; <20> ᪫ ¤ª á ¢ª«. CapsLock + Shift
|
||
T0D37: db "ñ",1Bh,"!",'"',"#","$",":",",",".",";","?","%","_","+",8
|
||
db 9,"©","æ","ã","ª","¥","","£","è","é","§","å","ê",0
|
||
db "ä","ë","¢"," ","¯","à","®","«","¤","¦","í",0Dh,0
|
||
db "ï","ç","á","¬","¨","â","ì","¡","î",",",0
|
||
db "|"
|
||
db 0 ; Ctrl
|
||
db 0 ; Alt
|
||
db 20h ; Space
|
||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
; ¤®¯. ¯®«¥
|
||
db 0
|
||
db "/","*","-","+",0Dh
|
||
db 0,0,0,0,0,0,0,0,0,0,0
|
||
|
||
|
||
|
||
|
||
; ‡¢ãª.
|
||
; ¢å®¤: hl=§ ¤¥à¦ª ¢¥è. 横«
|
||
; de=§ ¤¥à¦ª ¢ãâà. 横«
|
||
beep: ld a,10h
|
||
out (0FEh),a ; ¯®àâ
|
||
ld b,d
|
||
ld c,e
|
||
dec bc
|
||
ld a,b
|
||
or c
|
||
jr nz,$-3
|
||
ld a,0
|
||
out (0FEh),a ; ¯®àâ
|
||
ld b,d
|
||
ld c,e
|
||
dec bc
|
||
ld a,b
|
||
or c
|
||
jr nz,$-3
|
||
dec hl
|
||
ld a,h
|
||
or l
|
||
jr nz,beep
|
||
ret
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ˆ¨æ. LPT-¯®à⮢ ¤«ï ª« ¢ë
|
||
;-------------------------------------------------
|
||
init_keyb_ports:
|
||
ld a,0
|
||
out (19h),a
|
||
ld a,1
|
||
out (19h),a
|
||
ld a,0
|
||
out (19h),a
|
||
ld a,3
|
||
out (19h),a
|
||
ld a,0C1h
|
||
out (19h),a
|
||
ld a,4
|
||
out (19h),a
|
||
ld a,7
|
||
out (19h),a
|
||
ld a,5
|
||
out (19h),a
|
||
ld a,62h
|
||
out (19h),a
|
||
ret
|
||
|
||
|
||
|
||
;PR: push ix
|
||
; push hl
|
||
; push de
|
||
; push af
|
||
; push hl;
|
||
; ld c,8Eh
|
||
; rst 08h
|
||
; ld (_pr+1),de
|
||
; ld de,1500h
|
||
; ld c,84h
|
||
; rst 08h
|
||
; pop hl;
|
||
; ;ld a,l
|
||
; call HEX1
|
||
;_pr: ld de,0
|
||
; ld c,84h
|
||
; rst 08h
|
||
; call newline
|
||
; pop af
|
||
; pop de
|
||
; pop hl
|
||
; pop ix
|
||
; ret
|
||
|
||
;HEXHL: ld a,h
|
||
; push hl
|
||
; call HEX1
|
||
; pop hl
|
||
; ld a,l
|
||
;HEX1: push af
|
||
; rra
|
||
; rra
|
||
; rra
|
||
; rra
|
||
; call HEX2
|
||
; pop af
|
||
;HEX2: and 0Fh
|
||
; add a,90h
|
||
; daa
|
||
; adc a,40h
|
||
; daa
|
||
;symb: jp Func_5B ; ¢ë¢®¤ ᨬ¢®« íªà
|
||
|
||
;newline:ld a,0Ah
|
||
; call Func_5B
|
||
; ld a,0Dh
|
||
; jp Func_5B
|