mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
7532 lines
144 KiB
NASM
Executable File
7532 lines
144 KiB
NASM
Executable File
; <20>®á«¥¤ïï । ªæ¨ï: 9.03.2007
|
||
;
|
||
|
||
|
||
; ¬¥âª¨ ## - ¥ ïáë¥ ¬¥áâ (§ ª®¬¬¥â ਮ)
|
||
; ¬¥âª¨ @@ - § ¬¥ ®à¨£. ª®¤
|
||
;
|
||
|
||
|
||
; ¡ãä¥à D2E7C ¨«¨ T0400 â ª¦¥ ¨á¯. ¤«ï ¢¢®¤ /¢ë¢®¤ ä ©«®¢ëå ®¯¥à 権 ?
|
||
|
||
|
||
|
||
|
||
; <09>ਬ¥ç ¨ï ¯® „Ž‘-ã
|
||
;
|
||
; ‚ëà ¢¨¢ ¨¥ ª®¤ £à ¨æã ¯à®¨á室¨â ¢ ¤¢ãå ¬¥áâ å: 0100h ¨ 0900h
|
||
; (¥áâì ¥¬®£® «¨è¥£® ¬¥áâ ).
|
||
;
|
||
;
|
||
; „®¡ ¢«¥¨ï:
|
||
; ~~~~~~~~~~~
|
||
; <20>®ï¢¨« áì ®¢ ï äãªæ¨ï #08 DSS_RESCAN (<28>¥à¥áª ¨à®¢ âì ¤¥¢ ©áë á¨á⥬ë).
|
||
;
|
||
; ”ãªæ¨ï #00 (¢¥àá¨ï „Ž‘) ¤®¯®«. ¢®§¢à é ¥â ¢ BC ®¬¥à ¡¨«¤ (0..999).
|
||
;
|
||
; „®¡ ¢«¥ ª®¤ ®¡á«ã¦¨¢ ¨ï ªãàá®à ( ¯à¥àë¢ ¨ïå) ¨ ॣ¨áâà æ¨ï ¢ á¨á⥬¥
|
||
; § ª®£¥¥à â®à®¢ ªãàá®à á ®¬¥à ¬¨ 1Ah/19h (ç¥àâ /¡«®ª). ”ãªæ¨ï #32 ¤®à -
|
||
; ¡®â ¯®¤ ®¢ë© ªãàá®à, â ª¦¥ ¥ ¢ë¢®¤¨â ascii-ª®¤ #00 (®â ªãàá. ª« ¢¨è
|
||
; ¨ â.¤.). <20>¥à¥ª«î票¥ ä®à¬ë ªãàá®à ª« ¢¨è¥© "Ins".
|
||
;
|
||
; ‚ äãªæ¨¨ #5F (ᨬ¢®« ¯à¨â¥à) ¤®¡ ¢«¥® ®âá«¥¦¨¢ ¨¥ ¡ ©â á®áâ®ï¨ï
|
||
; ¯à¨â¥à (7..3 ¡¨âë). <20>ਠ®è¨¡ª¥, äãªæ¨ï ¢®§¢à é ¥â ¡ ©â á®áâ®ï¨ï, ¥
|
||
; ¯¥ç â ¥¬ë© ᨬ¢®«, ª ª ¢ ä¨à¬¥®© ¢¥àᨨ.
|
||
;
|
||
; ;„®¡ ¢«¥ äãªæ¨ï #0C (tmp_filename)
|
||
;
|
||
;
|
||
;
|
||
|
||
|
||
|
||
; ˆá¯à ¢«¥¨ï:
|
||
; ~~~~~~~~~~~~
|
||
; 1) ‚ ®â«¨ç¨¨ ®â ®à¨£¨ « , äãªæ¨¨ 0Ah/0Bh (Create file/New create file)
|
||
; ¯¥à¥¤ á®§¤ ¨¥¬ ä ©« ¯à®¢¥àïîâ ¯¥à¥¯®«¥¨¥ â ¡«¨æã ᢮¡®¤ëå
|
||
; ¤¥áªà¨¯â®à®¢.
|
||
|
||
; 2) “¡à ® ä¨à¬¥®¥ ®£à ¨ç¥¨¥ ¬ ªá. ¤«¨ë áâப¨ ¯¥à¥¬¥®© ®ªà㦥¨ï
|
||
; ¢ 32 ᨬ¢®« ¨ ¥ª®à४â ï ®âà ¡®âª äãªæ¨¨ #46 (¢ ª®¬ ¤ å "path",
|
||
; "set"). ’¥¯¥àì ¬ ªá. ¤«¨ áâப¨ 255 ᨬ¢®«®¢.
|
||
;
|
||
; 3) ˆá¯à ¢«¥ ä¨à¬¥ ï ®è¨¡ª , ¯à¨ ª®â®à®© ¯à®¨á室¨«® § ¢¨á ¨¥
|
||
; á¨á⥬ë (¥¯à¥¤áª §ã¥¬®¥ ¯®¢¥¤¥¨¥) ¯à¨ ¯à¥¢ë襨¨ ¬ ªá. ç¨á«
|
||
; ®âªàëâëå ¤¥áªà¨¯â®à®¢ (äãªæ¨¨ search_handle, release_handle).
|
||
;
|
||
; 4) ˆá¯à ¢«¥ ä¨à¬¥ ï ®è¨¡ª , ¨§-§ ª®â®à®© ¢ ®¯¥à æ¨ïå á ä ©« ¬¨ ¥
|
||
; ®âá«¥¦¨¢ «áï âਡãâ "á¨á⥬ë©".
|
||
;
|
||
; 5) ˆá¯à ¢«¥® ¥ ®âá«¥¦¨¢ ¨¥ âਡãâ ä ©« "r/o" ¢ äãªæ¨¨ #0E (㤠«¥¨¥
|
||
; ä ©« ).
|
||
;
|
||
; 6) <20>®ä¨ªá¥ £«îª ¢ë¢®¤ á¯¨áª ä ©«®¢, ¥á«¨ ç¨á«® ä ©«®¢ ¢ ᯨ᪥
|
||
; ¯à¥¢ëè «® 509. ‘¥©ç á ᯨ᮪ ¢ë¢®¤¨âáï ª®à४⮠¨ ¬®¦¥â ᮤ¥à¦ âì
|
||
; ¬ ªá. 510 ä ©«®¢. …᫨ ç¨á«® ä ©«®¢ ¢ ª â «®£¥ ¯à¥¢ëè ¥â 510, â® ¢ë¤ ¥âáï
|
||
; ª®¤ ®è¨¡ª¨ 35 "᫨誮¬ ¬®£® ä ©«®¢" (¤«ï ᯨ᪠ª â «®£®¢ ¢ë¤ ¥âáï
|
||
; ª®¤ ®è¨¡ª¨ 7 "ª â «®£ ¥ ©¤¥").
|
||
;
|
||
; 7) <20>®ä¨ªá¥ £«îª "PrintScreen", ¢ë¤ ¢ ¢è¨© ᪥-ª®¤ #C7 ª« ¢¨è¨ ¨
|
||
; ãáâ ¢«¨¢ ¢è¨© ¡¨â LShift-a. ‚¥àá¨ï „Ž‘ áâ « 1.61.9.
|
||
;
|
||
;
|
||
;
|
||
|
||
|
||
|
||
|
||
; „Ž‘ ¢ë¤¥«ï¥âáï ¡«®ª ¨§ 3 ¡ ®ª (äãª. Init_DOS), ¨á¯®«ì§ã¥¬ëå ¢ ª ç¥á⢥
|
||
; ¡ ®ª à áè¨à¥¨ï.
|
||
; ˆá¯. «®£. ®¬¥à®¢ ¡ ®ª:
|
||
; 0 - ªíè ᯨ᪠ª â «®£
|
||
; 1 - ªíè FAT
|
||
; 2 - path-¯¥à¥¬¥ ï (§ ¯ãáª ä ©« ) ¨ ¤à. ¯¥à¥¬¥ë¥ ®ªà㦥¨ï, â ª¦¥
|
||
; á®åà ¥¨¥ ⥪áâ. íªà ¯à¨ ¯¥à¥ª«î票¨ ¢ £à ä. ०¨¬
|
||
; ;3 - áâà ¨æ áâàãªâãàë tsr-®¡à ¡®â稪®¢ (¬®ï)
|
||
;
|
||
;
|
||
;
|
||
;
|
||
;
|
||
|
||
|
||
|
||
|
||
|
||
include "dos.inc"
|
||
|
||
|
||
|
||
org 0000h
|
||
|
||
|
||
|
||
;RST 00h
|
||
L0000: jp Func_41 ; § £«ãèª (§ ¢¥àè¨âì ¯à®£à ¬¬ã)
|
||
D0003: db -1 ; D0=ᨣ « ¯¥à¥¯®«. ¡ãä¥à ª« ¢ë, D1=ᨣ « ¯¥à¥ª«. «ìâ.à ᪫ ¤ªã
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 08h, ‚ë§®¢ äãªæ¨© <20>¨®á
|
||
push af
|
||
ld a,0 ; ¢ª«. <20>‡“ <20>¨®á ¢ 0-¥ ®ª®
|
||
out (7Ch),a
|
||
pop af
|
||
ret
|
||
db -1
|
||
|
||
;RST 10h
|
||
jp A006C ; ¢¥ªâ®à „Ž‘-
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 18h
|
||
jp drv_devices ; ¢¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 20h, ᢮¡®¤ë©
|
||
jp empty__ ; § £«ãèª
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 28h, ᢮¡®¤ë©
|
||
jp empty__ ; § £«ãèª
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 30h
|
||
jp MOUSE_vector ; ¢¥ªâ®à ¬ë誨
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
;RST 38h
|
||
jp $+3
|
||
push af
|
||
ex af,af'
|
||
push af
|
||
push bc
|
||
push de
|
||
push hl
|
||
exx
|
||
push bc
|
||
push de
|
||
push hl
|
||
push ix
|
||
push iy
|
||
call keyb_scan ; ®¡à ¡®â稪 ª« ¢¨ âãàë
|
||
ld c,80h ; ®¡à ¡®â稪 ¯¯ à â. ¯à¥àë¢. ¬ë誨
|
||
rst 30h
|
||
call cursor_interrupt ; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à
|
||
pop iy
|
||
pop ix
|
||
pop hl
|
||
pop de
|
||
pop bc
|
||
exx
|
||
pop hl
|
||
pop de
|
||
pop bc
|
||
pop af
|
||
ex af,af'
|
||
pop af
|
||
ei
|
||
reti
|
||
|
||
db -1 ;,-1,-1,-1 ; £à ¨æã 0064h
|
||
|
||
;0064h
|
||
retn
|
||
db 0 ; 0066h (®â ¥¬ áª. ¯à¥àë¢ ¨ï ¢ IM0)
|
||
db 0
|
||
db 0
|
||
jp $-5
|
||
|
||
|
||
;-------------------------------------------------
|
||
; „Ž‘-®¢ë© ¢¥ªâ®à
|
||
;-------------------------------------------------
|
||
A006C: push hl
|
||
ld l,c ; ®¬¥à ª®¬ ¤ë
|
||
ld h,T0200 / 256 ; 0200h..02FFh ¬ áᨢ ¬«.¡ ©â®¢ ¤à¥á®¢
|
||
ld c,(hl) ; § £à. ¬«.¡ ©â ¤à¥á
|
||
inc h ; 0300h..03FFh ¬ áᨢ áâ.¡ ©â®¢ ¤à¥á®¢
|
||
ld h,(hl) ; § £à. áâ.¡ ©â ¤à¥á
|
||
ld l,c ; £®â®¢ë© ¤à¥á
|
||
ex (sp),hl ; ¢ á⥪ ¨
|
||
ret ; ¯¥à¥©â¨ ¥£®
|
||
|
||
|
||
|
||
; ‚¥ªâ®à ®¡á«ã¦¨¢ ¨ï ªãàá®à
|
||
cursor_interrupt:
|
||
ld a,(curs_inv_flag)
|
||
or a
|
||
ret z
|
||
;di ;¯®áâ ¢¨«
|
||
db 3Eh ; ld a,..
|
||
curs_timer:
|
||
db 1 ; ¯ ã§ ¬¨£ ¨ï
|
||
dec a
|
||
call z,cursor
|
||
ld (curs_timer),a
|
||
ret
|
||
|
||
|
||
|
||
; <20> ç «® boot-ᥪâ®à
|
||
T0076: ds 3 ; 3 ¡ ©â , ª®¤ ¯¥à¥å®¤ § £àã§ç¨ª
|
||
; 8 ¡ ©â, OEM ID
|
||
db "DSS_"
|
||
db major_version + "0"
|
||
db "."
|
||
db (minor_version / 10) + "0"
|
||
db (minor_version % 10) + "0"
|
||
; BPB, 17 ¡ ©â
|
||
D0081: dw 512 ;+11 ; ¡ ©â®¢ ᥪâ®à
|
||
D0083: db 2 ;+13 ; ᥪâ®à®¢ ª« áâ¥à
|
||
dw 1 ;+14 ; § १¥à¢. ᥪâ®à®¢
|
||
D0086: db 2 ;+16 ; ç¨á«® ª®¯¨© FAT-®¢
|
||
dw 112 ;+17 ; § ¯¨á¥© ¢ ª®à¥
|
||
dw 1440 ;+19 ; # ¢á¥å ᥪâ®à®¢ ¤¨áª¥
|
||
db 0F0h ;+21 ; ¡ ©â ä®à¬ â
|
||
D008C: dw 2 ;+22 ; # ᥪâ®à®¢ FAT
|
||
dw 9 ;+24 ; ᥪâ®à®¢ áâ®à®ã
|
||
D0090: dw 2 ;+26 ; ª®«-¢® áâ®à® ¤¨áª
|
||
; extended boot-record
|
||
dw 0,0 ;+28,+30 ; áªàëâëå ᥪâ®à®¢
|
||
dw 0,0 ;+32,+34 ; ¢á¥å ᥪâ®à®¢ ¤¨áª¥
|
||
dw 80h ;+36 ; 0x00 䨧. ®¬¥à ¤¨áª
|
||
db 29h ;+38 ; ᨣ âãà à áè. boot-§ ¯¨á¨
|
||
dw 0,0 ;+39,+41 ; á¥à¨©ë© ®¬¥à ¤¨áª
|
||
db "NO NAME "
|
||
T00AC: db "FAT16 "
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; <20> áâனª § ª®£¥¥à â®à ªãàá®à ç¥àâ®çª®©
|
||
;-----------------------------------------------------------
|
||
setup_znak:
|
||
in a,(0C2h)
|
||
push af ; á®åà. ¯®àâ
|
||
ld a,(list_dos_pages+2) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||
out (0C2h),a
|
||
; ¯®«ãç¨âì á¨áâ. § ª®£¥.
|
||
ld de,8000h ; ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ëå
|
||
push de
|
||
ld c,0B8h ; ¯®«ãç¨âì § ª®£¥.
|
||
rst 08h
|
||
; § ¯®«¨âì ª®¤®¬ 0FFh 2 ¨¦¨¥ «¨¨¨
|
||
ld hl,8000h+(2048-(2*256)) ; ¯®á«¥¤¨¥ 512 ¡ ©â
|
||
ld bc,511
|
||
ld a,1Ah; ; ®¬¥à § ª®£¥. "ç¥àâ®çª "
|
||
call fill_data_font
|
||
pop hl
|
||
; § ¯®«¨âì ®áâ «ìë¥ 6 «¨¨© (¯®«ë© ¡«®ª)
|
||
ld bc,2048-513
|
||
ld a,19h; ; ®¬¥à § ª®£¥. "¡«®ª"
|
||
call fill_data_font
|
||
pop af
|
||
out (0C2h),a ; ¢®ááâ. ¯®àâ
|
||
ret
|
||
|
||
; <20> áâனª § ª®£¥. ¨ ¥£® ॣ¨áâà æ¨ï
|
||
; ¢å®¤: a=®¬¥à § ª®£¥.
|
||
; hl=¤ ë¥
|
||
; bc=à §¬¥à ¤ ëå
|
||
fill_data_font:
|
||
ld e,l
|
||
ld d,h
|
||
ld (hl),-1
|
||
inc de
|
||
ldir
|
||
ld de,8000h ; § ª®£¥.
|
||
ld c,0B6h ; ãáâ. § ª®£¥.
|
||
rst 08h
|
||
ret
|
||
|
||
|
||
|
||
;ds 100h - $ ; ¢ë஢¨âì £à ¨æã #0100
|
||
L0100 equ $+100h AND 0FF00h
|
||
ds L0100 - $
|
||
|
||
|
||
|
||
;0100h. Œ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
list_pages:
|
||
ds 256
|
||
|
||
|
||
|
||
; Œ« ¤è¨¥ à §àï¤ë ¤à¥á®¢ äãªæ¨©
|
||
T0200: db Init_DOS%256, Func_01%256, Func_02%256, Func_03%256 ; 00..03
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 04..07
|
||
db Func_08%256, Func_09%256, Func_0A%256, Func_0B%256 ; 08..0B
|
||
db Func_0C%256, empty__%256, Func_0E%256, empty__%256 ; 0C..0F
|
||
db Func_10%256, Func_11%256, Func_12%256, Func_13%256 ; 10..13
|
||
db Func_14%256, Func_15%256, Func_16%256, Func_17%256 ; 14..17
|
||
db Func_18%256, Func_19%256, Func_1A%256, Func_1B%256 ; 18..1B
|
||
db Func_1C%256, Func_1D%256, Func_1E%256, empty__%256 ; 1C..1F
|
||
db empty__%256, Func_21%256, Func_22%256, empty__%256 ; 20..23
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 24..27
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 28..2B
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 2C..2F
|
||
db Func_30%256, Func_31%256, Func_32%256, Func_33%256 ; 30..33
|
||
db empty__%256, Func_35%256, Func_36%256, Func_37%256 ; 34..37
|
||
db Func_38%256, Func_39%256, Func_3A%256, Func_3B%256 ; 38..3B
|
||
db Func_3C%256, Func_3D%256, Func_3E%256, Func_3F%256 ; 3C..3F
|
||
db Func_40%256, Func_41%256, Func_42%256, Func_43%256 ; 40..43
|
||
db Func_44%256, Func_45%256, Func_46%256, Func_47%256 ; 44..47
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 48..4B
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 4C..4F
|
||
db Func_50%256, Func_51%256, Func_52%256, Func_53%256 ; 50..53
|
||
db Func_54%256, Func_55%256, Func_56%256, Func_57%256 ; 54..57
|
||
db Func_58%256, Func_59%256, Func_5A%256, Func_5B%256 ; 58..5B
|
||
db Func_5C%256, empty__%256, empty__%256, Func_5F%256 ; 5C..5F
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 60..63
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; 64..67
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 68..6B
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 6C..6F
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 70..73
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 74..77
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 78..7B
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 7C..7F
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 80..83
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 84..87
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 88..8B
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 8C..8F
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 90..93
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 94..97
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 98..9B
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; 9C..9F
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; A0..A3
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; A4..A7
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; A8..AB
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; AC..AF
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; B0..B3
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; B4..B7
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; B8..BB
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; BC..BF
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; C0..C3
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; C4..C7
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; C8..CB
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; CC..CF
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; D0..D3
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; D4..D7
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; D8..DB
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; DC..DF
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; E0..E3
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; E4..E7
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; E8..EB
|
||
db A0000%256, A0000%256, A0000%256, A0000%256 ; EC..EF
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; F0..F3
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; F4..F7
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; F8..FB
|
||
db empty__%256, empty__%256, empty__%256, empty__%256 ; FC..FF
|
||
|
||
;0300h. ‘â à訥 à §àï¤ë ¤à¥á®¢ äãªæ¨©
|
||
db Init_DOS/256, Func_01/256, Func_02/256, Func_03/256 ; 00..03
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 04..07
|
||
db Func_08/256, Func_09/256, Func_0A/256, Func_0B/256 ; 08..0B
|
||
db Func_0C/256, empty__/256, Func_0E/256, empty__/256 ; 0C..0F
|
||
db Func_10/256, Func_11/256, Func_12/256, Func_13/256 ; 10..13
|
||
db Func_14/256, Func_15/256, Func_16/256, Func_17/256 ; 14..17
|
||
db Func_18/256, Func_19/256, Func_1A/256, Func_1B/256 ; 18..1B
|
||
db Func_1C/256, Func_1D/256, Func_1E/256, empty__/256 ; 1C..1F
|
||
db empty__/256, Func_21/256, Func_22/256, empty__/256 ; 20..23
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 24..27
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 28..2B
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 2C..2F
|
||
db Func_30/256, Func_31/256, Func_32/256, Func_33/256 ; 30..33
|
||
db empty__/256, Func_35/256, Func_36/256, Func_37/256 ; 34..37
|
||
db Func_38/256, Func_39/256, Func_3A/256, Func_3B/256 ; 38..3B
|
||
db Func_3C/256, Func_3D/256, Func_3E/256, Func_3F/256 ; 3C..3F
|
||
db Func_40/256, Func_41/256, Func_42/256, Func_43/256 ; 40..43
|
||
db Func_44/256, Func_45/256, Func_46/256, Func_47/256 ; 44..47
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 48..4B
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 4C..4F
|
||
db Func_50/256, Func_51/256, Func_52/256, Func_53/256 ; 50..53
|
||
db Func_54/256, Func_55/256, Func_56/256, Func_57/256 ; 54..57
|
||
db Func_58/256, Func_59/256, Func_5A/256, Func_5B/256 ; 58..5B
|
||
db Func_5C/256, empty__/256, empty__/256, Func_5F/256 ; 5C..5F
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 60..63
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; 64..67
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 68..6B
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 6C..6F
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 70..73
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 74..77
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 78..7B
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 7C..7F
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 80..83
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 84..87
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 88..8B
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 8C..8F
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 90..93
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 94..97
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 98..9B
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; 9C..9F
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; A0..A3
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; A4..A7
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; A8..AB
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; AC..AF
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; B0..B3
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; B4..B7
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; B8..BB
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; BC..BF
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; C0..C3
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; C4..C7
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; C8..CB
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; CC..CF
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; D0..D3
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; D4..D7
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; D8..DB
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; DC..DF
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; E0..E3
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; E4..E7
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; E8..EB
|
||
db A0000/256, A0000/256, A0000/256, A0000/256 ; EC..EF
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; F0..F3
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; F4..F7
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; F8..FB
|
||
db empty__/256, empty__/256, empty__/256, empty__/256 ; FC..FF
|
||
|
||
|
||
|
||
|
||
|
||
; ¡ãä¥à 512 ¡ ©â
|
||
T0400: db ". ",10h,0,0,0,0 ; ⥪. ª â «®£
|
||
ds 16
|
||
db ".. ",10h,0,0,0,0 ; த¨â. ª â «®£
|
||
ds 16
|
||
ds 448
|
||
|
||
|
||
;T0600. ‚ë஢¨âì £à ¨æã xx00h
|
||
|
||
include "keyb.asm" ; ¢ª«îç ¥â "init_DOS"
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #56. Žç¨áâ¨âì ®ª®.
|
||
;
|
||
; ¢å®¤: D - áâப «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; E - á⮫¡¥æ «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; A - ᨬ¢®« § ¯®«¨â¥«ì
|
||
; B - âਡãâ § ¯®«¨â¥«ì
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_56:ld c,8Dh ; ®ç¨á⪠íªà 㪠§. ᨬ¢®«®¬
|
||
rst 08h
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5C. ‚뢮¤ áâப¨ íªà .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ ⥫ì áâபã ᨬ¢®«®¢
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_5C:ld a,(hl)
|
||
inc hl
|
||
or a
|
||
ret z
|
||
call Func_5B ; ¢ë¢®¤ "a" íªà
|
||
jr Func_5C
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5B. ‚뢮¤ ᨬ¢®« íªà ¢ ⥪. ¯®§¨æ¨¨.
|
||
;
|
||
; ¢å®¤: A - ᨬ¢®«
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_5B:
|
||
cp " "
|
||
jr nc,A0DFC
|
||
cp 0Dh ; ¢ ç «® áâப¨
|
||
jr z,A0E20
|
||
cp 0Ah ; á«¥¤. áâபã
|
||
jr z,A0E28
|
||
cp 9 ; Tab
|
||
jr z,A0E0F
|
||
cp 8 ; Backspace
|
||
jr z,A0E03
|
||
A0DFC: push hl
|
||
ld bc,0182h ; ¢ë¢¥á⨠®¤¨ ᨬ¢®« ¡¥§ âਡãâ
|
||
rst 08h
|
||
pop hl
|
||
ret
|
||
|
||
; Backspace
|
||
A0E03: ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
xor a
|
||
cp e
|
||
jp z,Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
dec e
|
||
jp Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
|
||
; Tab
|
||
A0E0F: ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ld a,e
|
||
and 0F8h
|
||
add a,8
|
||
ld e,a ; X ¯®«®¦. ªãàá®à
|
||
jp Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
|
||
; 0Dh - ¢ ç «® áâப¨
|
||
A0E20: ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ld e,0
|
||
jp Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
|
||
; 0Ah - á«¥¤. áâபã
|
||
A0E28: ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ld a,d
|
||
cp 31
|
||
jr nc,A0E35
|
||
inc d
|
||
jp Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
;
|
||
A0E35: push hl
|
||
push de
|
||
ld bc,018Ah ; áªà®««¨£ ¢¢¥àå
|
||
ld de,0020h ; ç./ç¨á«® áâப
|
||
ei
|
||
halt
|
||
di
|
||
rst 08h
|
||
ld de,1F00h ; Y/X ¯®«®¦. ¨¦¥© áâப¨
|
||
call Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
ld a," " ; ᨬ¢®«
|
||
ld bc,5082h ; ¢ë¢¥á⨠80 ᨬ¢.
|
||
rst 08h
|
||
ei
|
||
pop de
|
||
call Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
pop hl
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #52. “áâ ®¢¨âì ¯®«®¦¥¨¥ ªãàá®à .
|
||
;
|
||
; ¢å®¤: D - áâப ªãàá®à
|
||
; E - ª®«®ª ªãàá®à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_52:ld c,84h ; ãáâ. ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ret
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #53. “§ âì ¯®«®¦¥¨¥ ªãàá®à .
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: D - áâப ªãàá®à
|
||
; E - ª®«®ª ªãàá®à
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_53:ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #57. <20>à®ç¨â âì ᨬ¢®« á íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª
|
||
; ¢ë室: A - ᨬ¢®«
|
||
; B - âਡãâ
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_57:xor a
|
||
ld c,0B4h
|
||
rst 08h
|
||
ld a,l
|
||
ld b,h
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #58. ‚뢥á⨠ᨬ¢®« íªà .
|
||
; “¯à ¢«ïî騥 ᨬ¢®«ë ¢ë¢®¤ïâáï ª ª ®¡ëçë¥ á¨¬¢®«ë.
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª
|
||
; A - ᨬ¢®«
|
||
; B - âਡãâ
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_58:ld c,a
|
||
push bc
|
||
push de
|
||
ld c,0B4h ; ᨬ¢®« á íªà
|
||
xor a
|
||
rst 08h
|
||
pop de
|
||
pop hl
|
||
ld c,0B5h ; ᨬ¢®« íªà
|
||
xor a
|
||
rst 08h
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #59. ‘®åà ¨âì ®ª® íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B - áâà ¨æ ¡ãä¥à
|
||
; IX - ¤à¥á ¡ãä¥à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_59:ld a,r ; ¢® ä« £ P/V á®áâ. âਣ£¥à à §à¥è. ¯à¥àë¢ ¨©
|
||
push af
|
||
xor a
|
||
di
|
||
ld c,0B2h
|
||
rst 08h
|
||
pop af ; ¢®ááâ. ä« £
|
||
scf
|
||
ccf
|
||
ret po ; ¯à¥àë¢ ¨ï à §à¥è¥ë
|
||
ei
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5A. ‚®ááâ ®¢¨âì ®ª® íªà .
|
||
;
|
||
; ¢å®¤: D - áâப
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B - áâà ¨æ ¡ãä¥à
|
||
; IX - ¤à¥á ¡ãä¥à
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_5A:ld a,r ; ¢® ä« £ P/V á®áâ. âਣ£¥à à §à¥è. ¯à¥àë¢ ¨©
|
||
push af
|
||
xor a
|
||
di
|
||
ld c,0B3h
|
||
rst 08h
|
||
pop af
|
||
scf
|
||
ccf
|
||
ret po ; ¯à¥àë¢ ¨ï à §à¥è¥ë
|
||
ei
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #55. ‘ªà®««¨£ íªà .
|
||
;
|
||
; ¢å®¤: D - áâப «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; E - ª®«®ª «¥¢®£® ¢¥à奣® 㣫 ®ª
|
||
; H - ¢ëá®â ®ª
|
||
; L - è¨à¨ ®ª
|
||
; B = 1 - ¯à®ªàã⪠¢¢¥àå
|
||
; B = 2 - ¯à®ªàã⪠¢¨§
|
||
; A = 0 - ®ç¨é âì áâபã
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_55:djnz A0EBA
|
||
ld b,a
|
||
ld c,h
|
||
push bc
|
||
push de
|
||
push hl
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
inc d
|
||
dec h
|
||
xor a
|
||
ld c,0B7h ; ¯¥à¥¬¥é. ®ª
|
||
di
|
||
rst 08h
|
||
ei
|
||
pop hl
|
||
pop de
|
||
pop bc
|
||
xor a
|
||
cp b
|
||
ret nz ; ¥ ®ç¨é âì áâபã
|
||
ld a,d
|
||
add a,h
|
||
dec a
|
||
ld d,a
|
||
A0EAA: push de
|
||
call Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
ld a," "
|
||
ld b,l
|
||
ld c,82h
|
||
rst 08h
|
||
pop de
|
||
call Func_52 ; ãáâ. ¯®«®¦. ªãàá®à
|
||
and a
|
||
ret
|
||
;
|
||
A0EBA: djnz A0EE0
|
||
ld b,a
|
||
ld c,l
|
||
push de
|
||
push bc
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
db 0DDh
|
||
inc h
|
||
dec h
|
||
xor a
|
||
ld c,0B7h
|
||
di
|
||
rst 08h
|
||
ei
|
||
pop hl
|
||
pop de
|
||
xor a
|
||
cp b
|
||
jr z,A0EAA ; ®ç¨áâ¨âì áâபã
|
||
ret
|
||
;
|
||
A0EE0: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #54. ‚ë¡à âì ªâ¨¢ãî áâà ¨æã íªà .
|
||
;
|
||
; ¢å®¤: B - áâà ¨æ íªà 0/1
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_54:push bc
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
bit 7,a
|
||
jr nz,A0EF0
|
||
ld c,a
|
||
call A0F04
|
||
A0EF0: pop bc
|
||
ld a,b
|
||
and 1
|
||
out (0C9h),a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #51. <20>®«ãç¨âì ⥪ã騩 ०¨¬ íªà .
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A - ⥪ã騩 ०¨¬ íªà
|
||
; B - áâà ¨æ íªà 0/1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_51:in a,(0C9h) ; áâà ¨æ íªà 0/1
|
||
ld b,a
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #50. ‚ë¡®à ०¨¬ íªà .
|
||
;
|
||
; ¢å®¤: A - ०¨¬ íªà
|
||
; 02h - ⥪áâ®¢ë© 40x32x16 梥⮢
|
||
; 03h - ⥪áâ®¢ë© 80x32x16 梥⮢
|
||
; 81h - £à ä¨ç¥áª¨© 320x256x256 梥⮢
|
||
; 82h - £à ä¨ç¥áª¨© 640x256x16 梥⮢
|
||
; B - áâà ¨æ íªà 0/1
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_50:bit 7,a
|
||
ld c,a
|
||
jr nz,A0F27 ; ãáâ. £à ä. ०¨¬ë
|
||
A0F04: ld ix,A1080 ; â®çª ¢ë室 (¢®ááâ. íªà £à ä. ०¨¬ )
|
||
push ix
|
||
ex af,af'
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld (A1081+1),a
|
||
ex af,af'
|
||
inc a ; a=0
|
||
dec a
|
||
jr z,A0F21
|
||
dec a ; a=1
|
||
jr z,A0F21
|
||
dec a ; a=2
|
||
jr z,A0F3F
|
||
dec a ; a=3
|
||
jr z,A0F67
|
||
A0F21: pop ix ; ¢®ááâ. ¡ « á á⥪ (§ ®¤® ix)
|
||
ld a,EERR48 ; ª®¤ "®è¨¡ª 48"
|
||
scf
|
||
ret
|
||
|
||
; “áâ ®¢ª £à ä. ०¨¬®¢
|
||
A0F27: call A1042 ; á®åà. íªà ⥪áâ. ०¨¬
|
||
and 7Fh
|
||
jp z,A0F8F ; a=80h
|
||
dec a ; a=81h
|
||
jp z,A0F93
|
||
dec a ; a=82h
|
||
jp z,A0FBA
|
||
dec a ; a=83h
|
||
jp z,A0FE1
|
||
ld a,EERR48 ; ª®¤ "®è¨¡ª 48"
|
||
scf
|
||
ret
|
||
|
||
; “áâ. ⥪áâ. ०¨¬ 40x32.
|
||
A0F3F: push bc
|
||
; ⥪á⮢®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, #0B - ®¬¥à § ª®£¥.
|
||
ld hl,T101A ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld a,b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
or b
|
||
and 11h
|
||
xor 10h
|
||
ld e,a ; ä« £¨ ®ª
|
||
call open_window
|
||
pop bc
|
||
ld a,c
|
||
ld (mode_screen),a ; ⥪. ०¨¬ íªà
|
||
ld a,b
|
||
and 1
|
||
out (0C9h),a
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld c,81h
|
||
rst 30h
|
||
ld a,0C0h
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
; “áâ. ⥪áâ. ०¨¬ 80x32.
|
||
A0F67: push bc
|
||
; ⥪á⮢®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, #0B - ®¬¥à § ª®£¥.
|
||
ld hl,T1012 ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld a,b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
or b
|
||
and 11h
|
||
xor 10h
|
||
ld e,a ; ä« £¨ ®ª
|
||
call open_window
|
||
pop bc
|
||
ld a,c
|
||
ld (mode_screen),a ; ⥪. ०¨¬ íªà
|
||
ld a,b
|
||
and 1
|
||
out (0C9h),a
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld c,81h ; ०¨¬ íªà ¤«ï ¬ë誨
|
||
rst 30h
|
||
ld a,0C0h ; § ªà. ᯥª-íªà
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
;
|
||
A0F8F: ld a,EERR48 ; ª®¤ "®è¨¡ª 48"
|
||
scf
|
||
ret
|
||
;
|
||
A0F93: push bc
|
||
; £à ä¨ç¥áª®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, 0-© íªà
|
||
ld hl,T102A ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld e,11h ; ä« £¨ ®ª
|
||
call open_window
|
||
; £à ä¨ç¥áª®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, 1-© íªà
|
||
ld hl,T103A ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld e,0 ; ä« £¨ ®ª
|
||
call open_window
|
||
pop bc
|
||
ld a,c
|
||
ld (mode_screen),a ; ⥪. ०¨¬ íªà
|
||
ld a,b
|
||
and 1
|
||
out (0C9h),a
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld c,81h
|
||
rst 30h
|
||
ld a,0C0h
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
A0FBA: push bc
|
||
; £à ä¨ç¥áª®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, 0-© íªà
|
||
ld hl,T1022 ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld e,11h ; ä« £¨ ®ª
|
||
call open_window
|
||
; £à ä¨ç¥áª®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, 1-© íªà
|
||
ld hl,T1032 ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld e,0 ; ä« £¨ ®ª
|
||
call open_window
|
||
pop bc
|
||
ld a,c
|
||
ld (mode_screen),a ; ⥪. ०¨¬ íªà
|
||
ld a,b
|
||
and 1
|
||
out (0C9h),a
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
ld c,81h
|
||
rst 30h
|
||
ld a,0C0h
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
A0FE1: ld a,EERR48 ; ª®¤ "®è¨¡ª 48"
|
||
scf
|
||
ret
|
||
|
||
|
||
; ⥪. ०¨¬ íªà
|
||
mode_screen:
|
||
db 3 ; 80x32x16 ⥪á⮢ë©
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Žâªàëâì ®ª®
|
||
; ¢å®¤: hl=®¯¨á â¥«ì ®ª
|
||
; e=ä« £¨ ®ª
|
||
;-------------------------------------------------
|
||
open_window:
|
||
push de
|
||
ld de,LFEE0 ; ªã¤
|
||
ld bc,32 ; à §¬¥à ®¯¨á ⥫ï (8..31 § १.)
|
||
call A1001 ; ᪮¯¨à. ®¯¨á â¥«ì ¢ á¨áâ. áâà ¨æã
|
||
pop de
|
||
ld ix,LFEE0 ; ®¯¨á â¥«ì ®ª (8 ¡ ©â)
|
||
ld c,0B0h ; ®âªà. ®ª®
|
||
rst 08h
|
||
ld a,0C0h ; § ªà. ᯥª-íªà
|
||
out (89h),a
|
||
xor a
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------
|
||
; ‘ª®¯¨à®¢ âì ®¯¨á â¥«ì ®ª ¢ á¨áâ. áâà ¨æã <20>¨®á
|
||
; ¢å®¤: hl=®âªã¤
|
||
; de=ªã¤
|
||
; bc=᪮«ìª®
|
||
;-----------------------------------------------------
|
||
A1001: ld a,r ; ¢® ä« £ P/V á®áâ. âਣ£¥à à §à¥è. ¯à¥àë¢ ¨©
|
||
in a,(0E2h)
|
||
ex af,af' ; á®åà. ä« £
|
||
ld a,0FEh ; áâà ¨æ ¯¥à¥¬¥ëå <20>¨®á
|
||
out (0E2h),a
|
||
ldir
|
||
ex af,af' ; ¢®ááâ. ä« £
|
||
out (0E2h),a
|
||
ret po ; ¯à¥àë¢ ¨ï à §à¥è¥ë
|
||
ei
|
||
ret
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; Œ áᨢ ®¯¨á ⥫¥© ®ª®
|
||
;
|
||
; ä« £¨ ®ª :
|
||
; bit4 = 1/0 - text/graf ०¨¬
|
||
; bit5 = 1/0 - 8/16 â®ç¥ª ¢ § ª®¬¥áâ¥
|
||
; graf_mode bit3..0 - ¥ ¨á¯.
|
||
; bit7..6 - ®¬¥à ¯ «¨âàë (®¬¥à íªà )
|
||
; text_mode bit7..6, 3..0 - ®¬¥à § ª®£¥¥à â®à
|
||
; ¨áª«î票¥: bit7..6="11" -> ¡®à¤¥à
|
||
;-----------------------------------------------------------
|
||
|
||
; 80x32. ⥪á⮢®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, #0B - ®¬¥à § ª®£¥.
|
||
T1012: db 40 ;+0 X à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
db 32 ;+1 Y à §¬¥à ®ª ¢ § ª®¬¥áâ å
|
||
db 0 ;+2 X ¯®«®¦. ®ª íªà ¥
|
||
db 0 ;+3 Y ¯®«®¦. ®ª íªà ¥
|
||
db 00011011b ;+4 ०¨¬ § ª®¬¥áâ
|
||
db 0 ;+5 ¤®¯. ०¨¬ § ª®¬¥áâ (bit0=1 ᯥª. ¤à¥á æ¨ï íªà )
|
||
db 0 ;+6 X ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
db 0 ;+7 Y ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
|
||
; 40x32. ⥪á⮢®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, #0B - ®¬¥à § ª®£¥.
|
||
T101A: db 40,32 ; X/Y £ ¡ à¨âë
|
||
db 0,0
|
||
db 00111011b ;+4 5,4, bit3..0 ®¬¥à § ª®£¥.
|
||
db 0,0,0
|
||
|
||
; £à ä¨ç¥áª®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, 0-© íªà
|
||
T1022: db 40,32 ; X/Y £ ¡ à¨âë (¢ § ª®¬¥áâ å)
|
||
db 0,0
|
||
db 00000000b ;+4
|
||
db 0,0,0
|
||
|
||
; £à ä¨ç¥áª®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, 0-© íªà
|
||
T102A: db 40,32 ; X/Y £ ¡ à¨âë (¢ § ª®¬¥áâ å)
|
||
db 0,0
|
||
db 00100000b ;+4 5-© ¡¨â
|
||
db 0,0,0
|
||
|
||
; £à ä¨ç¥áª®¥, 16 â®ç¥ª/§ ª®¬¥áâ®, 1-© íªà
|
||
T1032: db 40,32 ; X/Y £ ¡ à¨âë (¢ § ª®¬¥áâ å)
|
||
db 0,0
|
||
db 01000000b ;+4 6-© ¡¨â
|
||
db 0
|
||
db 40 ;+6 X ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
db 0
|
||
|
||
; £à ä¨ç¥áª®¥, 8 â®ç¥ª/§ ª®¬¥áâ®, 1-© íªà
|
||
T103A: db 40,32 ; X/Y £ ¡ à¨âë (¢ § ª®¬¥áâ å)
|
||
db 0,0
|
||
db 01100000b ;+4 6,5 ¡¨âë
|
||
db 0
|
||
db 40 ;+6 X ¯®«®¦. ¢ ¯®«¥ £à 䨪¨ (¢ § ª®¬¥áâ å)
|
||
db 0
|
||
|
||
|
||
;--------------------------------------------------
|
||
; ‘®åà ¨âì íªà ⥪áâ. ०¨¬ .
|
||
; „«ï ¡ãä¥à íªà ¨á¯. 2-ï ¡ ª à áè¨à¥¨ï „Ž‘.
|
||
;--------------------------------------------------
|
||
A1042: push af
|
||
ld a,(mode_screen) ; ⥪. ०¨¬ íªà
|
||
bit 7,a
|
||
jr nz,A107E ; £à ä. ०¨¬
|
||
sub 2
|
||
jr c,A107E ; ¬¥ìè¥ 02h
|
||
push bc
|
||
push de
|
||
push hl
|
||
push ix
|
||
push af
|
||
ld c,8Eh ; ã§ âì ¯®«®¦. ªãàá®à
|
||
rst 08h
|
||
ld (A10A0+1),de
|
||
pop af ; ०¨¬ íªà
|
||
ld ix,LC000 ; ¡ãä¥à
|
||
ld de,0000h ; Y/X ¯®«®¦.
|
||
ld hl,2050h ; Y/X à §¬¥à (32x80)
|
||
or a
|
||
jr nz,$+4 ; 80x32 ⥪áâ. ०¨¬
|
||
ld l,40 ; X à §¬¥à
|
||
ld (A1090+1),hl
|
||
ld a,(list_dos_pages+2) ; ®¬¥à ¡ ª¨ à áè¨à¥¨ï „Ž‘
|
||
ld b,a
|
||
xor a
|
||
ld c,0B2h ; á íªà ¢ ¡ãä¥à
|
||
di
|
||
rst 08h
|
||
ei
|
||
pop ix
|
||
pop hl
|
||
pop de
|
||
pop bc
|
||
A107E: pop af
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‚®ááâ ®¢¨âì íªà £à ä. ०¨¬ .
|
||
; <20>ãä¥à íªà ¢® 2-© ¡ ª¥ à áè¨à¥¨ï „Ž‘.
|
||
;-------------------------------------------------
|
||
A1080: push af
|
||
A1081: ld a,0 ; ⥪. ०¨¬ íªà
|
||
rlca ; 4 â ªâ
|
||
jr nc,A10AB ; ⥪á⮢ë©
|
||
push bc
|
||
push de
|
||
push hl
|
||
push ix
|
||
ld ix,LC000 ; ¡ãä¥à
|
||
ld de,0000h ; Y/X ¯®«®¦.
|
||
A1090: ld hl,2050h ; Y/X à §¬¥à (32x80 ¨«¨ 32x40)
|
||
ld a,(list_dos_pages+2) ; ®¬¥à ¡ ª¨ à áè¨à¥¨ï „Ž‘
|
||
ld b,a
|
||
xor a
|
||
ld c,0B3h ; ¨§ ¡ãä¥à íªà
|
||
di
|
||
rst 08h
|
||
ei
|
||
A10A0: ld de,0 ; Y/X ¯®«®¦.
|
||
ld c,84h ; ãáâ. ªãàá®à
|
||
rst 08h
|
||
pop ix
|
||
pop hl
|
||
pop de
|
||
pop bc
|
||
A10AB: pop af
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #5F. ‚뢮¤ ᨬ¢®« ¯à¨â¥à ¡¥§ ®¦¨¤ ¨ï.
|
||
;
|
||
; ˆâ¥à¯à¥â æ¨ï ¡ ©â á®áâ®ï¨ï ¯à¨â¥à :
|
||
; 0..2 - ¥ ¨á¯®«ì§ãîâáï, ®¡ëç® ãáâ. ¢ "1"
|
||
; 3 - ®è¨¡ª ¯à¨â¥à - ¥áâì/¥â (1/0)
|
||
; 4 - ¯à¨â¥à ¯®¤ª«îç¥/¥ ¯®¤ª«îç¥ (1/0)
|
||
; 5 - ¡ã¬ £¨ ¥â/¥áâì (1/0)
|
||
; 6 - ¯à¨â¥à £®â®¢/¢ë¢®¤¨â ®ç¥à¥¤®© ᨬ¢®« (1/0)
|
||
; 7 - ¯à¨â¥à ᢮¡®¤¥/§ ïâ (1/0)
|
||
;
|
||
; ¢å®¤: A - ᨬ¢®«
|
||
; ¢ë室: B - ᨬ¢®«
|
||
; CF - ®è¨¡ª , A=¡ ©â á®áâ®ï¨ï (¡¨âë 7..3)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_5F:ld b,a
|
||
ld a,r ; ¢® ä« £ P/V á®áâ. âਣ£¥à à §à¥è. ¯à¥àë¢ ¨©
|
||
ld a,b
|
||
di
|
||
push af ; á®åà. ä« £
|
||
xor a
|
||
out (1Bh),a
|
||
ld a,10h
|
||
out (1Bh),a
|
||
xor a
|
||
out (1Bh),a
|
||
in a,(1Bh) ; ¯®àâ á®áâ®ï¨ï ¯à¨â¥à
|
||
ld c,a;
|
||
bit 5,a ; 0/1 ¥áâì/¥â ¡ã¬ £
|
||
jr nz,A10CC ; ¥â ¡ã¬ £¨
|
||
and 11011000b;
|
||
jr z,A10CC; ; ®è¨¡. á¨âã æ¨ï
|
||
ld a,b
|
||
out (1Ch),a ; ᨬ¢®« ¢ ¯à¨â¥à
|
||
pop af ; ¢®ááâ. ä« £
|
||
scf
|
||
ccf ; á¡à. CF
|
||
ret po ; ¯à¥àë¢ ¨ï à §à¥è¥ë
|
||
ei
|
||
ret
|
||
;
|
||
A10CC: pop af
|
||
ld a,c; ; ¡ ©â á®áâ®ï¨ï
|
||
scf ; ãáâ. CF
|
||
ret po ; ¯à¥àë¢ ¨ï à §à¥è¥ë
|
||
ei
|
||
ret
|
||
|
||
|
||
|
||
; ˆ¨æ. ¯®à⮢
|
||
A10D1: di
|
||
ld a,0CFh
|
||
ld bc,001Fh ; ¯®àâ
|
||
out (c),a
|
||
ld a,63h
|
||
out (c),a
|
||
ld a,0C0h
|
||
out (1Eh),a
|
||
ld a,0Fh
|
||
out (1Dh),a
|
||
ld a,0
|
||
out (19h),a
|
||
ld a,0
|
||
out (19h),a
|
||
ld a,5
|
||
out (19h),a
|
||
ld a,62h
|
||
out (19h),a
|
||
ret
|
||
|
||
|
||
; “áâ ®¢¨âì ç «ìë© ª« áâ¥à ¤«ï ç⥨ï
|
||
A10F6: ld hl,1
|
||
ld (A10FD+1),hl
|
||
ret
|
||
|
||
|
||
A10FD: ld hl,1
|
||
A1100: inc hl ; ®¬¥à ª« áâ¥à
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
cp 0Ah
|
||
scf
|
||
ret z ; ®è¨¡ª ?
|
||
ld a,d
|
||
or e
|
||
jr nz,A1100
|
||
ld (A10FD+1),hl
|
||
xor a
|
||
ret
|
||
|
||
|
||
A1111: push hl
|
||
call A10FD
|
||
pop de
|
||
ret c
|
||
push hl
|
||
push hl
|
||
ex de,hl ; hl=®¬¥à ª« áâ¥à
|
||
A111A: call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
ex de,hl
|
||
jr nc,A111A ; ¥ ª®¥æ 楯®çª¨
|
||
ex de,hl
|
||
pop de ; ®¬¥à ª« áâ¥à
|
||
call A11C4 ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
pop hl
|
||
ld de,(D150E) ; ®¬¥à ª« áâ¥à
|
||
call A11C4 ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
call A128B ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
and a
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
; ¢å®¤: hl=®¬¥à ª« áâ¥à
|
||
; ¢ë室: hl=®¬¥à ª« áâ¥à
|
||
; de=®¬¥à á«¥¤. ª« áâ¥à
|
||
; CF - ª®¥æ 楯®çª¨
|
||
;-----------------------------------------------------------
|
||
A1132: ex de,hl
|
||
ld hl,(D12FF)
|
||
and a
|
||
sbc hl,de
|
||
ex de,hl
|
||
ld a,0Ah
|
||
ret c
|
||
exx
|
||
ld a,1 ; «®£. ®¬¥à ¤®á-¡ ª¨ (ªíè FAT- )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
exx
|
||
push hl
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld a,(D150B)
|
||
cp "2" ; fat12
|
||
jr z,A1177
|
||
; fat16, ¯à®áâ® ç¨â âì á«¥¤. ®¬¥à
|
||
ld a,h
|
||
ld b,a
|
||
and 0Fh
|
||
ld h,a
|
||
ld a,b
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
and 0Fh
|
||
add hl,hl
|
||
ld bc,(D12FD)
|
||
cp c
|
||
call nz,A125B ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
ld de,LC000 ; ç «® ª¥è FAT-
|
||
add hl,de ; ï祩ªã FAT
|
||
ld e,(hl) ; ¯à®ç¨â âì ®¬¥à ª« áâ¥à
|
||
inc hl
|
||
ld d,(hl)
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld hl,0FFEFh
|
||
;and a ;@@
|
||
xor a;
|
||
sbc hl,de ; ¯à®¢¥àª á«ã¦. ª« áâ¥àë
|
||
pop hl
|
||
;ld a,0
|
||
ret
|
||
; fat12
|
||
A1177: ld d,h
|
||
ld e,l
|
||
add hl,hl
|
||
add hl,de
|
||
rr h ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||
rr l
|
||
push af ; á®åà. ä« £
|
||
ld a,h
|
||
ld b,a
|
||
and 1Fh
|
||
ld h,a
|
||
ld a,b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
and 7
|
||
ld bc,(D12FD)
|
||
cp c
|
||
call nz,A125B ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
ld de,LC000 ; ç «® ª¥è FAT-
|
||
add hl,de ; ï祩ªã FAT
|
||
pop af ; ¢®ááâ. ä« £
|
||
ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
jr c,A11A3 ; ®¬¥à ¥ ç¥âë©
|
||
ld a,d
|
||
and 0Fh
|
||
ld d,a
|
||
jr A11B7
|
||
;
|
||
A11A3: ld a,e
|
||
and 0F0h
|
||
ld e,a
|
||
rr d ; ¢¯à ¢® 4 ¡¨âa
|
||
rr e
|
||
rr d
|
||
rr e
|
||
rr d
|
||
rr e
|
||
rr d
|
||
rr e
|
||
A11B7: pop af ; ¢®ááâ. ¯®àâ
|
||
out (0E2h),a
|
||
ld hl,0FEFh
|
||
;and a
|
||
xor a;
|
||
sbc hl,de ; ¯à®¢¥àª á«ã¦. ª« áâ¥àë
|
||
pop hl
|
||
;ld a,0
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‡ ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
; ¢å®¤: de=®¬¥à ª« áâ¥à
|
||
; hl=®¬¥à ¯¥à¢®£® ª« áâ¥à ?
|
||
; ¢ë室: ;hl=®¬¥à á«¥¤. ª« áâ¥à ?
|
||
; de=®¬¥à ª« áâ¥à
|
||
;-----------------------------------------------------------
|
||
A11C4: push de
|
||
ex de,hl
|
||
ld hl,(D12FF)
|
||
and a
|
||
sbc hl,de
|
||
ex de,hl
|
||
pop de
|
||
ld a,0Ah
|
||
ret c
|
||
exx
|
||
ld a,1 ; «®£. ®¬¥à ¤®á-¡ ª¨ (ªíè FAT- )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
exx
|
||
push hl
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld a,1
|
||
ld (D12FE),a
|
||
ld a,(D150B)
|
||
cp "2" ; fat12
|
||
jr z,A120B
|
||
; fat16, ¯à®áâ® á®åà. ®¬¥à
|
||
push de
|
||
ld a,h
|
||
ld b,a
|
||
and 0Fh
|
||
ld h,a
|
||
ld a,b
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
and 0Fh
|
||
add hl,hl
|
||
ld bc,(D12FD)
|
||
cp c
|
||
call nz,A125B ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
ld de,LC000 ; ª¥è FAT
|
||
add hl,de ; ï祩ªã FAT
|
||
pop de
|
||
ld (hl),e ; á®åà. ¢ ª¥è¥ FAT-
|
||
inc hl ; ®¬¥à ª« áâ¥à
|
||
ld (hl),d ;
|
||
pop af ; ¢®ááâ. ¯®àâ
|
||
pop hl
|
||
out (0E2h),a
|
||
xor a
|
||
ret
|
||
; fat12
|
||
A120B: push de
|
||
ld d,h
|
||
ld e,l
|
||
add hl,hl
|
||
add hl,de
|
||
rr h
|
||
rr l
|
||
push af ; á®åà. ä« £
|
||
ld a,h
|
||
ld b,a
|
||
and 1Fh
|
||
ld h,a
|
||
ld a,b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
and 7
|
||
ld bc,(D12FD)
|
||
cp c
|
||
call nz,A125B ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
ld de,LC000 ; ª¥è FAT
|
||
add hl,de
|
||
pop af
|
||
pop de
|
||
jr c,A123E ; ®¬¥à ¥ ç¥âë©
|
||
ld (hl),e
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0F0h
|
||
or d
|
||
ld (hl),a
|
||
pop af ; ¢®ááâ. ¯®àâ
|
||
pop hl
|
||
out (0E2h),a
|
||
and a
|
||
ret
|
||
;
|
||
A123E: sla e ; ¢«¥¢® 4 ¡¨âa
|
||
rl d
|
||
rl e
|
||
rl d
|
||
rl e
|
||
rl d
|
||
rl e
|
||
rl d
|
||
ld a,(hl)
|
||
and 0Fh
|
||
or e
|
||
ld (hl),a ; á®åà. ¢ ª¥è¥ FAT-
|
||
inc hl ; ®¬¥à ª« áâ¥à
|
||
ld (hl),d ;
|
||
pop af ; ¢®ááâ. ¯®àâ
|
||
pop hl
|
||
out (0E2h),a
|
||
and a
|
||
ret
|
||
|
||
|
||
; <20>à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
; ¢å®¤: a=.. ?
|
||
A125B: push hl
|
||
push af
|
||
ld a,(D12FE)
|
||
or a
|
||
call nz,A129A ; § ¯¨áì ª¥è (¢á¥£® ?) FAT- ¤¨áª
|
||
pop af
|
||
ld l,a
|
||
ld h,0
|
||
ld (D12FD),hl
|
||
add hl,hl ;1+1=2
|
||
add hl,hl ;2+2=4
|
||
add hl,hl ;4+4=8
|
||
add hl,hl ;8+8=16
|
||
ld de,(D14FC)
|
||
add hl,de
|
||
ex de,hl
|
||
ld ix,0
|
||
add ix,de ; ®¬¥à «®£. ᥪâ®à
|
||
ld hl,0 ; áâ. à §àï¤
|
||
ld de,LC000 ; ªã¤ (ª¥è FAT)
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld b,16 ; ç¨á«® ᥪâ®à®¢
|
||
ld c,5 ; ç⥨¥ ᥪâ®à®¢
|
||
rst 18h
|
||
pop hl
|
||
ret
|
||
|
||
|
||
|
||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
A128B: exx
|
||
ld a,1 ; «®£. ®¬¥à ¤®á-¡ ª¨ (ªíè FAT- )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
exx
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
call A129A ; § ¯¨áì ª¥è (¢á¥£® ?) FAT- ¤¨áª
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ret
|
||
|
||
; ‡ ¯¨áì ª¥è (¢á¥£® ?) FAT- ¤¨áª
|
||
A129A: ld hl,(D12FD)
|
||
ld h,0
|
||
ld (D12FD),hl
|
||
add hl,hl ;1+1=2
|
||
add hl,hl ;2+2=4
|
||
add hl,hl ;4+4=8
|
||
add hl,hl ;8+8=16
|
||
push hl
|
||
ld b,h
|
||
ld c,l
|
||
ld de,16
|
||
add hl,de
|
||
ld de,(D008C) ; ᥪâ®à®¢ FAT
|
||
ld a,16 ; ç¨á«® ᥪâ®à®¢
|
||
and a
|
||
sbc hl,de
|
||
jr c,A12C3
|
||
ex de,hl
|
||
ld hl,16
|
||
sbc hl,de
|
||
jr c,A12FA
|
||
ld a,l
|
||
A12C3: ld h,b
|
||
ld l,c
|
||
ld de,(D14FC)
|
||
add hl,de
|
||
ex de,hl
|
||
ld ix,0
|
||
add ix,de ; ®¬¥à «®£. ᥪâ®à
|
||
ld hl,0 ; áâ. à §àï¤
|
||
ld de,LC000 ; ®âªã¤ (ª¥è FAT)
|
||
ld b,a ; ç¨á«® ᥪâ®à®¢
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
push bc
|
||
rst 18h
|
||
pop bc ; b=ç¨á«® ᥪâ®à®¢
|
||
pop hl
|
||
ld de,(D14FE)
|
||
add hl,de
|
||
ex de,hl
|
||
ld ix,0
|
||
add ix,de ; ®¬¥à «®£. ᥪâ®à
|
||
ld de,LC000 ; ®âªã¤ (ª¥è FAT)
|
||
ld hl,0 ; áâ. à §àï¤
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
rst 18h
|
||
ret
|
||
;
|
||
A12FA: pop hl
|
||
scf
|
||
ret
|
||
|
||
|
||
D12FD: db 0
|
||
D12FE: db 0
|
||
D12FF: dw 0FF0h ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ FAT12 (¡¥§ á«ã¦.)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #00. ‚¥àá¨ï „Ž‘.
|
||
; ‚®§¢à é ¥â ®¬¥à ¢¥àᨨ ¤¨áª®¢®© á¨á⥬ë.
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: DE=®¬¥à ¢¥àᨨ/¬®¤¨ä¨ª 樨
|
||
; BC=®¬¥à ¡¨«¤ (0..999)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
|
||
Func_00:xor a
|
||
ld de,(major_version SHL 8) + minor_version ; 1.61 ¢¥àá¨ï „Ž‘
|
||
ld bc,build_version ; ®¬¥à ¡¨«¤
|
||
ld h,a
|
||
ld l,a
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #01. ‘¬¥ ⥪ã饣® ¤¨áª .
|
||
;
|
||
; ¢å®¤: A - ®¬¥à ¤¨áª (0=A,1=B,..)
|
||
; ¢ë室: A - ¬ ªá. ®¬¥à ¤¨áª , ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_01:push af ; ®¬¥à ¤¥¢ ©á
|
||
ld c,1 ; ®âªàëâì ¤¥¢ ©á
|
||
rst 18h
|
||
pop bc
|
||
jr c,A1323 ; ®è¨¡ª
|
||
ld a,b
|
||
ld (disk),a ; ®¬¥à ⥪. ¤¨áª
|
||
call A1370
|
||
ret c
|
||
ld a,(last_drive) ; ®¬¥à ¯®á«¥¤. ¤¨áª
|
||
and a
|
||
ret
|
||
;
|
||
A1323: cp EINVDRV ; ª®¤ "¥¢¥àë© ®¬¥à ãáâனá⢠"
|
||
scf
|
||
ret z
|
||
ld a,ENORDY ; ª®¤ "¥â £®â®¢®áâ¨"
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #02. <20>®¬¥à ⥪ã饣® ¤¨áª .
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A - ®¬¥à ¤¨áª (0=A,1=B,..)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_02:ld a,(disk)
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #03. ˆä®à¬ æ¨ï ® ¤¨áª¥.
|
||
; ‚®§¢à é ¥â ¨ä®à¬ æ¨î ®¡ ®¡é¥¬ ¨ ᢮¡®¤®¬ ¯à®áâà á⢥ ¤¨áª®¢®£®
|
||
; ãáâனá⢠.
|
||
;
|
||
; ¢å®¤: A - ®¬¥à ¤¨áª (0=A,1=B,..0FFh-⥪ã騩)
|
||
; ¢ë室: A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å, ¥á«¨ CF=0
|
||
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||
; DE - ᢮¡®¤ëå ª« áâ¥à®¢
|
||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_03:inc a
|
||
jr z,A1338
|
||
dec a
|
||
call Func_01 ; ᬥ ⥪ã饣® ¤¨áª
|
||
ret c
|
||
A1338: ld hl,2 ; ®¬¥à ª« áâ¥à
|
||
ld bc,0
|
||
A133E: push bc
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
pop bc
|
||
cp 0Ah
|
||
jr z,A1353 ; ®è¨¡ª ?
|
||
xor a
|
||
cp e
|
||
jr nz,A134F
|
||
cp d
|
||
jr nz,A134F
|
||
inc bc
|
||
A134F: inc hl
|
||
jr A133E
|
||
;
|
||
A1353: ld d,b ; ᢮¡®¤ëå ª« áâ¥à®¢
|
||
ld e,c
|
||
ld hl,(D12FF) ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||
dec hl
|
||
ld bc,(D0081) ; ¡ ©â®¢ ᥪâ®à (512)
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
and a
|
||
ret
|
||
|
||
|
||
; <20>®¬¥à ¯®á«¥¤¥£® ¤¨áª ¢ á¨á⥬¥
|
||
last_drive:
|
||
db 2 ; "B" ¤¨áª
|
||
; ᯨ᮪ ¤¨áª®¢ëå ãáâனá⢠?
|
||
ds 5
|
||
|
||
|
||
|
||
; ¥â ®¡à 饨ï
|
||
L1368: ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,3 ; ¯à®¢¥àª á¬¥ë ®á¨â¥«ï ¢ ¤¥¢ ©á¥
|
||
rst 18h ; ¢á¥£¤ ¢ë¤ ¥â "¬¥ï«áï"
|
||
or a
|
||
ret z ; ¥ ¬¥ï«áï
|
||
;
|
||
A1370: ld c,0E2h
|
||
in b,(c)
|
||
push bc
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
ld de,LC400 ; ¡ãä¥à
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,4 ; ¯à®ç¨â âì BPB
|
||
rst 18h
|
||
pop bc
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
jp c,A14F0 ; ®è¨¡ª (¥â £®â®¢®áâ¨)
|
||
push iy
|
||
ld de,0AA55h ; ᨣ âãà
|
||
ld hl,(T0400+510)
|
||
and a
|
||
sbc hl,de
|
||
jp nz,A14EA ; ®è¨¡ª "¥ ¨§¢¥áâë© ä®à¬ â"
|
||
ld hl,T0400 ; ®âªã¤
|
||
ld de,T0076 ; ªã¤
|
||
ld bc,62
|
||
ldir
|
||
ld iy,T0076 ; áâàãªâãà boot-ᥪâ®à
|
||
ld a,(iy+21)
|
||
cp 0F0h ; ¡ ©â ä®à¬ â
|
||
jp c,A14EA
|
||
ld hl,0
|
||
ld e,(iy+14) ; de=§ १¥à¢. ᥪâ®à®¢
|
||
ld d,(iy+15)
|
||
add hl,de
|
||
ld (D14FC),hl
|
||
ld (D14FC),hl
|
||
ld (D14FE),hl
|
||
ld e,(iy+22) ; de=ç¨á«® ᥪâ®à®¢ FAT
|
||
ld d,(iy+23)
|
||
ld a,(D0086) ; ç¨á«® ª®¯¨© FAT-®¢
|
||
cp 1
|
||
jr z,A13D2
|
||
dec a
|
||
add hl,de
|
||
ld (D14FE),hl
|
||
A13D2: add hl,de
|
||
dec a
|
||
jr nz,A13D2
|
||
ld (D1502),hl
|
||
ld c,(iy+11) ; bc=¡ ©â®¢ ᥪâ®à
|
||
ld b,(iy+12)
|
||
rl c
|
||
rl b
|
||
rl c
|
||
rl b
|
||
rl c
|
||
rl b
|
||
ld c,b
|
||
ld b,0
|
||
ld a,c
|
||
ld (D1504),a
|
||
ld e,(iy+17) ; de=§ ¯¨á¥© ¢ ª®à¥
|
||
ld d,(iy+18)
|
||
ex de,hl
|
||
dec hl
|
||
xor a
|
||
A13FB: inc a
|
||
jp z,A14EA
|
||
sbc hl,bc
|
||
jr nc,A13FB
|
||
ex de,hl
|
||
ld c,a
|
||
ld b,0
|
||
ld (D1505),a
|
||
add hl,bc
|
||
ld (D1506),hl
|
||
ld c,(iy+11) ; bc=¡ ©â®¢ ᥪâ®à
|
||
ld b,(iy+12)
|
||
ld hl,0
|
||
ld a,(D0083) ; ç¨á«® ᥪâ®à®¢ ª« áâ¥à
|
||
A141A: add hl,bc
|
||
dec a
|
||
jr nz,A141A
|
||
ld (D1508),hl ; à §¬¥à ¡«®ª "ᥪâ®à®¢ ª« áâ¥à"
|
||
ex de,hl
|
||
ld hl,4000h-1 ; ª®áâ â
|
||
xor a
|
||
A1426: inc a
|
||
jp z,A14EA
|
||
sbc hl,de
|
||
jr nc,A1426
|
||
ld (D150A),a
|
||
ld hl,T00AC ; "FAT16 "
|
||
ld de,T14F4 ; "FAT"
|
||
ld b,3
|
||
A1439: ld a,(de)
|
||
cp (hl)
|
||
jp nz,A14D1
|
||
inc hl
|
||
inc de
|
||
djnz A1439
|
||
A1442: ld a,(hl)
|
||
inc hl
|
||
cp " "
|
||
jr z,A1442
|
||
cp "1"
|
||
jp nz,A14EA
|
||
ld a,(hl)
|
||
cp "6"
|
||
ld hl,0FFFFh ; ï祩ª FAT16
|
||
jr z,A145D
|
||
cp "2"
|
||
jp nz,A14EA
|
||
ld hl,0FFFh ; ï祩ª FAT12
|
||
A145D: ld (D150B),a ; "2"/"6" fat12/fat13
|
||
ld (D150E),hl
|
||
ld hl,0
|
||
ld c,(iy+24) ; bc=ᥪâ®à®¢ áâ®à®ã
|
||
ld b,(iy+25)
|
||
ld a,(D0090) ; ª®«-¢® áâ®à® ¤¨áª
|
||
A146F: add hl,bc
|
||
dec a
|
||
jr nz,A146F
|
||
ld (D150C),hl
|
||
ld de,(D1506)
|
||
ld l,(iy+19) ; hl=¢á¥å ᥪâ®à®¢ ¤¨áª¥
|
||
ld h,(iy+20)
|
||
ld a,h
|
||
or l
|
||
jr nz,A149B
|
||
; extended boot-record
|
||
ld l,(iy+32) ; hl=¬«.à §àï¤ ¢á¥å ᥪâ®à®¢ ¤¨áª¥
|
||
ld h,(iy+33) ;
|
||
ld c,(iy+34) ; bc=áâ.à §àï¤
|
||
ld b,(iy+35) ;
|
||
sbc hl,de
|
||
jr nc,A14A1
|
||
dec bc
|
||
jr A14A1
|
||
;
|
||
A149B: sbc hl,de
|
||
ld bc,0
|
||
A14A1: ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
scf
|
||
A14A5: rra
|
||
jr c,A14B3
|
||
rr b
|
||
rr c
|
||
rr h
|
||
rr l
|
||
jr A14A5
|
||
;
|
||
A14B3: inc hl
|
||
ld (D12FF),hl
|
||
pop iy ; iy=áâàãªâãà ¤¥áªà.
|
||
ld hl,0
|
||
ld (D12FD),hl
|
||
ld a,1 ; «®£. ®¬¥à ¤®á-¡ ª¨ (ªíè FAT- )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
xor a
|
||
call A125B ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||
pop af
|
||
out (0E2h),a
|
||
call A10F6 ; ãáâ. ç «ìë© ª« áâ¥à ¤«ï ç⥨ï
|
||
xor a
|
||
ret
|
||
;
|
||
A14D1: ld a,(iy+15h)
|
||
cp 0F0h ; ä®à¬ â 720kB ¤¨áª¥âë
|
||
jr c,A14EA
|
||
cp 0F8h ; ¡ ©â-¤¥áªà¨¯â®à ¢¨â
|
||
ld a,"6"
|
||
ld hl,0FFFFh ; ï祩ª FAT16
|
||
jr z,A145D
|
||
ld a,"2"
|
||
ld hl,0FFFh ; ï祩ª FAT12
|
||
jp A145D
|
||
;
|
||
A14EA: pop iy
|
||
ld a,EINVMED ; ª®¤ "¥ ¨§¢¥áâë© ä®à¬ â"
|
||
scf
|
||
ret
|
||
;
|
||
A14F0: ld a,ENORDY ; ª®¤ "¥â £®â®¢®áâ¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
T14F4: db "FAT"
|
||
;
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
|
||
disk: db 1 ; ®¬¥à ¤¨áª „Ž‘
|
||
|
||
D14FC: dw 0
|
||
D14FE: dw 0
|
||
D1500: dw 0
|
||
D1502: dw 0
|
||
D1504: db 0
|
||
D1505: db 0
|
||
D1506: dw 0
|
||
D1508: dw 0 ; à §¬¥à ¡«®ª "ᥪâ®à®¢ ª« áâ¥à"
|
||
D150A: db 0
|
||
D150B: db 0 ; "6"/"2" fat16/fat12
|
||
D150C: dw 0
|
||
D150E: dw 0FFFFh ; 0FFFFh/0FFFh fat16/fat12
|
||
|
||
|
||
; <20>ãä¥à ⥪ã饣® ¯ã⨠(ª â «®£ ) á¨á⥬ë
|
||
T1510: db '\'
|
||
ds 256
|
||
|
||
|
||
|
||
; <<< Œ áᨢ áâàãªâãà ¤¥áªà¨¯â®à®¢, 44*10=440 ¡ ©â >>>
|
||
;
|
||
; ‘âàãªâãà ¤¥áªà¨¯â®à ⥪. ª â «®£
|
||
handle: db ". " ;+0 ¨¬ï ä ©« (+0=0 - ¤¥áªà. ᢮¡®¤¥)
|
||
db " " ;+8 à áè. ä ©«
|
||
db 10h ;+11 âਡãâ
|
||
ds 10 ;+12 १¥à¢
|
||
dw 0 ;+22 ¢à¥¬ï
|
||
dw 0 ;+24 ¤ â
|
||
dw 0 ;+26 ®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
dw 0,0 ;+28 à §¬¥à ä ©«
|
||
dw 0 ;+32 ¬«.à §àï¤ ãª § ⥫ï ä ©«
|
||
dw 0 ;+34 áâ.à §àï¤
|
||
dw 0 ;+36 ®¬¥à ¯¥à¢®£® ª« áâ¥à ª â «®£ (¨§ +26)
|
||
dw 0 ;+38 ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ (¨á¯. #11 äãª.)
|
||
db 0 ;+40 ®¬¥à ¤¨áª (drive or current)
|
||
db 0 ;+41 ०¨¬ ¤®áâ㯠ª ä ©«ã (r,w,r/w). 7-© ¡¨â - ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||
db 0 ;+42 ã஢¥ì ⥪. ¯à®£à ¬¬ë (§ ¤ ç (¢« ¤¥«¥æ))
|
||
db 0 ;+43 १¥à¢
|
||
|
||
size_struc_handle equ $-handle ; à §¬¥à áâàãªâãàë (44 ¡ ©â )
|
||
|
||
; 9 ä ©«®¢ëå áâàãªâãà
|
||
ds size_struc_handle * max_handles ; 44*9=396
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>®¨áª ¤¥áªà¨¯â®à ä ©« .
|
||
; ¢å®¤: a=®¬¥à ¤¥áªà.
|
||
; ¢ë室: iy= ¤à¥á áâàãªâãàë ¤¥áªà.
|
||
; CF - ¥â ¤¥áªà¨¯â®à
|
||
;-------------------------------------------------
|
||
search_handle:
|
||
inc a
|
||
cp max_handles+1 ; § ¯à¥¤. ç¨á«® ¤¥áªà¨¯â®à®¢
|
||
jr nc,A17E3
|
||
push de
|
||
ld iy,handle - size_struc_handle ; ¬ áᨢ ¤¥áªà. - 44
|
||
ld de,size_struc_handle ; 44 à §¬¥à áâàãªâãàë ¤¥áªà¨¯â®à
|
||
add iy,de
|
||
dec a
|
||
jr nz,$-3 ; ¨é¥¬ ã¦ë© ¤¥áªà.
|
||
pop de
|
||
ld a,(iy+0) ; ®¬¥à ⥪. ¤¥áªà.
|
||
or a
|
||
ld a,EZERO ; ª®¤ "Ok"
|
||
ret nz ; ¤¥áªà. § ïâ
|
||
A17E3: ld a,EINVHND ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¤¥áªà¨¯â®à"
|
||
scf
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; Žá¢®¡®¦¤¥¨¥ ¤¥áªà¨¯â®à ä ©« .
|
||
; ¢å®¤: a=®¬¥à ¤¥áªà¨¯â®à
|
||
; ¢ë室: CF - ¯à¨ ®è¨¡ª¥ "¥ áãé¥áâ¢ãî騩 ¤¥áªà¨¯â®à"
|
||
;-----------------------------------------------------------
|
||
release_handle:
|
||
inc a
|
||
cp max_handles+1 ; § ¯à¥¤. ç¨á«® ¤¥áªà¨¯â®à®¢
|
||
jr nc,A17E3
|
||
push de
|
||
ld iy,handle - size_struc_handle ; ¬ áᨢ ¤¥áªà. - 44
|
||
ld de,size_struc_handle ; 44 à §¬¥à áâàãªâãàë ¤¥áªà¨¯â®à
|
||
add iy,de
|
||
dec a
|
||
jr nz,$-3 ; ¨é¥¬ ã¦ë© ¤¥áªà¨¯â®à
|
||
pop de
|
||
ld a,(iy+0) ; ¨¬ï ä ©« ¢ ¤¥áªà¨¯â®à¥
|
||
or a ; áâàãªâãà ᢮¡®¤ ?
|
||
ld a,EINVHND ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¤¥áªà¨¯â®à"
|
||
exx
|
||
scf
|
||
ret z ; ¤
|
||
xor a
|
||
ld (iy+0),a ; ®á¢®¡. ⥪. ¤¥áªà¨¯â®à
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>®¨áª ᢮¡®¤®£® ¤¥áªà¨¯â®à .
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: c=®¬¥à ¤¥áªà¨¯â®à
|
||
; CF - ¥â ᢮¡. ¤¥áªà¨¯â®à
|
||
;-------------------------------------------------
|
||
search_free_handle:
|
||
ld b,max_handles+1 ; 10 ¬ ªá.ç¨á«® ¤¥áªà¨¯â®à®¢+1
|
||
ld c,-1 ; áç¥â稪 ®¬¥à ¤¥áªà.
|
||
ld iy,handle - size_struc_handle ; ¬ áᨢ ¤¥áªà. - 44
|
||
ld de,size_struc_handle ; 44 à §¬¥à áâàãªâãàë ¤¥áªà¨¯â®à
|
||
A1815: add iy,de
|
||
inc c ; 0..9
|
||
ld a,(iy+0)
|
||
or a ; ⥪. áâàãªâãà ¤¥áªà¨¯â®à ᢮¡®¤ ?
|
||
ret z ; ¤
|
||
djnz A1815 ; á«¥¤. áâàãªâãàã
|
||
ld a,EMFILE ; ª®¤ "᫨誮¬ ¬®£® ®âªà. ä ©«®¢"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #15. <20>¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥.
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©«
|
||
; HL:IX - ᬥ饨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
; B - ᯮᮡ ¯¥à¥¬¥é¥¨ï
|
||
; B=0 ®â ç « ä ©«
|
||
; B=1 ®â ⥪ã饣® § 票ï 㪠§ ⥫ï
|
||
; B=2 ®â ª®æ ä ©«
|
||
; ¢ë室: HL:IX - ®¢®¥ § 票¥ 㪠§ ⥫ï
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_15:call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ret c ; ¥ ©¤¥
|
||
inc b
|
||
dec b
|
||
jr z,A1835 ; ®â ç «
|
||
dec b
|
||
jr z,A184B ; ®â ⥪. ¯®«®¦.
|
||
dec b
|
||
jr z,A183D ; ®â ª®æ
|
||
empty__:ld a,EINVFNC ; ª®¤ "¥ ¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
; Žâ ç « ä ©«
|
||
A1835: ld bc,0 ; ¤«ï ¬«. à §àï¤
|
||
ld e,c ; ¤«ï áâ. à §àï¤
|
||
ld d,c
|
||
jr A1857
|
||
|
||
; Žâ ª®æ ä ©«
|
||
A183D: ld c,(iy+1Ch) ; iy=¤¥áªà. ä ©«
|
||
ld b,(iy+1Dh)
|
||
ld e,(iy+1Eh)
|
||
ld d,(iy+1Fh)
|
||
jr A1857
|
||
|
||
; Žâ ⥪. ¯®«®¦¥¨ï
|
||
A184B: ld c,(iy+20h)
|
||
ld b,(iy+21h)
|
||
ld e,(iy+22h)
|
||
ld d,(iy+23h)
|
||
A1857: add ix,bc ; ¬«. à §àï¤
|
||
adc hl,de ; áâ. à §àï¤
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ld (iy+20h),e
|
||
ld (iy+21h),d
|
||
ld (iy+22h),l
|
||
ld (iy+23h),h
|
||
xor a
|
||
ret
|
||
|
||
|
||
A186D: ld l,(iy+1Ch)
|
||
ld h,(iy+1Dh)
|
||
ld e,(iy+20h)
|
||
ld d,(iy+21h)
|
||
and a
|
||
sbc hl,de
|
||
ld l,(iy+1Eh)
|
||
ld h,(iy+1Fh)
|
||
ld e,(iy+22h)
|
||
ld d,(iy+23h)
|
||
sbc hl,de
|
||
ret
|
||
|
||
|
||
|
||
A188B: pop bc
|
||
pop de
|
||
and a
|
||
ret
|
||
;
|
||
A188F: pop bc
|
||
pop de
|
||
scf ; ®è¨¡ª
|
||
ret
|
||
;
|
||
A1893: push bc
|
||
ld (D1CFB),ix
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld c,a
|
||
ld b,0
|
||
call A1CD9
|
||
db 0DDh
|
||
ld b,h
|
||
db 0DDh
|
||
ld c,l
|
||
push hl
|
||
ld l,(iy+26) ; ®¬¥à ¯¥à¢®£® ª« áâ¥à (¨§ ¤¥áªà.)
|
||
ld h,(iy+27) ;
|
||
ld a,h
|
||
or l
|
||
jr nz,A18BB
|
||
jr A188B ; ä ©« ã«¥¢®© ¤«¨ë
|
||
;
|
||
A18B2: push bc
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
pop bc
|
||
jr c,A188B ; ª®¥æ 楯®çª¨
|
||
ex de,hl ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||
dec bc
|
||
A18BB: ld a,b
|
||
or c
|
||
jr nz,A18B2 ; ¯à®ç¨â âì á«¥¤. ᥪâ®à (ª« áâ¥à)
|
||
pop de
|
||
pop bc
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
sub e
|
||
ld c,a
|
||
cp b
|
||
jr c,A18CA
|
||
ld c,b
|
||
A18CA: ld a,b
|
||
sub c
|
||
ld b,a
|
||
push hl
|
||
push bc
|
||
push de
|
||
call A1CB8
|
||
pop de
|
||
add ix,de
|
||
jr nc,$+3
|
||
inc hl
|
||
ld de,(D1CFB) ; ¡ãä¥à
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld b,c ; ç¨á«® ᥪâ®à®¢
|
||
ld c,5 ; ç⥨¥ ᥪâ®à®¢
|
||
rst 18h
|
||
jr c,A188F ; ®è¨¡ª
|
||
pop bc
|
||
ld hl,(D1CFB)
|
||
ld de,(D0081) ; ¡ ©â®¢ ᥪâ®à (512)
|
||
A18EF: add hl,de
|
||
dec c
|
||
jr nz,A18EF
|
||
ld (D1CFB),hl
|
||
pop de
|
||
ld a,b
|
||
or a
|
||
ret z
|
||
A18FA: ld hl,D0083 ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld a,b
|
||
sub (hl)
|
||
ld b,a
|
||
ld c,(hl)
|
||
jr nc,A1909
|
||
ld b,0
|
||
add a,(hl)
|
||
ld c,a
|
||
or a
|
||
ret z
|
||
A1909: ex de,hl ; hl=®¬¥à ª« áâ¥à
|
||
push bc
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
pop bc
|
||
jr c,A1938 ; ª®¥æ 楯®çª¨
|
||
ex de,hl ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||
push hl
|
||
push bc
|
||
call A1CB8
|
||
ld de,(D1CFB) ; ªã¤
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld b,c ; ç¨á«® ᥪâ®à®¢
|
||
ld c,5 ; ç⥨¥ ᥪâ®à®¢
|
||
rst 18h
|
||
jp c,A188F ; ®è¨¡ª
|
||
pop bc
|
||
ld hl,(D1CFB)
|
||
ld de,(D0081) ; ¡ ©â®¢ ᥪâ®à (512)
|
||
A192E: add hl,de
|
||
dec c
|
||
jr nz,A192E
|
||
ld (D1CFB),hl
|
||
pop de
|
||
jr A18FA
|
||
;
|
||
A1938: and a
|
||
ret
|
||
|
||
|
||
|
||
A193A: pop bc
|
||
A193B: pop bc
|
||
pop de
|
||
scf
|
||
ret
|
||
;
|
||
A193F: push bc
|
||
ld (D1CFB),ix
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld c,a
|
||
ld b,0
|
||
call A1CD9
|
||
db 0DDh
|
||
ld b,h
|
||
db 0DDh
|
||
ld c,l
|
||
push hl
|
||
ld l,(iy+1Ah) ; hl=®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
ld h,(iy+1Bh) ;
|
||
ld a,h
|
||
or l
|
||
jr nz,A198A
|
||
push bc
|
||
call A10FD
|
||
jr c,A193A
|
||
ld (iy+1Ah),l ; hl=®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
ld (iy+1Bh),h ;
|
||
ld de,(D150E) ; ®¬¥à ª« áâ¥à
|
||
call A11C4 ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
push hl
|
||
call A128B ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
pop hl
|
||
pop bc
|
||
jr A198A
|
||
;
|
||
A1977: push bc
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
jr nc,A1987 ; ¥ ª®¥æ 楯®çª¨
|
||
push hl ; ®¬¥à ª« áâ¥à (¥ á«¥¤ãî饣®)
|
||
call A1111
|
||
pop hl
|
||
jr c,A193A
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
A1987: pop bc
|
||
ex de,hl ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||
dec bc
|
||
A198A: ld a,b
|
||
or c
|
||
jr nz,A1977
|
||
pop de
|
||
pop bc
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
sub e
|
||
ld c,a
|
||
cp b
|
||
jr c,$+3
|
||
ld c,b
|
||
ld a,b
|
||
sub c
|
||
ld b,a
|
||
push hl
|
||
push bc
|
||
push de
|
||
call A1CB8
|
||
pop de
|
||
add ix,de
|
||
jr nc,$+3
|
||
inc hl
|
||
ld de,(D1CFB) ; ¡ãä¥à
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld b,c ; ç¨á«® ᥪâ®à®¢
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
rst 18h
|
||
jp c,A193B ; ®è¨¡ª
|
||
pop bc
|
||
ld hl,(D1CFB)
|
||
ld de,(D0081) ; ¡ ©â®¢ ᥪâ®à (512)
|
||
add hl,de
|
||
dec c
|
||
jr nz,$-2
|
||
ld (D1CFB),hl
|
||
pop de
|
||
ld a,b
|
||
or a
|
||
ret z
|
||
A19C9: ld hl,D0083 ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld a,b
|
||
sub (hl)
|
||
ld b,a
|
||
ld c,(hl)
|
||
jr nc,A19D8
|
||
ld b,0
|
||
add a,(hl)
|
||
ld c,a
|
||
or a
|
||
ret z
|
||
A19D8: ex de,hl
|
||
push bc
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
jr nc,A19E9 ; ¥ ª®¥æ 楯®çª¨
|
||
push hl ; ®¬¥à ª« áâ¥à (¥ á«¥¤ãî饣®)
|
||
call A1111
|
||
pop hl
|
||
jr c,A1A10 ; ¥â ¬¥áâ ¤¨áª¥
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
A19E9: pop bc
|
||
ex de,hl ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||
push hl
|
||
push bc
|
||
call A1CB8
|
||
ld de,(D1CFB) ; ¡ãä¥à
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld b,c ; ç¨á«® ᥪâ®à®¢
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
rst 18h
|
||
jp c,A193B ; ®è¨¡ª
|
||
pop bc
|
||
ld hl,(D1CFB)
|
||
ld de,(D0081) ; ¡ ©â®¢ ᥪâ®à (512)
|
||
add hl,de
|
||
dec c
|
||
jr nz,$-2
|
||
ld (D1CFB),hl
|
||
pop de
|
||
jr A19C9
|
||
;
|
||
A1A10: pop bc
|
||
ld a,ENOSPACE ; ª®¤ "¥â ¬¥áâ ¤¨áª¥"
|
||
scf
|
||
ret
|
||
|
||
|
||
A1A15: xor a
|
||
ld (D1CFA),a
|
||
ld l,(iy+20h)
|
||
ld h,(iy+21h)
|
||
add hl,de
|
||
exx
|
||
ld e,a
|
||
ld d,a
|
||
ld l,(iy+22h)
|
||
ld h,(iy+23h)
|
||
adc hl,de
|
||
exx
|
||
ld c,(iy+1Ch)
|
||
ld b,(iy+1Dh)
|
||
and a
|
||
sbc hl,bc
|
||
exx
|
||
ld c,(iy+1Eh)
|
||
ld b,(iy+1Fh)
|
||
sbc hl,bc
|
||
exx
|
||
ret c
|
||
ex de,hl
|
||
sbc hl,de
|
||
ex de,hl
|
||
ld a,-1
|
||
ld (D1CFA),a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #13. —⥨¥ ¨§ ä ©« .
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©« (0-© = ç⥨¥ ᯨ᪠¤¨áª )
|
||
; HL - ¡ãä¥à
|
||
; DE - ª®«-¢® ç¨â ¥¬ëå ¡ ©â
|
||
; ¢ë室: DE - ॠ«ì®¥ ª®«-¢® ¯à®ç¨â ëå ¡ ©â
|
||
; ¥á«¨ CF=0:
|
||
; A=0 ¯à®ç¨â ë ¢á¥ ¡ ©âë
|
||
; A=0FFh ¯à®ç¨â ® ¬¥ì襥 ç¨á«® ¡ ©â
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_13:ld (D1D01),hl
|
||
ld (D1D03),hl
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ret c ; ¥ ©¤¥
|
||
call A1A15
|
||
ld a,d
|
||
or e
|
||
jp z,A1B02
|
||
push de
|
||
ld a,(iy+40) ; ®¬¥à ¤¨áª ¨§ ¤¥áªà.
|
||
call A2147
|
||
jp c,A1B57
|
||
ld c,(iy+32) ; ¬«.à §àï¤ ãª § ⥫ï ä ©«
|
||
ld a,(iy+33) ;
|
||
ld e,a
|
||
and 1
|
||
ld b,a
|
||
ld d,(iy+34) ; áâ.à §àï¤
|
||
ld l,(iy+35) ;
|
||
ld h,0
|
||
or a
|
||
rr l
|
||
rr d
|
||
rr e
|
||
ld a,b
|
||
or c
|
||
jp nz,A1B07
|
||
A1A85: pop bc
|
||
push bc
|
||
srl b
|
||
jr z,A1ABA
|
||
ld (D1CFD),hl
|
||
ld (D1CFF),de
|
||
ld ix,(D1D01)
|
||
call A1893
|
||
jp c,A1B57
|
||
ld de,(D1D01)
|
||
ld hl,(D1CFB)
|
||
and a
|
||
sbc hl,de
|
||
ld c,h
|
||
ld b,0
|
||
add hl,de
|
||
ld (D1D01),hl
|
||
srl c
|
||
ld hl,(D1CFF)
|
||
add hl,bc
|
||
ex de,hl
|
||
ld hl,(D1CFD)
|
||
ld c,b
|
||
adc hl,bc
|
||
A1ABA: pop bc
|
||
ld a,b
|
||
and 1
|
||
ld b,a
|
||
or c
|
||
jr z,A1AEA
|
||
push bc
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A1893
|
||
pop bc
|
||
ld c,0E2h ; ¯®àâ
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
jp c,A1B57
|
||
ld hl,T0400 ; ®âªã¤
|
||
ld de,(D1D01)
|
||
pop bc
|
||
ldir
|
||
ld (D1D01),de
|
||
A1AEA: ld hl,(D1D03)
|
||
ld de,(D1D01)
|
||
ex de,hl
|
||
and a
|
||
sbc hl,de
|
||
push hl
|
||
ex de,hl
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
ld hl,0
|
||
call A184B
|
||
pop de
|
||
A1B02: ld a,(D1CFA)
|
||
or a
|
||
ret
|
||
;
|
||
A1B07: push bc
|
||
push hl
|
||
push de
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A1893
|
||
pop bc
|
||
ld c,0E2h
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
pop hl
|
||
jr c,A1B55
|
||
ld bc,1 ;T0001
|
||
add hl,bc
|
||
ex de,hl
|
||
pop hl
|
||
ld c,b
|
||
adc hl,bc
|
||
exx
|
||
pop de
|
||
ld hl,512 ;T0200 ?
|
||
and a
|
||
sbc hl,de
|
||
ld b,h
|
||
ld c,l
|
||
pop hl
|
||
and a
|
||
sbc hl,bc
|
||
jr nc,A1B42
|
||
add hl,bc
|
||
ld b,h
|
||
ld c,l
|
||
ld hl,0
|
||
A1B42: push hl
|
||
ld hl,T0400 ; ®âªã¤
|
||
add hl,de
|
||
ld de,(D1D01) ; ªã¤
|
||
ldir
|
||
ld (D1D01),de
|
||
exx
|
||
jp A1A85
|
||
;
|
||
A1B55: pop hl
|
||
pop hl
|
||
A1B57: pop bc
|
||
scf
|
||
ret
|
||
;
|
||
A1B5A: pop hl
|
||
A1B5B: pop hl
|
||
A1B5C: pop bc
|
||
scf
|
||
ret
|
||
;
|
||
A1B5F: pop de
|
||
ld a,EROFILE ; ª®¤ "ä ©« r/o"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #14. ‡ ¯¨áì ¢ ä ©«.
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©« (0-© = § ¯¨áì ᯨ᪠¤¨áª )
|
||
; HL - ¡ãä¥à ¤ ëå
|
||
; DE - ª®«-¢® § ¯¨áë¢ ¥¬ëå ¡ ©â
|
||
; ¢ë室: DE - ॠ«ì®¥ ª®«-¢® § ¯¨á ëå ¡ ©â
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_14:ld (D1D01),hl
|
||
ld (D1D03),hl
|
||
push de
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
jr c,A1B5C ; ¥ ©¤¥
|
||
ld a,(iy+41) ; ०¨¬ ¤®áâ㯠ª ä ©«ã (r,w,r/w)
|
||
and 1 ; ç⥨¥
|
||
jr nz,A1B5F ; § ¯¨áì ¥ ¢®§¬®¦ (ä ©« r/o)
|
||
set 7,(iy+41) ; ãáâ. ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||
set 5,(iy+11) ; ¡¨â " à娢ë©" ¢ ï祩ª¥ âਡãâ
|
||
ld a,(iy+40) ; ®¬¥à ¤¨áª
|
||
call A2147
|
||
jr c,A1B5C
|
||
ld c,(iy+32)
|
||
ld a,(iy+33)
|
||
ld e,a
|
||
and 1
|
||
ld b,a
|
||
ld d,(iy+34)
|
||
ld l,(iy+35)
|
||
ld h,0
|
||
or a
|
||
rr l
|
||
rr d
|
||
rr e
|
||
ld a,b
|
||
or c
|
||
jp nz,A1C4E
|
||
A1BA7: pop bc
|
||
push bc
|
||
srl b
|
||
jr z,A1BD1
|
||
push hl
|
||
push de
|
||
push bc
|
||
ld ix,(D1D01)
|
||
call A193F
|
||
pop bc
|
||
jp c,A1B5A
|
||
ld c,b
|
||
ld hl,(D1D01)
|
||
ld de,512 ; à §¬¥à ᥪâ®à
|
||
add hl,de
|
||
djnz $-1
|
||
ld (D1D01),hl
|
||
pop hl
|
||
add hl,bc
|
||
ex de,hl
|
||
pop hl
|
||
ld c,b
|
||
adc hl,bc
|
||
A1BD1: pop bc
|
||
ld a,b
|
||
and 1
|
||
ld b,a
|
||
or c
|
||
jr z,A1C19
|
||
push hl
|
||
push de
|
||
push bc
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A1893
|
||
pop bc
|
||
ld c,0E2h
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
ld de,T0400 ; ªã¤
|
||
ld hl,(D1D01) ; ®âªã¤
|
||
pop bc
|
||
jp c,A1B5B
|
||
ldir
|
||
ld (D1D01),hl
|
||
pop de
|
||
pop hl
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A193F
|
||
pop bc
|
||
ld c,0E2h
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
ret c
|
||
A1C19: ld de,(D1D03)
|
||
ld hl,(D1D01)
|
||
and a
|
||
sbc hl,de
|
||
push hl
|
||
ex de,hl
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
ld hl,0
|
||
call A184B
|
||
call A186D
|
||
pop de
|
||
ret nc
|
||
ld l,(iy+20h)
|
||
ld h,(iy+21h)
|
||
ld c,(iy+22h)
|
||
ld b,(iy+23h)
|
||
ld (iy+1Ch),l
|
||
ld (iy+1Dh),h
|
||
ld (iy+1Eh),c
|
||
ld (iy+1Fh),b
|
||
and a
|
||
ret
|
||
;
|
||
A1C4E: push bc
|
||
push hl
|
||
push de
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A1893
|
||
pop bc
|
||
ld c,0E2h
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
pop de
|
||
pop hl
|
||
exx
|
||
pop de
|
||
jp c,A1B5C
|
||
ld hl,512 ;T0200
|
||
and a
|
||
sbc hl,de
|
||
ld b,h
|
||
ld c,l
|
||
pop hl
|
||
and a
|
||
sbc hl,bc
|
||
jr nc,A1C81
|
||
add hl,bc
|
||
ld b,h
|
||
ld c,l
|
||
ld hl,0
|
||
A1C81: push hl
|
||
ld hl,T0400 ; ªã¤
|
||
add hl,de
|
||
ld de,(D1D01) ; ®âªã¤
|
||
ex de,hl
|
||
ldir
|
||
ld (D1D01),hl
|
||
exx
|
||
push hl
|
||
push de
|
||
ld ix,LC400
|
||
ld b,1
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
call A193F
|
||
pop bc
|
||
ld c,0E2h
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
pop hl
|
||
jp c,A1B5B
|
||
ld bc,1 ;T0001
|
||
add hl,bc
|
||
ex de,hl
|
||
pop hl
|
||
ld c,b
|
||
adc hl,bc
|
||
jp A1BA7
|
||
|
||
|
||
A1CB8: dec hl
|
||
dec hl
|
||
ex de,hl
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld b,a
|
||
ld hl,0
|
||
ld ix,0
|
||
A1CC6: add ix,de
|
||
jr nc,$+3
|
||
inc hl
|
||
djnz A1CC6
|
||
ld de,(D1506)
|
||
add ix,de
|
||
ld e,b
|
||
ld d,b
|
||
adc hl,de
|
||
ret
|
||
|
||
|
||
A1CD9: db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
ex de,hl
|
||
ld hl,0
|
||
ld a,32
|
||
A1CE3: add ix,ix
|
||
ex de,hl
|
||
adc hl,hl
|
||
ex de,hl
|
||
adc hl,hl
|
||
sbc hl,bc
|
||
jr nc,A1CF4
|
||
add hl,bc
|
||
dec a
|
||
jr nz,A1CE3
|
||
ret
|
||
;
|
||
A1CF4: inc ix
|
||
dec a
|
||
jr nz,A1CE3
|
||
ret
|
||
|
||
|
||
|
||
D1CFA: db 0
|
||
D1CFB: dw 0
|
||
D1CFD: dw 0
|
||
D1CFF: dw 0
|
||
D1D01: dw 0
|
||
D1D03: dw 0
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #16. <20>®«ã票¥/¨§¬¥¥¨¥ âਡãâ ä ©« .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; B - ०¨¬ ¤®áâ㯠:
|
||
; B=0 ¯®«ãç¨âì âਡãâ
|
||
; B=1 ãáâ ®¢¨âì âਡãâ
|
||
; A - âਡãâ ä ©«
|
||
; ¢ë室: A - âਡãâ ä ©« , ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_16:inc b
|
||
dec b
|
||
jr z,A1D12 ; b=0
|
||
dec b
|
||
jr z,A1D24 ; b=1
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
; <20>®«ãç¨âì âਡãâ ä ©«
|
||
A1D12: xor a ; âਡãâ § ¯¨á¨
|
||
call A1E5F
|
||
ret c
|
||
ld b,(iy+11) ; âਡãâ § ¯¨á¨ ¨§ ¤¥áªà.
|
||
push bc
|
||
call Func_12 ; § ªàëâì ä ©«
|
||
pop bc
|
||
ret c
|
||
ld a,b
|
||
and a
|
||
ret
|
||
|
||
; ˆ§¬¥¨âì âਡãâ ä ©«
|
||
A1D24: push af
|
||
xor a ; âਡãâ § ¯¨á¨
|
||
call A1E5F
|
||
pop bc
|
||
ret c
|
||
set 7,(iy+41) ; ãáâ. ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||
res 3,b ; ¡¨â "¬¥âª ⮬ "
|
||
ld (iy+11),b ; ï祩ª âਡã⮢ § ¯¨á¨
|
||
push bc
|
||
call Func_12 ; § ªàëâì ä ©«
|
||
pop bc
|
||
ret c
|
||
ld a,b
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #0A. ‘®§¤ ¨¥ ä ©« .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; A - âਡãâ ä ©«
|
||
; ¢ë室: A - ¤¥áªà¨¯â®à ä ©« , ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_0A:and 11100111b ; ¬ ᪠, áªàëâì ¡¨âë dir/label
|
||
ld (D1F3A),a ; à ¡. ï祩ª
|
||
ld (file_name+1),hl ; ¨¬ï ä ©«
|
||
push hl
|
||
call search_free_handle ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||
pop hl
|
||
ret c ; ¥ ©¤¥
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c ; ¥¤®¯. ¨¬ï
|
||
call search_rec_file ; ¯®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ¤¨áª
|
||
call nc,mark_delete ; ©¤¥, ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
||
jr A1D7B
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #0B. ‘®§¤ ¨¥ ®¢®£® ä ©« .
|
||
; <20>஢¥àï¥â, áãé¥áâ¢ã¥â «¨ ä ©« á â ª¨¬ ¦¥ ¨¬¥¥¬.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; A - âਡãâ ä ©«
|
||
; ¢ë室: A - ¤¥áªà¨¯â®à ä ©« , ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_0B:and 11100111b ; ¬ ᪠, áªàëâì ¡¨âë dir/label
|
||
ld (D1F3A),a ; à ¡. ï祩ª
|
||
ld (file_name+1),hl ; ¨¬ï ä ©«
|
||
push hl
|
||
call search_free_handle ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||
pop hl
|
||
ret c ; ¥ ©¤¥
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c ; ¥¤®¯. ¨¬ï
|
||
call search_rec_file ; ¯®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ¤¨áª
|
||
ld a,EEXIST ; ª®¤ "ä ©« áãé¥áâ¢ã¥â"
|
||
ccf
|
||
ret c ; ©¤¥
|
||
; á®§¤ âì ¢ ¡ãä¥à¥ ®¢ãî § ¯¨áì
|
||
A1D7B: ld hl,T2364
|
||
ld de,T1F3B
|
||
ld bc,11
|
||
ldir
|
||
ex de,hl
|
||
ld a,(D1F3A) ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||
ld (hl),a ;+11 ¢ § ¯¨á¨
|
||
inc hl
|
||
ld bc,0A00h ; b=10 ¡ ©â १¥à¢
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-2
|
||
push hl
|
||
call Func_21 ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||
call A2599 ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
pop hl
|
||
ld (hl),e ;+22 ¢à¥¬ï
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ld (hl),c ;+24 ¤ â
|
||
inc hl
|
||
ld (hl),b
|
||
inc hl
|
||
ld bc,0600h ; 6 ï祥ª, ü ª« áâ¥à ¨ à §¬¥à ä ©«
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-2
|
||
call A1F5B ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||
call flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
; ®âªàëâì á®§¤ ë© ä ©«
|
||
file_name:
|
||
ld hl,0 ; ¤à¥á ¨¬¥¨ ä ©«
|
||
xor a ; ç⥨¥/§ ¯¨áì
|
||
jp Func_11 ; ®âªàëâì ä ©«
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #0C. ‘®§¤ ¨¥ ä ©« á 㨪 «ìë¬ ¨¬¥¥¬.
|
||
; ‚ ª®æ¥ áâப¨ ¯ã⨠¤®«¦® ¡ëâì ª ª ¬¨¨¬ã¬ 12 ¡ ©â,
|
||
; à §¬¥é¥¨¥ á®§¤ ®£® ¨¬¥¨ ä ©« . ‘ ¬ áâப ¤®«¦
|
||
; § ª 稢 âìáï ã«¥¬.
|
||
; …᫨ á®§¤ ë© ä ©« 㦥 áãé¥áâ¢ã¥â, ® ®¡ã«ï¥âáï ¨ ®âªàë-
|
||
; ¢ ¥âáï ç⥨¥/§ ¯¨áì.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ ⥫ì áâப㠯ã⨠(¨/¨«¨ á ¤¨áª®¬).
|
||
; A - âਡãâ ä ©«
|
||
; ¢ë室: A - ¤¥áªà¨¯â®à ä ©« , ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_0C:jp empty__ ; ª®¤ "¥ ¢¥àë© ®¬¥à äãªæ¨¨"
|
||
;push af
|
||
;push hl
|
||
; á®§¤ âì 㨪. ¨¬ï
|
||
;call Func_21 ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||
;call A2599 ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
;; bc=¤ â , de=¢à¥¬ï
|
||
;ld hl,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
;ld a,b
|
||
;call byte2dec
|
||
;ld a,c
|
||
;call byte2dec
|
||
;ld a,d
|
||
;call byte2dec
|
||
;ld a,e
|
||
;call byte2dec
|
||
;pop hl
|
||
;push hl
|
||
;; ¯¥à¥©â¨ ª®¥æ áâப¨
|
||
;xor a
|
||
;ld bc,256
|
||
;cpir
|
||
;dec hl
|
||
;ex de,hl
|
||
;; ¤®¡ ¢¨âì ¨¬ï ä ©« ¢ ª®¥æ áâப¨
|
||
;ld hl,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
;ld bc,8 ; ¨¬ï
|
||
;ldir
|
||
;ex de,hl
|
||
;ld (hl),"."
|
||
;inc hl
|
||
;ld a,"$" ; à áè. ä ©«
|
||
;ld (hl),a
|
||
;inc hl
|
||
;ld (hl),a
|
||
;inc hl
|
||
;ld (hl),a
|
||
;inc hl
|
||
;ld (hl),0
|
||
;pop hl ; ¨¬ï ä ©«
|
||
;pop af ; âਡãâ
|
||
;; á®§¤ âì ä ©«
|
||
;jp Func_0A
|
||
|
||
|
||
; –¨äàã ¢ hex-ä®à¬ ⥠¢ ¡ãä¥à.
|
||
; ¢å®¤: hl=¡ãä¥à
|
||
; a=æ¨äà
|
||
;byte2dec:
|
||
;push af
|
||
;rra
|
||
;rra
|
||
;rra
|
||
;rra
|
||
;call $+4
|
||
;pop af
|
||
;and 0Fh
|
||
;add a,90h
|
||
;daa
|
||
;adc a,40h
|
||
;daa
|
||
;ld (hl),a
|
||
;inc hl
|
||
;ret
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #0E. “¤ «¥¨¥ ä ©« .
|
||
; ” ©«ë "r/o" ¥«ì§ï áâ¥à¥âì ¤ ®© äãªæ¨¥©.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; A - âਡãâ ä ©«
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_0E:bit 0,a
|
||
scf
|
||
ld a,EROFILE ; ª®¤ "ä ©« r/o"
|
||
ret nz
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
ld hl,T2364
|
||
ld bc,11
|
||
ld a,"?"
|
||
cpir
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret z
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
call search_rec_file ; ¯®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ¤¨áª
|
||
ret c ; ¥ ©¤¥
|
||
; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
||
mark_delete:
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
ld (ix+0),0E5h ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
||
ld e,(ix+26) ; ü ¯¥à¢®£® ª« áâ¥à
|
||
ld d,(ix+27)
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld a,e
|
||
or d
|
||
jp z,flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
A1DEA: ex de,hl ; hl=®¬¥à ª« áâ¥à
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
push de ; ®¬¥à á«¥¤. ª« áâ¥à
|
||
push af
|
||
ld de,0 ; ®¬¥à ª« áâ¥à
|
||
call A11C4 ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
pop af
|
||
pop de
|
||
jr nc,A1DEA ; ¥ ª®¥æ 楯®çª¨
|
||
call A128B ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
jp flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #10. <20>¥à¥¨¬¥®¢ ¨¥ ä ©« .
|
||
; ƒ«®¡ «ìë¥ á¨¬¢®«ë * ¨ ? ¢ ¨¬¥ å ä ©«®¢ ¥ ¤®¯ã᪠îâáï.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ ⥫ì áâ ஥ ¨¬ï ä ©«
|
||
; DE - 㪠§ â¥«ì ®¢®¥ ¨¬ï ä ©«
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_10:push de
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
pop de
|
||
ret c
|
||
ld hl,T2364
|
||
ld bc,11
|
||
ld a,"?"
|
||
cpir
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret z
|
||
push de
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
ld a,33h ; âਡãâ "arch + dir + r/o + hidden"
|
||
call search_record ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª
|
||
pop hl ; 8.3 ¨¬ï
|
||
ret c
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
ld hl,T2364
|
||
ld bc,11
|
||
ld a,"?"
|
||
cpir
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret z
|
||
push ix ; ¤à. § ¯¨á¨ ¯¥à¥¨¬¥. ä ©«
|
||
ld a,33h ; âਡãâ "arch + dir + r/o + hidden"
|
||
call search_record ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª
|
||
pop ix
|
||
ld a,EEXIST ; ª®¤ "ä ©« áãé¥áâ¢ã¥â"
|
||
ccf
|
||
ret c
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
ld hl,T2364
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ld bc,11
|
||
ldir
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
jp flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
|
||
|
||
A1E5F: ld (D1F3A),a ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
ld a,37h ; âਡãâ "¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ "
|
||
call search_record ; ¯®¨áª § ¯¨á¨ ¢ ªíè¥ á¯¨áª ª â «®£
|
||
jr nc,A1E8D ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||
; § ¯¨áì ¥ ©¤¥
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; A - ०¨¬ ¤®áâ㯠:
|
||
; A=0 ç⥨¥/§ ¯¨áì
|
||
; A=1 ç⥨¥
|
||
; A=2 § ¯¨áì
|
||
; ¢ë室: A - ¤¥áªà¨¯â®à ä ©« , ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_11:ld (D1F3A),a ; à ¡. ï祩ª
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
A1E89: call search_rec_file ; ¯®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ¤¨áª
|
||
ret c ; ¥ ©¤¥
|
||
A1E8D: call search_free_handle ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||
ret c ; ¥ ©¤¥
|
||
; § ¯®«¨âì áâàãªâãàã ¤¥áªà¨¯â®à
|
||
ld a,c ; ®¬¥à ᢮¡. ¤¥áªà¨¯â®à
|
||
ex af,af'
|
||
exx
|
||
ld (iy+38),e ; de=¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ (¨á¯. #11 äãª.)
|
||
ld (iy+39),d
|
||
exx
|
||
db 0FDh ; ld de,iy
|
||
ld d,h
|
||
db 0FDh
|
||
ld e,l
|
||
ld hl,T1F3B ; 32 ¡ ©â
|
||
ld bc,32
|
||
ldir ; § ¯®«¨âì ¤¥áªà¨¯â®à
|
||
ld a,(D1F3A) ; ०¨¬ ¤®áâ㯠ª ä ©«ã (à ¡. ï祩ª )
|
||
ld (iy+41),a
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë (¢« ¤¥«¥æ)
|
||
ld (iy+42),a
|
||
xor a
|
||
ld (iy+32),a
|
||
ld (iy+33),a
|
||
ld (iy+34),a
|
||
ld (iy+35),a
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld (iy+40),a
|
||
ld hl,handle+26 ; ï祩ª ü ¯¥à¢®£® ª« áâ¥à
|
||
ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
ld (iy+36),e ; ü ¯¥à¢®£® ª« áâ¥à
|
||
ld (iy+37),d
|
||
ex af,af'
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #12. ‡ ªàë⨥ ä ©« .
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©«
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_12:ld (D1F3A),a ; ¤¥áªà. (à ¡. ï祩ª )
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ret c ; ¥ ©¤¥
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
cp (iy+42) ; ã஢¥ì ¨§ ¤¥áªà¨¯â®à
|
||
ld a,EACCES ; ª®¤ "à¥áãàá ¥ ¤®áâ㯥"
|
||
scf
|
||
ret nz
|
||
bit 7,(iy+41) ; ä« £ ¨§¬¥¥¨ï ä ©«
|
||
jr z,A1F31 ; ®á¢®¡. ¤¥áªà. ä ©«
|
||
; ä ©« ¨§¬¥ï«áï
|
||
ld d,(iy+36)
|
||
ld e,(iy+37)
|
||
push de
|
||
xor a ; ®¬¥à ¤¥áªà.
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
pop de
|
||
ld (iy+36),d
|
||
ld (iy+37),e
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
ld a,(D1F3A) ; ¤¥áªà¨¯â®à (à ¡. ï祩ª )
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ld hl,LC000
|
||
ld de,32
|
||
ld c,(iy+38) ; bc=¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£
|
||
ld b,(iy+39)
|
||
jr A1F17
|
||
;
|
||
A1F15: add hl,de
|
||
dec bc
|
||
A1F17: ld a,b
|
||
or c
|
||
jr nz,A1F15
|
||
db 0FDh
|
||
ld d,h
|
||
db 0FDh
|
||
ld e,l
|
||
ex de,hl
|
||
push hl
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
pop hl
|
||
ld bc,32
|
||
ldir
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
call flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
A1F31: ld a,(D1F3A) ; ¤¥áªà. (à ¡. ï祩ª )
|
||
jp release_handle ; ®á¢®¡. ¤¥áªà. ä ©«
|
||
|
||
|
||
|
||
D1F3A: db 0 ; à ¡. ï祩ª (०¨¬ ¯®¨áª /¤®áâ㯠/..)
|
||
|
||
|
||
; 32 ¡ ©â . <20>ãä¥à § ¯¨á¨ ä ©« /ª â «®£
|
||
T1F3B: ds 11
|
||
D1F46: db 0 ;+11 ï祩ª âਡã⮢ ä ©«
|
||
ds 14
|
||
D1F55: dw 0
|
||
ds 4
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‘ª®¯¨à®¢ âì ®¢ãî § ¯¨áì ¢ ªíè ᯨ᪠ª â «®£
|
||
;-----------------------------------------------------------
|
||
A1F5B: xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld ix,LC000 ; ç «® ᯨ᪠¤¨áª
|
||
exx
|
||
ld de,0 ; á¡à. ¨¤¥ªá § ¯¨á¨ (¨á¯. #11 äãª.)
|
||
exx
|
||
A1F6A: ld a,(ix+0)
|
||
or a ; ª®¥æ ᯨáª
|
||
jr z,A1F82
|
||
cp 0E5h ; ¯à¨§ ª 㤠«. § ¯¨á¨
|
||
jr z,A1F82
|
||
ld bc,32
|
||
add ix,bc ; á«¥¤. § ¯¨áì
|
||
jr nc,A1F6A
|
||
; § £à ¨æ¥© 0FFFFh
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld a,EROOT ; ª®¤ "¯¥à¥¯®«¥¨¥ root-ª â «®£ "
|
||
scf
|
||
ret
|
||
; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª
|
||
A1F82: db 0DDh
|
||
ld d,h ; de=ªã¤
|
||
db 0DDh
|
||
ld e,l
|
||
ld hl,T1F3B ; ®âªã¤ 32 ¡ ©â (®¢ ï § ¯¨áì)
|
||
ld bc,32
|
||
ldir ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld hl,LC000 ; ç «® ᯨ᪠¤¨áª
|
||
ld bc,(size_cash_directory)
|
||
dec bc
|
||
add hl,bc
|
||
and a
|
||
sbc hl,de
|
||
ret nc
|
||
ld hl,(size_cash_directory)
|
||
ld bc,(D1508) ; à §¬¥à ¡«®ª "ᥪâ®à®¢ ª« áâ¥à"
|
||
add hl,bc
|
||
ld (size_cash_directory),hl
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #44. <20>८¡à §®¢ âì ¨¬ï ä ©« (11 -> 8.3 ¨ ®¡à â®).
|
||
;
|
||
; ¢å®¤: B=0, ¯à¥®¡à §®¢ âì ¨§ 11 ᨬ¢®«ì®£® ä®à¬ â ¢ ä®à¬ â „Ž‘
|
||
; HL - 11 ᨬ¢®«®¢ ¨¬¥¨ ä ©«
|
||
; DE - ¡ãä¥à ¤«ï ¨¬¥¨ ¢ ä®à¬ ⥠„Ž‘ (13 ¡ ©â)
|
||
; B=1, ¯à¥®¡à §®¢ âì ¨§ ä®à¬ â „Ž‘ ¢ 11 ᨬ¢®«ìë© ä®à¬ â
|
||
; HL - ¨¬ï ä ©« ¢ ä®à¬ ⥠„Ž‘
|
||
; DE - 11 ᨬ¢®«®¢ ¨¬¥¨ ä ©«
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_44:inc b
|
||
dec b ; b=0
|
||
jr z,A1FB8 ; ¯à¥®¡à. ¨¬ï 11 -> 8.3 ä®à¬ â
|
||
dec b ; b=1
|
||
jp z,A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; <20>८¡à §®¢ âì ¨¬ï 11 -> 8.3 ä®à¬ â
|
||
;
|
||
; ¢å®¤: hl=®âªã¤
|
||
; de=ªã¤
|
||
;-------------------------------------------------
|
||
A1FB8: ld bc,08FFh ; b=áç¥â稪
|
||
A1FBB: ld a,(hl)
|
||
cp " "
|
||
jr nz,A1FC5
|
||
inc hl
|
||
djnz $-1
|
||
jr A1FC9
|
||
;
|
||
A1FC5: ldi
|
||
djnz A1FBB
|
||
A1FC9: ld a,(hl)
|
||
cp " "
|
||
ld a,"."
|
||
jr nz,A1FD2
|
||
ld a,0
|
||
A1FD2: ld (de),a
|
||
inc de
|
||
ret z
|
||
ld b,3
|
||
A1FD7: ld a,(hl)
|
||
cp " "
|
||
ret z
|
||
ldi
|
||
xor a
|
||
ld (de),a
|
||
djnz A1FD7
|
||
ret
|
||
|
||
|
||
|
||
D1FE2: dw 0 ; ¤à¥á à ¡. ¡ãä¥à (f_first, f_next)
|
||
D1FE4: dw 0 ; ¤à¥á á«¥¤. § ¯¨á¨ (f_first, f_next)
|
||
D1FE6: db false ; ä« £ ®âà ¡®âª¨ "f_first"
|
||
D1FE7: db false ; ä« £ 8.3 ¨«¨ 11 ä®à¬ â ¨¬¥¨ (f_first, f_next)
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #19. <20>®¨áª ¯¥à¢®£® ᮢ¯ ¤ î饣® ä ©« .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨ ç¥ 46 ¡ ©â ;256 ¡ ©â
|
||
; A - âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
|
||
; B=0 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠11 ¡ ©â "FilenameExt"
|
||
; B=1 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
||
; ¢ë室: de'= ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ (¨á¯. #11 äãª.)
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;
|
||
; ä®à¬ â à ¡. ¡ãä¥à :
|
||
; +00 8 db "FILE????" ; è ¡«® ¨¬¥¨
|
||
; +08 3 db "???" ; è ¡«® à áè¨à¥¨ï
|
||
; +11 1 db 20h ; âਡãâë ¤«ï ¯®¨áª
|
||
; +12 10 ds 10 ; § १¥à¢¨à®¢ ®
|
||
; +22 2 dw 0000h ; ¢à¥¬ï á®§¤ ¨ï ä ©«
|
||
; +24 2 dw 0000h ; ¤ â á®§¤ ¨ï ä ©«
|
||
; +26 2 dw 0000h ; ®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
; +28 4 dw 0000h ; ¬«.à §àï¤ à §¬¥à ä ©« ¢ ¡ ©â å
|
||
; dw 0000h ; áâ.à §àï¤
|
||
; +32 1 db 20h ; âਡãâ ©¤¥®£® ä ©«
|
||
; +33 11 db "FILENAMEEXT" ; ¨¬ï ©¤¥®£® ä ©« (ª®¯¨ï ¨§ ª â «®£ )
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_19:ld (D1F3A),a ; âਡãâ ¯®¨áª
|
||
ld (D1FE2),de ; ¤à¥á à ¡. ¡ãä¥à
|
||
ld a,b
|
||
ld (D1FE7),a ; ä« £ 8.3 ¨«¨ 11 ä®à¬ â ¨¬¥¨
|
||
push hl ; ¨¬ï ä ©«
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ (â ª¦¥ 㪠§. ¢ áâப¥)
|
||
pop hl
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
ld a,(D1F3A) ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||
call search_record ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª
|
||
ret c ; § ¯¨áì ¥ ©¤¥ /᫨誮¬ ¬®£® ä ©«®¢
|
||
ld hl,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
ld de,(D1FE2) ; ¤à¥á à ¡. ¡ãä¥à
|
||
ld bc,11
|
||
ldir ; ¯¥à¥ª ç âì "???????.."
|
||
ld a,(D1F3A) ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||
ld (de),a ;+11 à ¡. ¡ãä¥à äãªæ¨¨
|
||
A201D: inc de
|
||
ld bc,32
|
||
add ix,bc
|
||
ld (D1FE4),ix ;; á«¥¤. § ¯¨áì
|
||
ld hl,T1F3B+12 ; ᬥé. ¢ § ¯¨á¨
|
||
ld bc,20
|
||
ldir
|
||
ld a,(T1F3B+11) ; ï祩ª âਡã⮢ ä ©«
|
||
ld (de),a ;+32 ¢ à ¡. ¡ãä¥à¥ äãªæ¨¨
|
||
inc de
|
||
ld hl,T1F3B ; ©¤¥ ï § ¯¨áì ä ©« /ª â «®£
|
||
ld a,(D1FE7) ; ä« £ 8.3 ¨«¨ 11 ä®à¬ â ¨¬¥¨
|
||
or a
|
||
jr nz,A2049 ; 11 -> 8.3
|
||
; ᪮¯¨à. ¨¬ï ©¤. ä ©« (ä®à¬ â 11)
|
||
ld bc,11
|
||
ldir
|
||
A2042: ld a,true
|
||
ld (D1FE6),a ; ä« £ ®âà ¡®âª¨ "F_FIRST"
|
||
xor a
|
||
ret
|
||
; ¯à¥®¡à. 11 -> 8.3 ä®à¬ â
|
||
A2049: call A1FB8
|
||
jr A2042
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1A. <20>®¨áª á«¥¤ãî饣® ᮢ¯ ¤ î饣® ä ©« .
|
||
;
|
||
; ¢å®¤: de = 㪠§ ⥫ì à ¡®ç¨© ¡ãä¥à
|
||
; ¢ë室: de'= ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ (¨á¯. #11 äãª.)
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_1A:ld a,(D1FE6) ; ä« £ ®âà ¡®âª¨ "F_FIRST"
|
||
or a
|
||
ld a,EUNOPER ; ª®¤ "¥¢®§¬®¦ ï ®¯¥à æ¨ï"
|
||
scf
|
||
ret z
|
||
ld (D1FE2),de ; ¤à¥á à ¡. ¡ãä¥à
|
||
ld hl,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
ex de,hl
|
||
ld bc,11
|
||
ldir
|
||
xor a
|
||
ld (D1FE6),a ; á¡à. ä« £ ®âà ¡®âª¨ "f_first"
|
||
ld a,(hl) ; ï祩ª âਡã⮢ § ¯¨á¨
|
||
push hl
|
||
call A207B ; ©â¨ á«¥¤. § ¯¨áì
|
||
pop de
|
||
ret c ; ¥ ©¤¥ ¨«¨ ᫨誮¬ ¬®£® ä ©«®¢
|
||
jr A201D ; ᪮¯¨à. ®áâ «ìë¥ 20 ¡ ©â § ¯¨á¨
|
||
|
||
|
||
|
||
; ¯®¨áª á«¥¤. § ¯¨á¨
|
||
A207B: ex af,af' ; á®åà. âਡãâë § ¯¨á¨
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ex af,af' ; ¢®ááâ. âਡãâë § ¯¨á¨
|
||
cpl
|
||
ld c,a
|
||
exx
|
||
ld de,0 ; á¡à. ¨¤¥ªá § ¯¨á¨ (¨á¯. #11 äãª.)
|
||
exx
|
||
ld ix,(D1FE4) ;; ¤à¥á á«¥¤. § ¯¨á¨
|
||
db 0DDh
|
||
ld a,h
|
||
db 0DDh
|
||
or l
|
||
jr z,search_record_too_many ; ¢ë諨 § £à ¨æã 0FFFFh
|
||
jr search_record_loop ; 横« ¯®¨áª § ¯¨á¨
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ª â «®£
|
||
;
|
||
; ¢å®¤: a= âਡãâ § ¯¨á¨
|
||
; ¢ë室: de'=¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£
|
||
; CF - ª â «®£ ¥ ©¤¥
|
||
;-------------------------------------------------
|
||
search_rec_dir:
|
||
ld a,10h ; âਡãâ "dir"
|
||
call search_record
|
||
ret nc
|
||
ld a,ENOPATH ; ª®¤ "¥¢¥àë© ¯ãâì"
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ª â «®£ .
|
||
;
|
||
; ¢å®¤: a= âਡãâ § ¯¨á¨
|
||
; ¢ë室: ix= ¤à¥á ©¤¥®© § ¯¨á¨
|
||
; de'=¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ (¤«ï #11 äãª.)
|
||
; CF - ¯à¨ ®è¨¡ª¥, A=ª®¤ ®è¨¡ª¨
|
||
;-------------------------------------------------
|
||
search_rec_file:
|
||
ld a,27h ; âਡãâ "¢á¥, ªà®¬¥ ¯ ¯ª¨ ¨ ¬¥âª¨ ⮬ "
|
||
search_record:
|
||
ex af,af' ; á®åà. âਡãâ § ¯¨á¨
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ex af,af' ; ¢®ááâ. âਡãâ § ¯¨á¨
|
||
cpl
|
||
ld c,a
|
||
ld ix,LC000 ; ªíè ᯨ᪠ª â «®£ ¤¨áª
|
||
exx
|
||
ld de,0 ; á¡à. ¨¤¥ªá § ¯¨á¨ (¨á¯. #11 äãª.)
|
||
exx
|
||
; 横« ¯®¨áª § ¯¨á¨
|
||
search_record_loop:
|
||
ld a,(ix+0)
|
||
or a
|
||
jr z,search_record_not_found
|
||
cp 0E5h ; ª®¤ 㤠«. § ¯¨á¨
|
||
jp z,search_record_next
|
||
ld a,(ix+11) ; âਡãâ § ¯¨á¨
|
||
and c ; ¨áª®¬ë© âਡãâ ?
|
||
jp nz,search_record_next ; ¥â
|
||
ld hl,T2364 ; £®â®¢®¥ ¨¬ï ä ©« (11 ᨬ¢. ä®à¬ â)
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ld b,11
|
||
ex de,hl
|
||
A20C9: ld a,(de)
|
||
cp "?"
|
||
jr z,A20D1
|
||
cp (hl)
|
||
jp nz,search_record_next
|
||
A20D1: inc hl
|
||
inc de
|
||
djnz A20C9
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ld hl,T1F3B ; 32 ¡ãä¥à § ¯¨á¨
|
||
ex de,hl
|
||
ld bc,32
|
||
ldir ; ᪮¯¨à. ©¤¥ãî § ¯¨áì ¢ ¡ãä¥à
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
;
|
||
search_record_next:
|
||
exx
|
||
inc de ; ++¨¤¥ªá § ¯¨á¨ (¨á¯. #11 äãª.)
|
||
exx
|
||
ld de,32
|
||
add ix,de ; á«¥¤. § ¯¨áì
|
||
jp nc,search_record_loop
|
||
; ¢ë室 § £à ¨æã 0FFFFh
|
||
search_record_too_many:
|
||
ld e,ETMFILE ; ª®¤ "᫨誮¬ ¬®£® ä ©«®¢"
|
||
jr $+4
|
||
search_record_not_found:
|
||
ld e,ENOFILE ; ª®¤ "ä ©« ¥ ®¡ à㦥"
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld a,e ; ª®¤ ®è¨¡ª¨
|
||
scf
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ’¥áâ ¤®¯ãá⨬®¥ ¨¬ï ¨ áâநâìáï ¤¨áª.
|
||
; ¢å®¤: hl=áâப ¨¬¥¨
|
||
;-------------------------------------------------
|
||
A20F8: ld de,D213A ; ªã¤
|
||
ld bc,0DFFh ; b=áç¥â稪
|
||
A20FE: ld a,(hl)
|
||
inc hl
|
||
cp '\'
|
||
jr z,A2114
|
||
cp ":"
|
||
jr z,A2122
|
||
ld (de),a
|
||
inc de
|
||
cp " "+1
|
||
ccf
|
||
ret nc
|
||
djnz A20FE
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret
|
||
;
|
||
A2114: ld a,0
|
||
ld (de),a
|
||
push hl
|
||
ld hl,D213A
|
||
call A2164
|
||
pop hl
|
||
jr nc,A20F8
|
||
ret
|
||
;
|
||
A2122: ld a,(D213A) ; ¡ãª¢ ¤¨áª
|
||
cp "a"
|
||
jr c,A212F
|
||
cp "z"+1
|
||
jr nc,A212F
|
||
sub 20h
|
||
A212F: sub "A"
|
||
push hl
|
||
call A2147
|
||
pop hl
|
||
jr nc,A20F8
|
||
ret
|
||
|
||
|
||
; <20>ãä¥à ¨¬¥¨ 8.3 ä®à¬ â
|
||
D213A: db " ",0 ; 12 ¯à®¡¥«®¢
|
||
|
||
|
||
|
||
A2147: push af ; ®¬¥à ¤¥¢ ©á
|
||
ld c,1 ; ®âªàëâì ¤¥¢ ©á
|
||
rst 18h
|
||
pop bc
|
||
jr c,A215C ; ®è¨¡ª
|
||
ld a,b
|
||
ld (disk),a ; ®¬¥à ¤¨áª
|
||
call A1370
|
||
ret c
|
||
ld a,(last_drive) ; ®¬¥à ¯®á«. ¤¨áª
|
||
and a
|
||
ret
|
||
;
|
||
A215C: cp EINVDRV ; ª®¤ "bad drive number"
|
||
scf
|
||
ret z
|
||
ld a,ENORDY ; ª®¤ "¥â £®â®¢®áâ¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
A2164: xor a ; ®¬¥à ¤¥áªà.
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ld a,(hl) ; 8.3 ¨¬ï
|
||
or a
|
||
jr nz,A2183
|
||
A216D: ld de,0
|
||
ld (iy+26),e
|
||
ld (iy+27),d
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
ld hl,T1510 ; ¡ãä¥à ⥪. ¯ã⨠(ª â «®£ ) á¨á⥬ë
|
||
ld (hl),'\'
|
||
inc hl
|
||
ld (hl),0
|
||
and a
|
||
ret
|
||
;
|
||
A2183: cp "."
|
||
jr nz,A21AF
|
||
ld a,(iy+26)
|
||
or (iy+27)
|
||
jr nz,A2195
|
||
inc hl
|
||
ld a,(hl)
|
||
or a
|
||
dec hl
|
||
jr z,A216D
|
||
A2195: exx
|
||
ld hl,T2364
|
||
ld de,T2364+1
|
||
ld bc,10
|
||
ld (hl)," "
|
||
ldir
|
||
exx
|
||
ld de,T2364
|
||
A21A7: ldi
|
||
ld a,(hl)
|
||
or a
|
||
jr nz,A21A7
|
||
jr A21B6
|
||
;
|
||
A21AF: ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
A21B6: call A21DC
|
||
ret c
|
||
ld (iy+26),e
|
||
ld (iy+27),d
|
||
ld de,L4000
|
||
ld (iy+28),e
|
||
ld (iy+29),d
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
A21CE: ld bc,32
|
||
add ix,bc ; á«¥¤. § ¯¨áì
|
||
jr nc,A21E6
|
||
; ¯à¥¢ë襨¥ £à ¨æë #FFFF
|
||
A21D5: pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ld a,ENOPATH ; ª®¤ "¥¢¥àë© ¯ãâì"
|
||
scf
|
||
ret
|
||
;
|
||
A21DC: xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld ix,LC000 ; ª¥è ᯨ᪠ª â «®£
|
||
A21E6: ld a,(ix+0)
|
||
or a
|
||
jr z,A21D5 ; ᯨ᮪ ¯ãá⮩
|
||
cp 0E5h
|
||
jr z,A21CE ; ä ©« 㤠«¥
|
||
ld a,(ix+11) ; ï祩ª âਡã⮢
|
||
and 10h ; ª â «®£ ?
|
||
jr z,A21CE ; ¥â, á«¥¤. § ¯¨áì
|
||
; ª â «®£
|
||
ld hl,T2364
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ex de,hl
|
||
ld b,11
|
||
A2201: ld a,(de)
|
||
cp "?"
|
||
jr z,A2209
|
||
cp (hl)
|
||
jr nz,A21CE ; á«¥¤. § ¯¨áì
|
||
A2209: inc hl
|
||
inc de
|
||
djnz A2201
|
||
ld a,(ix+0)
|
||
cp "."
|
||
jr nz,A2245
|
||
ld a,(ix+1)
|
||
cp "."
|
||
jr nz,A223A
|
||
; த¨â. ª â «®£
|
||
ld hl,T1510 ; ¡ãä¥à ⥪. ¯ã⨠(ª â «®£ ) á¨á⥬ë
|
||
ld d,h
|
||
ld e,l
|
||
ld bc,256
|
||
xor a
|
||
cpir
|
||
ld bc,256
|
||
ld a,'\'
|
||
cpdr
|
||
inc hl
|
||
and a
|
||
ex de,hl
|
||
sbc hl,de
|
||
ex de,hl
|
||
jr nz,A2238
|
||
inc hl
|
||
A2238: ld (hl),0
|
||
A223A: ld e,(ix+26)
|
||
ld d,(ix+27)
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
;
|
||
A2245: db 0DDh
|
||
ld e,l
|
||
db 0DDh
|
||
ld d,h
|
||
ld hl,T1510 ; ¡ãä¥à ⥪. ¯ã⨠(ª â «®£ ) á¨á⥬ë
|
||
ld bc,255
|
||
xor a
|
||
cpir
|
||
dec hl
|
||
dec hl
|
||
ld a,'\'
|
||
cp (hl)
|
||
inc hl
|
||
jr z,$+4
|
||
ld (hl),a
|
||
inc hl
|
||
ld bc,0820h ; b=áç¥â稪, c=¯à®¡¥«
|
||
A225F: ld a,(de)
|
||
inc de
|
||
cp c
|
||
jr z,A2266
|
||
ld (hl),a
|
||
inc hl
|
||
A2266: djnz A225F
|
||
ld a,(de)
|
||
inc de
|
||
cp c
|
||
jr z,A227F
|
||
ld (hl),"."
|
||
inc hl
|
||
ld (hl),a
|
||
inc hl
|
||
ld a,(de)
|
||
inc de
|
||
cp c
|
||
jr z,A227F
|
||
ld (hl),a
|
||
inc hl
|
||
ld a,(de)
|
||
cp c
|
||
jr z,A227F
|
||
ld (hl),a
|
||
inc hl
|
||
A227F: ;ld (hl),'\' ; ; ª®æ®¢ª ¯ãâ¨
|
||
;inc hl;
|
||
ld (hl),0
|
||
jr A223A
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1E. ˆä®à¬ æ¨ï ® ⥪ã饬 ª â «®£¥.
|
||
;
|
||
; ¢å®¤: HL - ¡ãä¥à ¢ ¯ ¬ï⨠256 ¡ ©â
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_1E:ex de,hl ; de=ªã¤
|
||
ld hl,T1510 ; ®âªã¤ ; DIRSPEC
|
||
ld a,(hl)
|
||
or a
|
||
ldi
|
||
jr nz,$-4
|
||
ret
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>à®ç¨â âì ᯨ᮪ ª â «®£
|
||
;-------------------------------------------------
|
||
A228F: xor a
|
||
ld l,a
|
||
ld h,a
|
||
push hl
|
||
pop ix
|
||
ld b,a ; ®â ç « ä ©«
|
||
call Func_15 ; ¯¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
; ®ç¨áâ¨âì ª¥è ª â «®£
|
||
/* ld hl,LC000 ;@@
|
||
ld de,LC000+1
|
||
ld bc,4000h-1
|
||
ld (hl),l
|
||
ldir ; 21 * #3FFF = 344.043
|
||
*/ ld (.stack),sp ; á®åà. á⥪
|
||
ld de,0 ; ¡ ©âë § ¯®«¥¨ï
|
||
ld bc,400h / 2
|
||
ld sp,0000h ; ®âªã¤ (¢¨§)
|
||
.loop: push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
push de
|
||
dec bc
|
||
ld a,c
|
||
or b
|
||
jp nz,.loop
|
||
db 31h ; ld sp,..
|
||
.stack: dw 0
|
||
;
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld (iy+40),a ; á®åà. ¢ ¤¥áªà¨¯â®à
|
||
ld d,(iy+26) ; de=®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
ld e,(iy+27)
|
||
ld a,d
|
||
or e
|
||
jr z,A22D2 ; root ??
|
||
ld hl,LC000 ; ªã¤
|
||
ld de,4000h ; ᪮«ìª®
|
||
xor a ; ¤¥áªà¨¯â®à
|
||
call Func_13 ; ç⥨¥ ¨§ ä ©«
|
||
ld (size_cash_directory),de ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
;
|
||
A22D2: ld hl,(D1500) ; áâ. à §àï¤
|
||
ld ix,(D1502) ; ®¬¥à «®£. ᥪâ®à
|
||
ld a,(D1505)
|
||
ld b,32 ; à §¬¥à root-ª â «®£
|
||
sub b
|
||
jr nc,A22E3
|
||
add a,b
|
||
ld b,a ; ç¨á«® ᥪâ®à®¢
|
||
A22E3: ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,5 ; ç⥨¥ ᥪâ®à®¢
|
||
ld de,LC000 ; ¡ãä¥à
|
||
rst 18h
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||
;-------------------------------------------------
|
||
flush_cash_dir:
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
push hl ; áâ. à §àï¤
|
||
pop ix ; ¬«. à §àï¤
|
||
ld b,a ; ®â ç « ä ©«
|
||
call Func_15 ; ¯¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld (iy+40),a ; á®åà. ¢ ¤¥áªà¨¯â®à¥
|
||
ld d,(iy+26) ; de=®¬¥à ¯¥à¢®£® ª« áâ¥à
|
||
ld e,(iy+27)
|
||
ld a,d
|
||
or e
|
||
jr z,A2325 ; root ??
|
||
ld hl,LC000 ; ®âªã¤
|
||
ld de,(size_cash_directory) ; ᪮«ìª®
|
||
xor a ; ¤¥áªà.
|
||
call Func_14 ; § ¯¨áì ¢ ä ©«
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
;
|
||
A2325: ld hl,(D1500) ; áâ. à §àï¤
|
||
ld ix,(D1502) ; «®£. ®¬¥à ᥪâ®à
|
||
ld a,(D1505)
|
||
ld b,32 ; ¬ ªá. ç¨á«® ᥪâ®à®¢ ?
|
||
sub b
|
||
jr nc,$+4
|
||
add a,b
|
||
ld b,a ; ç¨á«® ᥪâ®à®¢
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
ld de,LC000 ; ¡ãä¥à
|
||
rst 18h
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
|
||
|
||
size_cash_directory:
|
||
dw 0 ; à §¬¥à ᯨ᪠ª â «®£
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; <20>®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘ ¢ 3-¥ ®ª®
|
||
;
|
||
; ¢å®¤: a=«®£. ®¬¥à ¡ ª¨ (0..2, ¢ ¤ ®© ¢¥àᨨ „Ž‘)
|
||
; ¢ë室: a=áâ à ï ¡ ª ¯®àâ
|
||
;-----------------------------------------------------------
|
||
set_dos_page:
|
||
ld c,a
|
||
ld b,0
|
||
ld hl,list_dos_pages ; 16 ¡ ©â, ®¬¥à ¡ ®ª à áè¨à¥¨ï „Ž‘
|
||
add hl,bc
|
||
in a,(0E2h) ; á®åà. ¯®àâ
|
||
ld c,0E2h ; ¯®àâ
|
||
outi ; ®¤¨ ¡ ©â (hl) -> ¯®àâ (bc)
|
||
ret
|
||
|
||
|
||
; Œ áᨢ «®£. ®¬¥à®¢ ¡ ®ª à áè¨à¥¨ï „Ž‘. 16 ¡ ©â.
|
||
list_dos_pages:
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
db -1
|
||
|
||
|
||
|
||
; <20>ãä¥à 11 ᨬ¢. ¨¬¥¨ (¯¥à¢ë¥ 11 ¡ ©â)
|
||
T2364: ds 8 ; ¨¬ï ä ©«
|
||
T236C: ds 3 ; à áè.
|
||
;
|
||
ds 21 ; 11+21=32
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>८¡à §®¢ âì ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
; ¢å®¤: hl = 8.3 ¨¬ï
|
||
; de = ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
; ¯à¨ ®è¨¡ª¥ CF - ¥¤®¯. ¨¬ï
|
||
;-------------------------------------------------
|
||
A2384: push hl
|
||
push de
|
||
ld h,d
|
||
ld l,e
|
||
inc de
|
||
ld (hl)," "
|
||
ld bc,10
|
||
ldir
|
||
pop de
|
||
pop hl
|
||
ld a,(hl)
|
||
cp "."
|
||
scf
|
||
jr z,A239A
|
||
cp " "+1
|
||
A239A: ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
ret c
|
||
ld bc,0902h ; b=áç¥â稪
|
||
A23A0: ld a,(hl)
|
||
cp " "+1
|
||
ccf
|
||
ret nc
|
||
cp '"'
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp "*"
|
||
jr z,A23ED
|
||
cp "+"
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp ","
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp "."
|
||
jr z,A23FE
|
||
cp "/"
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp ":"
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp ";"
|
||
jr z,A23E9 ; ®è¨¡ª
|
||
cp "<"
|
||
jr z,A23E9
|
||
cp "="
|
||
jr z,A23E9
|
||
cp ">"
|
||
jr z,A23E9
|
||
cp "["
|
||
jr z,A23E9
|
||
cp '\'
|
||
jr z,A23E9
|
||
cp "]"
|
||
jr z,A23E9
|
||
cp "|"
|
||
jr z,A23E9
|
||
call upper ; a..z -> A..Z
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
djnz A23A0
|
||
A23E9: ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret
|
||
;
|
||
A23ED: ld a,"?"
|
||
inc hl
|
||
djnz A23F6
|
||
jr A23E9
|
||
;
|
||
A23F6: ld (de),a
|
||
inc de
|
||
djnz A23F6
|
||
ld b,1
|
||
jr A23A0
|
||
|
||
A23FE: ld a," "
|
||
inc hl
|
||
djnz A240D
|
||
A2403: ld b,4
|
||
dec c
|
||
jr nz,A23A0
|
||
jr A23E9 ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
;
|
||
A240D: ld (de),a
|
||
inc de
|
||
djnz A240D
|
||
jr A2403
|
||
|
||
|
||
|
||
; a..z -> A..Z
|
||
upper: cp "a"
|
||
ret c
|
||
cp "z"+1
|
||
jr nc,A2425
|
||
sub 20h
|
||
ret
|
||
;
|
||
A2425: cp " " ; àãá᪠ï
|
||
ret c
|
||
cp "¯"+1
|
||
jr nc,A2430
|
||
sub 20h
|
||
ret
|
||
;
|
||
A2430: cp "à" ; àãá᪠ï
|
||
ret c
|
||
cp "ð"
|
||
jr nc,A243B
|
||
sub 50h
|
||
ret
|
||
;
|
||
A243B: cp "ñ"
|
||
ret nz
|
||
dec a ; ñ -> ð
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #21. ’¥ªãé ï ¤ â ¨ ¢à¥¬ï.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: D - ¤¥ì
|
||
; E - ¬¥áïæ
|
||
; IX - £®¤
|
||
; H - ç á
|
||
; L - ¬¨ãâë
|
||
; B - ᥪã¤ë
|
||
; C - ¤¥ì ¥¤¥«¨
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_21:ld c,0F5h
|
||
rst 08h
|
||
jp c,A24D0
|
||
ld d,7 ; ®¬¥à ॣ¨áâà
|
||
call A24BB ; ç⥨¥ ॣ¨áâ஢ CMOS
|
||
push af
|
||
ld d,8
|
||
call A24BB
|
||
pop de
|
||
ld e,a
|
||
push de
|
||
ld d,4
|
||
call A24BB
|
||
push af
|
||
ld d,2
|
||
call A24BB
|
||
pop de
|
||
ld e,a
|
||
push de
|
||
ld d,0
|
||
call A24BB
|
||
push af
|
||
ld d,6
|
||
ld c,0F6h
|
||
rst 08h
|
||
pop de
|
||
ld e,a
|
||
push de
|
||
ld d,9
|
||
call A24BB
|
||
push af
|
||
ld d,32h
|
||
ld c,0F6h
|
||
rst 08h
|
||
db 0DDh
|
||
ld h,a
|
||
pop af
|
||
cp 80 ;50h
|
||
push af
|
||
jr c,A248B
|
||
ld a,19h
|
||
db 0DDh
|
||
cp h
|
||
jr z,A249A
|
||
jr A2491
|
||
;
|
||
A248B: ld a,20h
|
||
db 0DDh
|
||
cp h
|
||
jr z,A249A
|
||
A2491: push af
|
||
ld d,32h
|
||
ld c,0F7h
|
||
rst 08h
|
||
pop af
|
||
db 0DDh
|
||
ld h,a
|
||
A249A: pop af
|
||
db 0DDh
|
||
ld l,a
|
||
db 0DDh
|
||
ld a,h
|
||
call A24BE
|
||
ld l,a
|
||
ld h,0
|
||
ld c,l
|
||
ld b,h
|
||
db 0DDh
|
||
ld h,b
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,bc
|
||
add hl,hl
|
||
ld b,h
|
||
ld c,l
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,bc
|
||
add hl,hl
|
||
ex de,hl
|
||
add ix,de
|
||
pop bc
|
||
pop hl
|
||
pop de
|
||
and a
|
||
ret
|
||
|
||
|
||
; —⥨¥ ॣ¨áâ஢ CMOS
|
||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||
A24BB: ld c,0F6h
|
||
rst 08h
|
||
A24BE: ld e,a
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
and 0Fh
|
||
ld d,a
|
||
add a,a
|
||
add a,a
|
||
add a,d
|
||
add a,a
|
||
ld d,a
|
||
ld a,e
|
||
and 0Fh
|
||
add a,d
|
||
ret
|
||
|
||
|
||
A24D0: ld de,(D255D)
|
||
ld hl,(D255F)
|
||
ld bc,(D2561)
|
||
ld ix,(D2563)
|
||
and a
|
||
ret
|
||
|
||
|
||
A24E1: ld c,0
|
||
ld (D255D),de
|
||
ld (D255F),hl
|
||
ld (D2561),bc
|
||
ld (D2563),ix
|
||
and a
|
||
ret
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #22. “áâ ®¢¨âì ⥪ãéãî ¤ âã ¨ ¢à¥¬ï.
|
||
;
|
||
; ¢å®¤: D - ¤¥ì
|
||
; E - ¬¥áïæ
|
||
; IX - £®¤
|
||
; H - ç á
|
||
; L - ¬¨ãâë
|
||
; B - ᥪã¤ë
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_22:push ix
|
||
push bc
|
||
push hl
|
||
push de
|
||
ld c,0F5h
|
||
rst 08h
|
||
jr c,A24E1
|
||
pop af
|
||
push af
|
||
ld d,7 ; ®¬¥à ॣ¨áâà
|
||
call A2544 ; § ¯¨áì ॣ¨áâ஢ CMOS
|
||
pop bc
|
||
ld a,c
|
||
ld d,8
|
||
call A2544
|
||
pop af
|
||
push af
|
||
ld d,4
|
||
call A2544
|
||
pop bc
|
||
ld a,c
|
||
ld d,2
|
||
call A2544
|
||
pop af
|
||
push af
|
||
ld d,0
|
||
call A2544
|
||
pop bc
|
||
ld a,c
|
||
ld d,6
|
||
ld c,0F7h
|
||
rst 08h
|
||
pop hl
|
||
xor a
|
||
ld de,100
|
||
A252E: inc a
|
||
sbc hl,de
|
||
jr nc,A252E
|
||
add hl,de
|
||
dec a
|
||
push hl
|
||
ld d,32h
|
||
call A2544
|
||
pop bc
|
||
ld a,c
|
||
ld d,9
|
||
call A2544
|
||
and a
|
||
ret
|
||
|
||
|
||
; ‡ ¯¨áì ॣ¨áâ஢ CMOS
|
||
; ¢å®¤: d=®¬¥à ॣ¨áâà
|
||
A2544: call A254B
|
||
ld c,0F7h
|
||
rst 08h
|
||
ret
|
||
;
|
||
A254B: ld bc,0AFFh ; ª®áâ â
|
||
A254E: inc c
|
||
sub b
|
||
jr nc,A254E
|
||
add a,b
|
||
ld b,a
|
||
ld a,c
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
and 0F0h
|
||
or b
|
||
ret
|
||
|
||
|
||
; „ â ¯®-㬮«ç ¨î
|
||
D255D: dw 0101h ; ¤¥ì:¬¥áïæ
|
||
D255F: dw 0000h ; ç áë:¬¨ãâë
|
||
D2561: dw 0001h ; 00h=ᥪã¤ë
|
||
D2563: dw 2005 ; £®¤
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #17. ˆä®à¬ æ¨ï ® ¤ ⥠¨ ¢à¥¬¥¨ ä ©« .
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©«
|
||
; ¢ë室: D - ¤¥ì
|
||
; E - ¬¥áïæ
|
||
; IX - £®¤
|
||
; H - ç á
|
||
; L - ¬¨ãâë
|
||
; B - ᥪã¤ë
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_17:call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
ret c ; ¥ ©¤¥
|
||
; ¢à¥¬ï/¤ âã ¨§ áâàãªâãàë ¤¥áªà.
|
||
ld e,(iy+22) ; ¢à¥¬ï
|
||
ld d,(iy+23) ;
|
||
ld c,(iy+24) ; ¤ â
|
||
ld b,(iy+25) ;
|
||
call A25C3 ; à ᪮¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #18. ˆ§¬¥¥¨¥ ¤ âë ¨ ¢à¥¬¥¨ ä ©« .
|
||
;
|
||
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©«
|
||
; D - ¤¥ì
|
||
; E - ¬¥áïæ
|
||
; IX - £®¤
|
||
; H - ç á
|
||
; L - ¬¨ãâë
|
||
; B - ᥪã¤ë
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_18:push af
|
||
call A2599 ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
pop af ; ¤¥áªà¨¯â®à
|
||
push de
|
||
push bc
|
||
call search_handle ; ¯®¨áª ¤¥áªà. ä ©«
|
||
pop bc
|
||
pop de
|
||
ret c ; ¥ ©¤¥
|
||
; ¢à¥¬ï/¤ âã ¢ áâàãªâãàã ¤¥áªà.
|
||
ld (iy+22),e ; ¢à¥¬ï
|
||
ld (iy+23),d ;
|
||
ld (iy+24),c ; ¤ â
|
||
ld (iy+25),b ;
|
||
set 7,(iy+41) ; ãáâ. ¯à¨§ ª ¨§¬¥¥¨ï ä ©«
|
||
and a
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; ‡ ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
; ¢å®¤: de - ¤¥ì/¬¥áïæ
|
||
; hl - ç áë/¬¨ãâë
|
||
; b - ᥪã¤ë
|
||
; ix - £®¤
|
||
; ¢ë室: de - ¢à¥¬ï
|
||
; bc - ¬¥áïæ/¤¥ì
|
||
; ix - £®¤
|
||
;-------------------------------------------------
|
||
A2599: ld a,l
|
||
rlca
|
||
rlca
|
||
sla a
|
||
rl h
|
||
sla a
|
||
rl h
|
||
sla a
|
||
rl h
|
||
srl b
|
||
or b
|
||
ld l,a
|
||
ld bc,-1980
|
||
add ix,bc
|
||
ld a,e
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
and 0F0h
|
||
db 0DDh
|
||
ld b,l
|
||
sla a
|
||
rl b
|
||
or d
|
||
ld c,a
|
||
ex de,hl
|
||
and a
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20> ᪮¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
; ¢å®¤: de - ¢à¥¬ï
|
||
; bc - ¬¥áïæ/¤¥ì
|
||
; ix - £®¤
|
||
; ¢ë室: de - ¤¥ì/¬¥áïæ
|
||
; hl - ç áë/¬¨ãâë
|
||
; b - ᥪã¤ë
|
||
; ix - £®¤
|
||
;-------------------------------------------------
|
||
A25C3: ex de,hl
|
||
ld a,c
|
||
and 1Fh
|
||
ld d,a
|
||
srl b
|
||
rr c
|
||
ld a,c
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
and 0Fh
|
||
ld e,a
|
||
ld c,b
|
||
ld b,0
|
||
ld ix,1980
|
||
add ix,bc
|
||
ld a,l
|
||
and 1Fh
|
||
add a,a
|
||
ld b,a
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
srl h
|
||
rr l
|
||
srl l
|
||
srl l
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1D. ‘¬¥ ⥪ã饣® ª â «®£ .
|
||
; Œ¥ï¥â ⥪ã騩 ª â «®£ ¨ ⥪ã騩 ¤¨áª, ¥á«¨ ® 㪠§ ¢ ä ©«®¢®©
|
||
; ᯥæ¨ä¨ª 樨. …᫨ ¯ãâì ç¨ ¥âáï á "\" - íâ® ®§ ç ¥â ¯ãâì ®â
|
||
; ª®à¥¢®£® ª â «®£ , ¨ ç¥ ®â ⥪ã饣®.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ª â «®£
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_1D:call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A
|
||
ld a,(hl)
|
||
or a
|
||
call nz,A2164
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1B. ‘®§¤ ¨¥ ª â «®£ .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ª â «®£
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_1B:call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
call search_rec_dir ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
||
ld a,EEXISDIR ; ª®¤ "ª â «®£ áãé¥áâ¢ã¥â"
|
||
ccf
|
||
ret c ; ª â «®£ ©¤¥
|
||
call A10FD
|
||
ret c
|
||
push hl
|
||
ld de,(D150E) ; ®¬¥à ª« áâ¥à
|
||
call A11C4 ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
call A128B ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
ld hl,T2364
|
||
ld de,T1F3B
|
||
ld bc,11
|
||
ldir
|
||
ex de,hl
|
||
ld a,10h ; âਡãâ § ¯¨á¨ ª â «®£
|
||
ld (hl),a
|
||
inc hl
|
||
ld bc,0A00h ; b=áç¥â稪
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-2
|
||
push hl
|
||
call Func_21 ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||
call A2599 ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
pop hl
|
||
ld (hl),e ; de=¢à¥¬ï
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ld (hl),c ; ¤¥ì
|
||
inc hl
|
||
ld (hl),b ; ¬¥áïæ
|
||
inc hl
|
||
pop de
|
||
push de
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
ld bc,0400h ; b=áç¥â稪
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-2
|
||
call A1F5B ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||
call flush_cash_dir ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
ld hl,T0400 ; ¡ãä¥à
|
||
ld (hl),"." ; § ¯¨áì ⥪. ª â «®£
|
||
ld bc,0A20h ; b=áç¥â稪, c=¯à®¡¥«
|
||
inc hl
|
||
ld (hl),c
|
||
djnz $-2
|
||
inc hl
|
||
ld de,T1F3B+11 ; ï祩ª âਡã⮢ ä ©«
|
||
ex de,hl
|
||
ld bc,21
|
||
ldir
|
||
ex de,hl
|
||
ld (hl),"." ; § ¯¨áì த¨â. ª â «®£
|
||
inc hl
|
||
ld (hl),"."
|
||
ld bc,0920h ; b=áç¥â稪, c=¯à®¡¥«
|
||
inc hl
|
||
ld (hl),c
|
||
djnz $-2
|
||
inc hl
|
||
push hl
|
||
xor a ; «®£. ®¬¥à áâà. (ªíè ᯨ᪠ª â «®£ )
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
pop hl
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld a,(LC000)
|
||
cp "."
|
||
ld de,LC000+11 ; âਡãâë § ¯¨á¨
|
||
jr z,A26A9
|
||
ld ix,T1F3B
|
||
xor a
|
||
ld (ix+26),a
|
||
ld (ix+27),a
|
||
ld de,T1F3B+11 ; ï祩ª âਡã⮢ ä ©«
|
||
A26A9: ex de,hl
|
||
ld bc,21
|
||
ldir
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ex de,hl
|
||
ld d,h
|
||
ld e,l
|
||
inc de
|
||
ld (hl),0
|
||
ld bc,447
|
||
ldir
|
||
pop hl
|
||
call A1CB8
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
A26C4: push af
|
||
push hl ; áâ. à §àï¤
|
||
push ix ; ®¬¥à «®£. ᥪâ®à
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
ld de,LC400 ; ¡ãä¥à
|
||
ld b,1 ; ç¨á«® ᥪâ®à®¢
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,6 ; § ¯¨áì ᥪâ®à®¢
|
||
rst 18h
|
||
pop af
|
||
out (0E2h),a
|
||
ld hl,T0400 ; ®âªã¤
|
||
ld de,T0400+1 ; ªã¤
|
||
ld bc,512-1
|
||
ld (hl),0
|
||
ldir
|
||
pop ix
|
||
pop hl
|
||
inc ix
|
||
db 0DDh
|
||
ld a,h
|
||
db 0DDh
|
||
or l
|
||
jr nz,$+3
|
||
inc hl
|
||
pop af
|
||
dec a
|
||
jr nz,A26C4
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
||
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ª â «®£
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_1C:call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
ld hl,T2364
|
||
ld bc,11
|
||
ld a,"?"
|
||
cpir
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret z
|
||
call A228F ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
call search_rec_dir ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
||
ret c ; ¥ ©¤¥
|
||
ld hl,(D1F55)
|
||
push ix
|
||
A2724: push hl
|
||
call A1CB8
|
||
ld a,(D0083) ; ᥪâ®à®¢ ª« áâ¥à
|
||
A272B: push af
|
||
push hl ; áâ. à §àï¤
|
||
push ix ; ®¬¥à «®£. ᥪâ®à
|
||
in a,(0E2h)
|
||
push af
|
||
in a,(82h)
|
||
out (0E2h),a
|
||
ld de,LC400 ; ¡ãä¥à
|
||
ld bc,0105h ; ç⥨¥ ®¤®£® ᥪâ®à
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
rst 18h
|
||
pop af
|
||
out (0E2h),a
|
||
ld b,16
|
||
ld hl,T0400
|
||
A2748: ld a,(hl)
|
||
or a
|
||
jr z,A2783
|
||
cp "."
|
||
jr z,A2761
|
||
cp 0E5h ; ¡ ©â 㤠«¥¨ï ä ©«
|
||
jr z,A2761
|
||
ld de,11 ; ᬥé. ¤® ¡ ©â âਡã⮢
|
||
add hl,de
|
||
ld a,(hl)
|
||
sbc hl,de
|
||
;bit 3,a ;@@ ¡¨â "¬¥âª ⮬ "
|
||
and 00001000b ; 7 ⠪⮢
|
||
jr z,A278A
|
||
A2761: ld de,32
|
||
add hl,de
|
||
djnz A2748
|
||
pop ix
|
||
pop hl
|
||
inc ix
|
||
db 0DDh
|
||
ld a,h
|
||
db 0DDh
|
||
or l
|
||
jr nz,$+3
|
||
inc hl
|
||
pop af
|
||
dec a
|
||
jr nz,A272B
|
||
pop hl ; ®¬¥à ª« áâ¥à
|
||
call A1132 ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||
ex de,hl ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||
jr nc,A2724 ; ¥ ª®¥æ 楯®çª¨
|
||
A277E: pop ix
|
||
jp mark_delete ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
||
;
|
||
A2783: pop ix
|
||
pop hl
|
||
pop af
|
||
pop hl
|
||
jr A277E
|
||
;
|
||
A278A: pop ix
|
||
pop hl
|
||
pop af
|
||
pop hl
|
||
pop ix
|
||
ld a,ENOEMPTY ; ª®¤ "ª â «®£ ¥ ¯ãáâ"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
|
||
D2795: dw 0
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #47. <20>®«ã票¥ ¨ä®à¬ 樨 ¯à¨«®¦¥¨ï.
|
||
;
|
||
; ¢å®¤: HL - ¡ãä¥à ¤ ëå
|
||
; B - ®¬¥à ¯®¤äãªæ¨¨:
|
||
; B=0 - ¯®«ã票¥ ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨
|
||
; B=1 - ¯®«ã票¥ ¯®«®£® ¯ã⨠ª ª â «®£ã ¯à®£à ¬¬ë
|
||
; B=2 - ¯®«ã票¥ ¯®«®£® ¯ã⨠¨ ¨¬¥¨ ä ©« ¯à®£à ¬¬ë
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_47: inc b
|
||
djnz A27A8
|
||
ex de,hl
|
||
xor a
|
||
ld (de),a
|
||
ld hl,(D2795)
|
||
ld c,(hl)
|
||
inc c
|
||
ret z
|
||
inc hl
|
||
ldir
|
||
and a
|
||
ret
|
||
|
||
; <20>®«ã票¥ ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨
|
||
A27A8: djnz A27CF
|
||
ex de,hl
|
||
ld hl,(D2795)
|
||
ld c,(hl)
|
||
inc hl
|
||
add hl,bc
|
||
inc hl
|
||
inc hl
|
||
push hl
|
||
ld bc,256
|
||
xor a
|
||
cpir
|
||
ld a,'\'
|
||
cpdr
|
||
inc hl
|
||
inc hl
|
||
pop bc
|
||
and a
|
||
sbc hl,bc
|
||
ld a,b
|
||
ld b,h
|
||
ld h,a
|
||
ld a,c
|
||
ld c,l
|
||
ld l,a
|
||
ldir
|
||
xor a
|
||
ld (de),a
|
||
ret
|
||
|
||
; <20>®«ã票¥ ¯®«®£® ¯ã⨠ª ª â «®£ã ¯à®£à ¬¬ë
|
||
A27CF: djnz A27E1
|
||
ex de,hl
|
||
ld hl,(D2795)
|
||
ld c,(hl)
|
||
inc hl
|
||
add hl,bc
|
||
inc hl
|
||
inc hl
|
||
A27DA: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,A27DA
|
||
ret
|
||
;
|
||
A27E1: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #45. <20> §¡®à ª®¬ ¤®© áâப¨.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ª®¬ ¤®© áâப¨
|
||
; DE - 㪠§ â¥«ì ¡ãä¥à ¯®«ì§®¢ ⥫ï
|
||
; B - ®¬¥à ¯®¤äãªæ¨¨:
|
||
; 0 - <20> §®¡à âì áâபã
|
||
; 1 - ‚뤥«¨âì ¨¬ï ¤¨áª
|
||
; 2 - ‚뤥«¨âì ¤¨à¥ªâ®à¨î
|
||
; 3 - ‚뤥«¨âì ¨¬ï ä ©«
|
||
; 4 - ‚뤥«¨âì à áè¨à¥¨¥ ä ©«
|
||
; 5 - ‚뤥«¨âì ¨¬ï ¤¨áª , ¯ãâì ª ä ©«ã, ¨¬ï ä ©« ¨ à áè. ä ©«
|
||
; 6 - ‡ १¥à¢¨à®¢ ®
|
||
; 7 - ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ¤®© áâப¨
|
||
; 8 - <20>८¡à §®¢ âì ¨§ 11 ᨬ¢®«ì®£® ä®à¬ â ¢ ä®à¬ â „Ž‘
|
||
; 9 - <20>८¡à §®¢ âì ¨§ ä®à¬ â „Ž‘ ¢ 11 ᨬ¢®«ìë© ä®à¬ â
|
||
; ¢ë室: ¥â
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_45:exx
|
||
ld hl,T0400
|
||
ld (D2947),hl
|
||
ld hl,T2952
|
||
ld (D2943),hl
|
||
ld hl,T295F
|
||
ld (D2945),hl
|
||
ld hl,T2949
|
||
ld (D2941),hl
|
||
exx
|
||
inc b
|
||
dec b
|
||
jr z,A2857 ; à §®¡à âì áâபã
|
||
dec b
|
||
jr z,A2825 ; ¢ë¤¥«¨âì ¨¬ï ¤¨áª
|
||
dec b
|
||
jr z,A2845 ; ¢ë¤¥«¨âì ¤¨à¥ªâ®à¨î
|
||
dec b
|
||
jr z,A284B ; ¢ë¤¥«¨âì ¨¬ï ä ©«
|
||
dec b
|
||
jr z,A2851 ; ¢ë¤¥«¨âì à áè¨à¥¨¥ ä ©«
|
||
dec b
|
||
jr z,A2859 ; ¢ë¤¥«¨âì ¤¨áª, ¯ãâì, ä ©« ¨ à áè.
|
||
dec b ; § १¥à¢¨à®¢ ®
|
||
jr z,A2821
|
||
dec b
|
||
jp z,Func_43 ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||
dec b
|
||
jp z,A1FB8 ; ¯à¥®¡à. ¨¬ï 11 -> 8.3 ä®à¬ â
|
||
dec b
|
||
jp z,A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
A2821: ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
; ‚뤥«¨âì ¨¬ï ¤¨áª
|
||
A2825: ld (D2941),de
|
||
call A287C
|
||
ret c
|
||
ld de,(D2941)
|
||
ld a,(de)
|
||
dec a
|
||
cp -1
|
||
ret z
|
||
cp "@"
|
||
jr c,A2841
|
||
cp "Z"
|
||
jr nc,A2841
|
||
sub "A"-1
|
||
ret
|
||
;
|
||
A2841: ld a,EINVDRV ; ª®¤ "¥ ¢¥àë© ®¬¥à ãáâனá⢠"
|
||
scf
|
||
ret
|
||
|
||
; ‚뤥«¨âì ¤¨à¥ªâ®à¨î
|
||
A2845: ld (D2947),de
|
||
jr A287C
|
||
|
||
; ‚뤥«¨âì ¨¬ï ä ©«
|
||
A284B: ld (D2943),de ; ªã¤
|
||
jr A287C
|
||
|
||
; ‚뤥«¨âì à áè¨à¥¨¥ ä ©«
|
||
A2851: ld (D2945),de
|
||
jr A287C
|
||
|
||
; <20> §®¡à âì áâபã
|
||
A2857: jr A287C
|
||
|
||
; ‚뤥«¨âì ¤¨áª, ¯ãâì, ä ©« ¨ à áè.
|
||
A2859: ex de,hl
|
||
ld c,(hl)
|
||
inc hl
|
||
ld b,(hl)
|
||
inc hl
|
||
ld (D2941),bc
|
||
ld c,(hl)
|
||
inc hl
|
||
ld b,(hl)
|
||
inc hl
|
||
ld (D2947),bc
|
||
ld c,(hl)
|
||
inc hl
|
||
ld b,(hl)
|
||
inc hl
|
||
ld (D2943),bc
|
||
ld c,(hl)
|
||
inc hl
|
||
ld b,(hl)
|
||
ld (D2945),bc
|
||
ex de,hl
|
||
jr A287C
|
||
|
||
|
||
A287C: ex af,af'
|
||
exx
|
||
xor a
|
||
ld hl,(D2947)
|
||
ld (hl),a
|
||
ld hl,(D2943) ; ¤à¥á ¡ãä¥à ¯®¤ ¨¬ï ä ©«
|
||
ld (hl),a
|
||
ld hl,(D2945)
|
||
ld (hl),a
|
||
ld hl,(D2941)
|
||
ld (hl),a
|
||
exx
|
||
ex af,af'
|
||
A2891: ld de,T2934
|
||
ld bc,0D01h ; áç¥â稪¨
|
||
A2897: ld a,(hl)
|
||
call upper ; a..z -> A..Z
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
inc c ; ++áç¥â稪
|
||
cp '\'
|
||
jr z,A2916
|
||
cp ":"
|
||
jr z,A2900
|
||
cp " "+1
|
||
jr c,A28BF
|
||
cp "?"
|
||
jr z,A28B9
|
||
cp "*"
|
||
jr z,A28B9
|
||
A28B3: djnz A2897
|
||
ld a,EINVFNAM ; ª®¤ "¥¢¥à®¥ ¨¬ï"
|
||
scf
|
||
ret
|
||
;
|
||
A28B9: ex af,af'
|
||
set 7,a
|
||
ex af,af'
|
||
jr A28B3
|
||
;
|
||
A28BF: ld a,2
|
||
cp c
|
||
jr z,A28FD
|
||
push hl
|
||
ld hl,T2934
|
||
ld de,(D2943) ; ¤à¥á ¡ãä¥à ¯®¤ ¨¬ï ä ©«
|
||
ld b,0
|
||
dec c
|
||
dec c
|
||
ld a,c
|
||
ldir
|
||
ld c,a
|
||
xor a
|
||
ld (de),a
|
||
ld hl,(D2943) ; ¤à¥á ¡ãä¥à ¯®¤ ¨¬ï ä ©«
|
||
ld a,"."
|
||
cpir
|
||
jr nz,A28F8
|
||
ld c,3
|
||
ld de,(D2945)
|
||
A28E5: ld a,(hl)
|
||
or a
|
||
jr nz,A28EC
|
||
ld a," "
|
||
dec hl
|
||
A28EC: ld (de),a
|
||
inc hl
|
||
inc de
|
||
dec c
|
||
jr nz,A28E5
|
||
xor a
|
||
ld (de),a
|
||
ex af,af'
|
||
set 1,a ; 㪠§ ® à áè. ä ©«
|
||
ex af,af'
|
||
A28F8: ex af,af'
|
||
set 0,a ; 㪠§ ® ¨¬ï ä ©«
|
||
ex af,af'
|
||
pop hl
|
||
A28FD: ex af,af'
|
||
and a
|
||
ret
|
||
|
||
|
||
A2900: xor a
|
||
ld (de),a
|
||
push hl
|
||
ld hl,T2934
|
||
ld de,(D2941)
|
||
ld b,0
|
||
ldir
|
||
pop hl
|
||
ex af,af'
|
||
set 3,a ; 㪠§ ® ¨¬ï ¤¨áª
|
||
ex af,af'
|
||
jp A2891
|
||
|
||
|
||
A2916: xor a
|
||
ld (de),a
|
||
push hl
|
||
push bc
|
||
ld hl,(D2947)
|
||
ld bc,255
|
||
cpir
|
||
dec hl
|
||
ex de,hl
|
||
ld hl,T2934 ; 12 ¯à®¡¥«®¢
|
||
pop bc
|
||
ld b,0
|
||
ldir
|
||
pop hl
|
||
ex af,af'
|
||
set 2,a ; 㪠§ ¯ãâì ä ©«
|
||
ex af,af'
|
||
jp A2891
|
||
|
||
|
||
|
||
T2934: db " ",0 ; 12 ¯à®¡¥«®¢
|
||
|
||
|
||
D2941: dw T2949
|
||
D2943: dw T2952
|
||
D2945: dw T295F
|
||
D2947: dw T0400 ; 512 ¡ ©â, ".", ".." § ¯¨á¨
|
||
|
||
|
||
T2949: ds 9
|
||
|
||
T2952: db " ",0 ; 9 ¯à®¡¥«®¢
|
||
|
||
T295F: db " ",0
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #43. ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ¤®© áâப¨.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ª®¬ ¤®© áâப¨
|
||
; DE - ¡ãä¥à ¤«ï ¢ë¤¥«. ¯ à ¬¥âà
|
||
; ¢ë室: HL - 㪠§ ⥫ì á«¥¤. ¯ à ¬¥âà ª®¬-áâப¨
|
||
; CF=0 - ª®¥æ áâப¨ ¥ ¤®á⨣ãâ (¥áâì ¤à㣨¥ ¯ à ¬¥âàë)
|
||
; CF=1 - ª®¥æ áâப¨ (¢ ¡ãä¥à ¯¥à¥¥áñ ¯®á«¥¤¨© ¯ à ¬¥âà ¨«¨ ®«ì)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_43:xor a
|
||
ld (de),a
|
||
A2965: ld a,(hl)
|
||
inc hl
|
||
cp " "
|
||
ret c
|
||
jr z,A2965
|
||
A296C: ld (de),a
|
||
ld a,(hl)
|
||
inc hl
|
||
inc de
|
||
cp " "+1
|
||
jr nc,A296C
|
||
cp " "
|
||
ld a,0
|
||
ld (de),a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3C. ˆä®à¬ æ¨ï ® ¯ ¬ïâ¨.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: HL - ®¡é¥¥ ª®«-¢® áâà ¨æ
|
||
; BC - ª®«-¢® ᢮¡. áâà ¨æ
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3C:ld c,0C0h
|
||
rst 08h
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3D. ‚뤥«¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||
;
|
||
; ¢å®¤: B - à §¬¥à ¡«®ª ¢ áâà ¨æ å ¯® 16kB
|
||
; ¢ë室: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨, ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3D:ld c,0C2h
|
||
rst 08h
|
||
ld e,a
|
||
ld a,ENOMEM ; ª®¤ "¥ å¢ â ¥â ¯ ¬ïâ¨"
|
||
ret c
|
||
ld d,0
|
||
ld hl,list_pages ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
add hl,de
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
ld (hl),a
|
||
ld a,e
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3E. Žá¢®¡®¦¤¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3E:ld e,a
|
||
ld d,0
|
||
ld hl,list_pages ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
add hl,de
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
cp (hl)
|
||
ld a,EINVMEM ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨"
|
||
scf
|
||
ret nz
|
||
push de
|
||
ld a,e
|
||
ld c,0C3h
|
||
rst 08h
|
||
pop de
|
||
ld a,EINVMEM ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨"
|
||
ret c
|
||
ld hl,list_pages ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
add hl,de
|
||
xor a
|
||
ld (hl),a
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3F. ˆ§¬¥¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
; B - ®¢ë© à §¬¥à ¡«®ª
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3F:ld e,a
|
||
ld d,0
|
||
ld hl,list_pages ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
add hl,de
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
cp (hl)
|
||
ld a,EINVMEM ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨"
|
||
scf
|
||
ret nz
|
||
ld d,b
|
||
push de
|
||
ld a,e
|
||
call A29EE
|
||
pop de
|
||
ld a,EINVMEM ; ª®¤ "¥ áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨"
|
||
ret c
|
||
ld a,b
|
||
cp d
|
||
ret z
|
||
jr c,A29DB
|
||
ld b,d
|
||
ld a,e
|
||
ld c,9Dh
|
||
rst 08h
|
||
ld a,b
|
||
ld c,0C3h
|
||
rst 08h
|
||
xor a
|
||
ret
|
||
;
|
||
A29DB: ld a,d
|
||
sub b
|
||
ld b,a
|
||
ld c,e
|
||
push bc
|
||
ld c,0C2h
|
||
rst 08h
|
||
pop bc
|
||
ld b,a
|
||
ld a,ENOMEM ; ª®¤ "¥¤®áâ â®ç® ¯ ¬ïâ¨"
|
||
ret c
|
||
ld a,c
|
||
ld c,9Eh
|
||
rst 08h
|
||
xor a
|
||
ret
|
||
|
||
A29EE: ld b,-1
|
||
ld c,a
|
||
A29F1: inc b
|
||
push bc
|
||
ld a,c
|
||
ld c,0C4h
|
||
rst 08h
|
||
pop bc
|
||
jr nc,A29F1
|
||
or a
|
||
scf
|
||
ret z
|
||
xor a
|
||
ret
|
||
|
||
A29FF: ld hl,list_pages ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
||
ld bc,256
|
||
A2A05: ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
cpir
|
||
ret nz
|
||
push hl
|
||
push bc
|
||
dec hl
|
||
and a
|
||
ld de,256
|
||
sbc hl,de
|
||
ld a,l
|
||
call Func_3E ; ®á¢®¡. ¡«®ª ¯ ¬ïâ¨
|
||
pop bc
|
||
pop hl
|
||
jr A2A05
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #38. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ïâ¨.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||
; H - ¡¨âë 6 ¨ 7 § ¤ îâ ®¬¥à ®ª , ¢ ª®â®à®¥ ¡ã¤¥â ¯®¤ª«. áâà ¨æ
|
||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_38:bit 7,h
|
||
jr z,Func_39 ; ¢ 1-¥
|
||
bit 6,h
|
||
jr z,Func_3A ; ¢® 2-¥
|
||
jr Func_3B ; ¢ 3-¥
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #39. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢ ¯¥à¢®¥ ®ª®.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_39:ld c,0C4h
|
||
ex de,hl
|
||
rst 08h
|
||
ex de,hl
|
||
ret c
|
||
ld c,0A2h
|
||
in b,(c)
|
||
out (c),a
|
||
ld a,b
|
||
ret
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3A. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢® ¢â®à®¥ ®ª®.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3A:ld c,0C4h
|
||
ex de,hl
|
||
rst 08h
|
||
ex de,hl
|
||
ret c
|
||
ld c,0C2h ; ¯®àâ
|
||
in b,(c)
|
||
out (c),a
|
||
ld a,b
|
||
ret
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #3B. <20>®¤ª«î票¥ áâà ¨æë ¯ ¬ï⨠¢ âà¥âì¥ ®ª®.
|
||
;
|
||
; ¢å®¤: A - ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
; B - ®¬¥à áâà ¨æë ¢ ¡«®ª¥ (0,1,2,..)
|
||
; ¢ë室: A - ®¬¥à áâà ¨æë, ¥á«¨ CF=0
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_3B:ld c,0C4h
|
||
ex de,hl
|
||
rst 08h
|
||
ex de,hl
|
||
ret c
|
||
ld c,0E2h
|
||
in b,(c)
|
||
out (c),a
|
||
ld a,b
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #40. ‚믮«¨âì ä ©«.
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; B=0 - § £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||
; ¢ë室: A - ª®¤ § ¢¥à襨ï, ¥á«¨ CF=0
|
||
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_40: inc b
|
||
dec b
|
||
jp z,A2AFE
|
||
dec b
|
||
jp z,A2B09
|
||
ld a,EINVFNC ; ª®¤ "¥ ¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
A2A5D: ld a,(hl)
|
||
inc hl
|
||
cp '\'
|
||
ret z
|
||
cp "/"
|
||
ret z
|
||
cp " "+1
|
||
jr nc,A2A5D
|
||
ret
|
||
|
||
|
||
A2A6A: ld a,2 ; «®£. ®¬¥à áâà. (path, ¯¥à¥¬. ®ªàã¦.)
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
call Func_02 ; ¯®«ãç¨âì ®¬¥à ⥪. ¤¨áª
|
||
add a,"A"
|
||
ld hl,LFD00
|
||
ld (hl),a
|
||
inc hl
|
||
ld a,":"
|
||
ld (hl),a
|
||
inc hl
|
||
call Func_1E ; ¨ä ® ⥪. ª â «®£¥
|
||
call A2AC1
|
||
ld hl,LFC80
|
||
A2A87: ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
bit 1,(hl)
|
||
inc hl
|
||
push hl
|
||
push bc
|
||
ex de,hl
|
||
call z,A2AB8
|
||
call Func_1D ; ᬥ ⥪ã饣® ª â «®£
|
||
jr c,A2AAC
|
||
ld hl,D2E7C ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
jr c,A2AAC
|
||
call A2CB6 ; áà ¢¨âì/¤®¡ ¢¨âì à áè. á "EXE" (¥á«¨ § ¤ ®)
|
||
jr c,A2AAC ; ¥ ᮢ¯ ¤ ¥â
|
||
call search_rec_file ; ¯®¨áª § ¯¨á¨ ä ©« ¢ ᯨ᪥ ¤¨áª
|
||
A2AAC: pop bc
|
||
pop hl
|
||
jr nc,A2AB3 ; § ¯¨áì ©¤¥
|
||
djnz A2A87
|
||
scf
|
||
A2AB3: pop bc
|
||
ld a,b
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ret
|
||
|
||
A2AB8: push hl
|
||
ld hl,LFD00
|
||
call Func_1D ; ᬥ ⥪ã饣® ª â «®£
|
||
pop hl
|
||
ret
|
||
|
||
A2AC1: ld hl,LFC7F
|
||
ld de,LFDFF
|
||
ld b,0
|
||
A2AC9: ld (hl),c
|
||
inc hl
|
||
xor a
|
||
ld (de),a
|
||
ld c,a
|
||
inc de
|
||
ld (hl),e
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
inc b
|
||
A2AD4: ld a,(de)
|
||
cp '\'
|
||
jr nz,A2ADB
|
||
set 1,c
|
||
A2ADB: ld a,(de)
|
||
cp ";"
|
||
jr z,A2AC9
|
||
inc de
|
||
cp ":"
|
||
jr z,A2AD4
|
||
or a
|
||
jr nz,A2ADB
|
||
ld (hl),c
|
||
inc hl
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),a
|
||
ret
|
||
|
||
|
||
T2AEE: db "PATH=",0 ; ¨¬ï ¯¥à¥¬. ®ªà㦥¨ï
|
||
|
||
|
||
; ++ã஢ï ⥪ã饩 ¯à®£à ¬¬ë
|
||
A2AF4: ld hl,D2E70
|
||
inc (hl)
|
||
ret
|
||
|
||
; --ã஢ï ⥪ã饩 ¯à®£à ¬¬ë
|
||
A2AF9: ld hl,D2E70
|
||
dec (hl)
|
||
ret
|
||
|
||
|
||
|
||
;------------------------------------------------------------------------
|
||
; ‡ £à㧨âì ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã.
|
||
; äãª. 40h, B=0.
|
||
;
|
||
; 1) Žâªàë¢ ¥â exe-ä ©« ç⥨¥;
|
||
; 2) ‘ç¨âë¢ ¥â ¢ à ¡®çãî ®¡« áâì ¯à¥ä¨ªá exe-ä ©« ;
|
||
; 3) ‚뤥«ï¥â ¡«®ª ¯ ¬ïâ¨, âà¥¡ã¥¬ë© ¤«ï § £à㧪¨ ¢á¥£® ä ©« ¨«¨ ¯¥à¢¨ç®£®
|
||
; § £àã§ç¨ª , ¥á«¨ ¥£® à §¬¥à ¥ à ¢¥ ã«î;
|
||
; 4) ‘®åà ï¥â á⥪;
|
||
; 5) <20>®¤ª«îç ¥â áâà ¨æë ¨§ ¢ë¤¥«¥®£® ¡«®ª ;
|
||
; 6) ‘âந⠯à¥ä¨ªá § ¯ã᪠¯à®£à ¬¬ë ¨ ãáâ ¢«¨¢ ¥â ¥£® ॣ¨áâà IX;
|
||
; 7) ‘ç¨âë¢ ¥â ä ©« ¯® ¤à¥áã 㪠§ ®¬ã ¢ ᬥ饨¨ 16 (€¤à¥á à ᯮ«®¦¥¨ï
|
||
; ª®¤ ¢ ¯ ¬ïâ¨);
|
||
; 8) ‡ ªàë¢ ¥â exe-ä ©«, ¥á«¨ íâ® ¥ ¯¥à¢¨çë© § £àã§ç¨ª;
|
||
; 9) “áâ ¢«¨¢ ¥â á⥪ à ¢ë¬ § ç¥¨î ¨§ ᬥ饨ï 20 (€¤à¥á à á¯. á⥪ );
|
||
; 10) <20>¥à¥¤ ¥â ã¯à ¢«¥¨¥ ¯® ¤à¥áã 㪠§ ®¬ã ¢ ᬥ饨¨ 18 (€¤à¥á § ¯ã᪠);
|
||
;
|
||
; <20>à¥ä¨ªá § ¯ãáª ä ©« :
|
||
;
|
||
; -03 1 db ? ; „¥áªà¨¯â®à ä ©« , ¥á«¨ exe-ä ©« á ¯¥à¢¨çë¬ § £àã§ç¨ª®¬
|
||
; -02 1 db ? ; ˆ¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
; -01 1 db ? ; “஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
; +00 1 db ? ; „«¨ ª®¬-áâப¨
|
||
; +01 127 ds ? ; <20> à ¬¥âàë ª®¬-áâப¨, § ª 稢 ¥âáï ã«¥¬
|
||
;------------------------------------------------------------------------
|
||
A2AFE: ld (D2E78),hl
|
||
call A2A5D
|
||
ld hl,(D2E78)
|
||
jr c,A2B32
|
||
; B=1.
|
||
A2B09: ld (D2E78),hl
|
||
ld a,1
|
||
ld (D1F3A),a ; à ¡. ï祩ª
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
call A2CB6 ; áà ¢¨âì/¤®¡ ¢¨âì à áè. á "EXE" (¥á«¨ § ¤ ®)
|
||
ld a,ENOFILE ; ª®¤ "ä ©« ¥ ©¤¥"
|
||
ret c
|
||
call A2AF4
|
||
call A1E89
|
||
jr nc,A2B75
|
||
jr A2AF9
|
||
;
|
||
A2B32: ld a,1
|
||
ld (D1F3A),a ; à ¡. ï祩ª
|
||
call A20F8 ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
ret c
|
||
ld hl,D213A ; 8.3 ¨¬ï
|
||
ld de,T2364 ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
call A2384 ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
ret c
|
||
call A2CB6 ; áà ¢¨âì/¤®¡ ¢¨âì à áè. á "EXE" (¥á«¨ § ¤ ®)
|
||
ld a,ENOFILE ; ª®¤ "ä ©« ¥ ©¤¥"
|
||
ret c
|
||
call A2AF4
|
||
call A1E89
|
||
jr nc,A2B75
|
||
call A2AF9
|
||
ld hl,T2AEE ; ¨¬ï ¯¥à¥¬. ®ªà㦥¨ï "PATH="
|
||
ld de,LFE00 ; ªã¤
|
||
ld b,1 ; ¯®«ãç¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||
call Func_46 ; äãªæ¨ï á¨áâ. ®ªà㦥¨ï
|
||
ld hl,(D2E78)
|
||
ld de,D2E7C
|
||
A2B67: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,A2B67
|
||
call A2A6A
|
||
ld hl,(D2E78)
|
||
jr A2B09
|
||
;
|
||
A2B75: ld (D2E76),a ; á®åà. ¤¥áªà. ä ©«
|
||
ld hl,D2E7C ; ¡ãä¥à
|
||
ld de,128 ; ç¨á«® ç¨â. ¡ ©â
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_13 ; ç⥨¥ ¨§ ä ©«
|
||
jp c,A2CD7
|
||
ld ix,D2E7C
|
||
ld hl,(D2E7C)
|
||
ld de,"XE" ; ᨣ âãà
|
||
sbc hl,de
|
||
ld a,EINVEXE ; ª®¤ "¥¯à ¢¨«ìë© EXE-ä ©«"
|
||
scf
|
||
jp nz,A2CD7
|
||
ld a,(ix+3)
|
||
or a
|
||
ld a,ENSUPEXE ; ª®¤ "¥ ¯®¤¤¥à¦. ¢¥àá¨ï EXE-ä ©« "
|
||
scf
|
||
jp nz,A2CD7
|
||
|
||
|
||
ld de,(D2E84)
|
||
ld a,e
|
||
or d
|
||
jp nz,A2CE4
|
||
ld l,a
|
||
ld h,a
|
||
push hl
|
||
pop ix
|
||
ld b,2 ; ®â ª®æ ä ©«
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_15 ; ¯¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
ld de,(D2E8C)
|
||
ld a,d
|
||
and 3Fh
|
||
ld d,a
|
||
add ix,de
|
||
ld de,0
|
||
adc hl,de
|
||
ld a,xh
|
||
sla a
|
||
rl l
|
||
rl h
|
||
sla a
|
||
rl l
|
||
rl h
|
||
or xl
|
||
jr z,1F
|
||
inc hl
|
||
1: ld a,h
|
||
or a
|
||
jp nz,A2CD5
|
||
ld b,l
|
||
call Func_3D ; ¢ë¤¥«¨âì ¡«®ª ¯ ¬ïâ¨
|
||
jp c,A2CD5
|
||
ld (D2E77),a ; ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
exx
|
||
pop de
|
||
ld hl,0
|
||
add hl,sp
|
||
ld sp,(D2E7A)
|
||
push hl
|
||
push de
|
||
in a,(0E2h)
|
||
ld d,a
|
||
in a,(0C2h)
|
||
ld e,a
|
||
in a,(0A2h)
|
||
push de
|
||
push af
|
||
ld (D2E7A),sp
|
||
ld sp,hl
|
||
exx
|
||
ld a,(D2E77) ; ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
ld de,T2E71
|
||
ld bc,00C4h
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld a,(D2E77) ; ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
ld bc,01C4h
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld a,(D2E77) ; ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
ld bc,02C4h
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld a,(D2E77) ; ¨¤¥â¨ä. ¡«®ª ¯ ¬ïâ¨
|
||
ld bc,03C4h
|
||
rst 08h
|
||
ld (de),a
|
||
ld hl,(D2E78)
|
||
ld de,T0400+1
|
||
call A2E52
|
||
ld a,128 ;80h
|
||
sub b
|
||
ld (T0400),a
|
||
ld sp,T307A
|
||
ld a,0FFh ; ®¬¥à áâà.
|
||
out (0A2h),a
|
||
out (0C2h),a
|
||
out (0E2h),a
|
||
ld hl,(D2E8C)
|
||
ld de,T2E71
|
||
ld a,h
|
||
and 0C0h
|
||
cp 40h ; 40(00)h
|
||
jr z,A2C5E
|
||
cp 80h ; 80(00)h
|
||
jr z,A2C62
|
||
cp 0C0h ; 0C0(00)h
|
||
jr z,A2C66
|
||
A2C5E: ld a,(de)
|
||
out (0A2h),a
|
||
inc de
|
||
A2C62: ld a,(de)
|
||
out (0C2h),a
|
||
inc de
|
||
A2C66: ld a,(de)
|
||
out (0E2h),a
|
||
call A2DE9
|
||
ld hl,(D2E82)
|
||
ld ix,(D2E80)
|
||
ld b,0 ; ®â ç « ä ©«
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_15 ; ¯¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
ld sp,L403F
|
||
ld de,(D2E8C)
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
sbc hl,de
|
||
ex de,hl ; de=ç¨á«® ç¨â. ¡ ©â
|
||
ld hl,(D2E8C) ; ¡ãä¥à
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_13 ; ç⥨¥ ¨§ ä ©«
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_12 ; § ªàëâì ä ©«
|
||
ld sp,(D2E90)
|
||
ld hl,(D2E8C)
|
||
ld de,128 ;T0080
|
||
and a
|
||
sbc hl,de
|
||
ex de,hl
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
ld hl,(D2E8E)
|
||
ld de,A2CB3 ; ¤à¥á ¯/¯ "§ ¢¥àè¨âì ¯à®æ¥áá"
|
||
push de
|
||
push hl
|
||
ret
|
||
;
|
||
A2CB3: jp Func_41 ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá)
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; …᫨ à áè. ä ©« ¥ § ¤ ®, § ¤ âì "exe".
|
||
; …᫨ à áè. ä ©« § ¤ ®, áà ¢¨âì ¥£® á "exe".
|
||
;-------------------------------------------------
|
||
A2CB6: ld hl,T2E6D ; "EXE"
|
||
ld de,T236C
|
||
ld b,3
|
||
ld a,(de)
|
||
cp " "
|
||
jr nz,A2CCB ; § ¤ ® à áè.
|
||
ldi
|
||
ldi
|
||
ldi
|
||
xor a
|
||
ret
|
||
;
|
||
; áà ¢¨âì à áè. á "EXE"
|
||
A2CCB: ld a,(de)
|
||
cp (hl)
|
||
scf
|
||
ret nz ; ¥ ᮢ¯ ¤ ¥â
|
||
inc hl
|
||
inc de
|
||
djnz A2CCB
|
||
xor a ; Ok
|
||
ret
|
||
|
||
|
||
A2CD5: ld a,1Eh
|
||
A2CD7: push af
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_12 ; § ªàëâì ä ©«
|
||
ld hl,D2E70
|
||
dec (hl) ; --ã஢ï ⥪ã饩 ¯à®£à ¬¬ë
|
||
pop af
|
||
ret
|
||
|
||
A2CE4: ex de,hl
|
||
ld de,(D2E8C)
|
||
ld a,d
|
||
and 3Fh
|
||
ld d,a
|
||
adc hl,de
|
||
xor a
|
||
sla h
|
||
rla
|
||
sla h
|
||
rla
|
||
ld b,a
|
||
ld a,h
|
||
or l
|
||
jr z,A2CFC
|
||
inc b
|
||
A2CFC: call Func_3D ; ¢ë¤¥«¨âì ¡«®ª ¯ ¬ïâ¨
|
||
jr c,A2CD5
|
||
ld (D2E77),a ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
exx
|
||
pop de
|
||
ld hl,0
|
||
add hl,sp
|
||
ld sp,(D2E7A)
|
||
push hl
|
||
push de
|
||
in a,(0E2h)
|
||
ld d,a
|
||
in a,(0C2h)
|
||
ld e,a
|
||
in a,(0A2h)
|
||
push de
|
||
push af
|
||
ld (D2E7A),sp
|
||
ld sp,hl
|
||
exx
|
||
ld de,T2E71
|
||
ld bc,00C4h
|
||
ld a,(D2E77) ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld bc,01C4h
|
||
ld a,(D2E77) ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld bc,02C4h
|
||
ld a,(D2E77) ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
rst 08h
|
||
ld (de),a
|
||
inc de
|
||
ld bc,03C4h
|
||
ld a,(D2E77) ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
rst 08h
|
||
ld (de),a
|
||
ld hl,(D2E78)
|
||
ld de,T0400+1
|
||
call A2E52
|
||
ld a,80h
|
||
sub b
|
||
ld (T0400),a
|
||
ld sp,T307A
|
||
ld a,0FFh ; ®¬¥à áâà.
|
||
out (0A2h),a
|
||
out (0C2h),a
|
||
out (0E2h),a
|
||
ld hl,(D2E8C)
|
||
ld de,T2E71
|
||
ld a,h
|
||
and 0C0h
|
||
cp 40h ; 40(00)h
|
||
jr z,A2D76
|
||
cp 80h
|
||
jr z,A2D7A
|
||
cp 0C0h
|
||
jr z,A2D7E
|
||
A2D76: ld a,(de)
|
||
out (0A2h),a
|
||
inc de
|
||
A2D7A: ld a,(de)
|
||
out (0C2h),a
|
||
inc de
|
||
A2D7E: ld a,(de)
|
||
out (0E2h),a
|
||
call A2DE9
|
||
ld hl,(D2E82)
|
||
ld ix,(D2E80)
|
||
ld b,0 ; ®â ç « ä ©«
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_15 ; ¯¥à¥¬¥é¥¨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||
ld sp,L403F
|
||
ld hl,(D2E8C) ; ¡ãä¥à
|
||
ld de,(D2E84) ; ç¨á«® ç¨â. ¡ ©â
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
call Func_13 ; ç⥨¥ ¨§ ä ©«
|
||
ld sp,(D2E90)
|
||
ld hl,(D2E8C)
|
||
ld de,128
|
||
and a
|
||
sbc hl,de
|
||
ex de,hl
|
||
ld xh,d
|
||
ld xl,e
|
||
ld hl,(D2E8E)
|
||
ld de,A2CB3 ; ¤®á-§ £«ãèª
|
||
push de
|
||
push hl
|
||
ret
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #41. ‡ ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá).
|
||
;
|
||
; ¢å®¤: B - ª®¤ § ¢¥à襨ï
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;
|
||
; ‚ë室 ¨§ EXE-ä ©« :
|
||
;
|
||
; 1) Žá¢®¡®¦¤ îâáï ¢á¥ ¡«®ª¨ ¯ ¬ï⨠ª®â®àë¥ ¢ë¤¥«ï« áì ¤ ®¬ã ¯à¨«®¦¥¨î.
|
||
; 2) ‚®ááâ ¢«¨¢ îâáï áâà ¨æë ª®â®àë¥ ¡ë«¨ ¯®¤ª«îç¥ë ¤® § ¯ã᪠EXE-ä ©« .
|
||
; 3) ‚ᯮ¬¨ ¥âáï á⥪.
|
||
; 4) ‚ ॣ¨áâà A ¯®¬¥é ¥âáï ª®¤ ¢®§¢à â ¨ ¢ë¯®«ï¥âáï RET.
|
||
;
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_41: ld a,b
|
||
ld (return_code),a ; ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë
|
||
call A29FF
|
||
ld hl,D2E70
|
||
dec (hl) ; --ã஢ï ⥪ã饩 ¯à®£à ¬¬ë
|
||
ld sp,(D2E7A)
|
||
pop af
|
||
pop hl
|
||
out (0A2h),a
|
||
ld a,l
|
||
out (0C2h),a
|
||
ld a,h
|
||
out (0E2h),a
|
||
pop de
|
||
pop hl
|
||
ld (D2E7A),sp
|
||
ld sp,hl
|
||
ex de,hl
|
||
ld a,(return_code) ; ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë
|
||
and a
|
||
jp (hl)
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #42. <20>®«ãç¨âì ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A - ª®¤ § ¢¥à襨ï
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_42:ld a,(return_code)
|
||
and a
|
||
ret
|
||
|
||
A2DE9: ld hl,(D2E8C)
|
||
dec h
|
||
ld d,h
|
||
ld e,l
|
||
inc de
|
||
ld bc,00FFh
|
||
ld (hl),b
|
||
ldir
|
||
ex de,hl
|
||
dec h
|
||
ld de,128 ;T0080
|
||
add hl,de
|
||
ex de,hl
|
||
db 0DDh
|
||
ld h,d
|
||
db 0DDh
|
||
ld l,e
|
||
ld hl,T0400 ; ®âªã¤
|
||
ld c,(hl)
|
||
inc c
|
||
ldir
|
||
ex de,hl
|
||
ld (hl),b
|
||
ld a,(D2E70) ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
ld (ix-1),a ; ¢ ¯à¥ä¨ªá exe-ä ©«
|
||
ld a,(D2E77) ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
ld (ix-2),a ; ¢ ¯à¥ä¨ªá exe-ä ©«
|
||
ld a,(D2E76) ; ¤¥áªà. ä ©«
|
||
ld (ix-3),a ; ¢ ¯à¥ä¨ªá exe-ä ©«
|
||
inc hl
|
||
ld (hl),b
|
||
inc hl
|
||
call Func_02 ; ¯®«ãç¨âì ®¬¥à ⥪. ¤¨áª
|
||
add a,"A"
|
||
ld (hl),a
|
||
inc hl
|
||
ld a,":"
|
||
ld (hl),a
|
||
inc hl
|
||
push hl
|
||
call Func_1E ; ¨ä ® ⥪. ª â «®£¥
|
||
pop hl
|
||
xor a
|
||
ld bc,256
|
||
cpir
|
||
dec hl
|
||
dec hl
|
||
ld a,'\'
|
||
cp (hl)
|
||
inc hl
|
||
jr z,A2E3F
|
||
ld (hl),a
|
||
inc hl
|
||
A2E3F: ex de,hl
|
||
ld hl,D213A
|
||
A2E43: ld a,(hl)
|
||
ldi
|
||
cp " "+1
|
||
jr nc,A2E43
|
||
dec de
|
||
xor a
|
||
ld (de),a
|
||
ld (D2795),ix
|
||
ret
|
||
|
||
|
||
A2E52: ld bc,8021h
|
||
A2E55: ld a,(hl)
|
||
cp c
|
||
jr c,A2E61
|
||
inc hl
|
||
djnz A2E55
|
||
xor a
|
||
ld (de),a
|
||
ld b,80h
|
||
ret
|
||
A2E61: ld bc,8020h
|
||
A2E64: ld a,(hl)
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
cp c
|
||
ret c
|
||
djnz A2E64
|
||
ret
|
||
|
||
|
||
T2E6D: db "EXE"
|
||
|
||
D2E70: db 1 ; ã஢¥ì ⥪ã饩 ¯à®£à ¬¬ë
|
||
T2E71: db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
|
||
return_code:
|
||
db 0 ; ª®¤ § ¢¥àè¥¨ï ¯à®£à ¬¬ë (¯à®æ¥áá )
|
||
|
||
D2E76: db 0 ; ¤¥áªà. ä ©«
|
||
D2E77: db 0 ; ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
||
|
||
D2E78: dw 0
|
||
|
||
|
||
|
||
D2E7A: dw L317B ; ¤à¥á á⥪
|
||
|
||
|
||
; 512 ¡ ©â. exe-§ £®«®¢®ª, ¯®á«¥ à ¡. ¡ãä¥à
|
||
D2E7C: db "EXE"
|
||
db 0 ; exe ¢¥àá¨ï
|
||
D2E80: dw 0 ; 512, ¬«. ᬥé. ª®¤
|
||
D2E82: dw 0 ; áâ. ᬥé. ª®¤
|
||
D2E84: dw 0 ; end-beg, ¯¥à¢¨çë© § £àã§ç¨ª
|
||
dw 0,0,0 ; १¥à¢
|
||
D2E8C: dw 0 ; ¤à¥á § £à㧪¨ ª®¤
|
||
D2E8E: dw L0000 ; ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï
|
||
D2E90: ds 490
|
||
|
||
|
||
|
||
T307A: ds 257
|
||
L317B: db 0 ; ç «® á⥪
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #46. ‘¨á⥬®¥ ®ªà㦥¨¥.
|
||
;
|
||
; ¢å®¤: B - ®¬¥à ¯®¤äãªæ¨¨:
|
||
; B=0, ¯®«ã票¥ á¨á⥬®£® ®ªà㦥¨ï
|
||
; HL - ¡ãä¥à
|
||
; B=1, ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||
; HL - ¨¬ï ¯¥à¥¬¥®©
|
||
; DE - ¡ãä¥à ¤«ï § ç¥¨ï ¯¥à¥¬¥®©
|
||
; B=2, ãáâ ®¢¨âì/㤠«¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||
; HL - ¨¬ï ¯¥à¥¬¥®© ¨ § 票¥, à §¤¥«¥ë¥ ᨬ¢®«®¬ "="
|
||
; â.¥. <20>…<EFBFBD>…Œ…<C592><E280A6>€Ÿ=‡<>€—…<E28094>ˆ…
|
||
; ‚ ª®æ¥ áâப¨ ¤®«¦¥ áâ®ïâì ã«ì.
|
||
; ¢ë室: A - á®áâ®ï¨¥, ¥á«¨ CF=0
|
||
; DE - 㪠§ë¢ ¥â ª®¥æ ¡ãä¥à (⮫쪮 ¤«ï B=1)
|
||
; A=0FFh - ¯¥à¥¬¥ ï ®¡ à㦥
|
||
; A=0 - ¯¥à¥¬¥ ï ¥ ®¡ à㦥
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_46: inc b
|
||
jr z,A318E ; B=#FF
|
||
dec b
|
||
jr z,A31B2 ; B=0. ¯®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||
dec b
|
||
jr z,A31DB ; B=1. ¯®«ãç¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||
dec b
|
||
jr z,A31FD ; B=2. ãáâ ®¢¨âì/㤠«¨âì ¯¥à¥¬. ®ªà㦥¨ï
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; ˆ¨æ¨ «¨§ æ¨ï ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
;-------------------------------------------------
|
||
A318E: ld a,2 ; «®£. ®¬¥à áâà. (path, ¯¥à¥¬. ®ªàã¦.)
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
ld de,LE400 ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
xor a
|
||
ld (de),a
|
||
inc de
|
||
ld hl,DEFAULT_ENV
|
||
ld bc,1
|
||
ldir
|
||
ld (de),a
|
||
ex de,hl
|
||
ld de,LE400 ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
and a
|
||
sbc hl,de
|
||
ld (D3296),hl
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; <20>®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||
;-------------------------------------------------
|
||
A31B2: push hl
|
||
ld a,2 ; «®£. ®¬¥à áâà. (path, ¯¥à¥¬. ®ªàã¦.)
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
ld h,a ; áâ à ï ¡ ª ¯®àâ
|
||
ld c,0E2h
|
||
in l,(c)
|
||
exx
|
||
ld hl,LE400 ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
inc hl
|
||
pop de
|
||
ld bc,(D3296)
|
||
exx
|
||
A31C8: out (c),l
|
||
exx
|
||
ld a,(hl)
|
||
exx
|
||
out (c),h ; ¢®ááâ. ¯®àâ
|
||
exx
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
dec bc
|
||
ld a,b
|
||
or c
|
||
exx
|
||
jr nz,A31C8
|
||
xor a
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; <20>®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||
;-------------------------------------------------
|
||
A31DB: push de
|
||
call A325F ; ᪮¯¨à. áâப㠯¥à¥¬. ®ªàã¦. ¢ ¡ãä¥àë
|
||
ld a,2 ; «®£. ®¬¥à áâà. (path, ¯¥à¥¬. ®ªàã¦.)
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
ex af,af' ; áâ à ï ¡ ª ¯®àâ
|
||
call A323D ; ©â¨ ª®¥æ ¢á¥å ¯¥à¥¬¥ëå ?
|
||
pop de
|
||
ld a,0
|
||
ld (de),a
|
||
jr nc,A31F7
|
||
A31EE: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,A31EE
|
||
dec de
|
||
ld a,-1
|
||
A31F7: ex af,af'
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
ex af,af'
|
||
and a
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; “áâ ®¢¨âì/“¤ «¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||
;
|
||
; ¢å®¤: hl=¨¬ï ¯¥à¥¬. ¨ § 票¥, à §¤¥«. ᨬ¢®«®¬ "="
|
||
;-------------------------------------------------
|
||
A31FD: ; ¢ D2E7C "EXE"
|
||
; ¢ T0400 ᮤ¥à¦¨¬®¥ system.bat
|
||
call A325F ; ᪮¯¨à. áâப㠯¥à¥¬. ®ªàã¦. ¢ ¡ãä¥àë
|
||
ld a,2 ; «®£. ®¬¥à áâà. (path, ¯¥à¥¬. ®ªàã¦.)
|
||
call set_dos_page ; ¯®¤ª«îç¨âì ¡ ªã à áè¨à¥¨ï „Ž‘
|
||
push af ; áâ à ï ¡ ª ¯®àâ
|
||
call A323D ; ©â¨ ª®¥æ ¢á¥å ¯¥à¥¬¥ëå ?
|
||
jr nc,A3214
|
||
xor a
|
||
cpir
|
||
ld a,b
|
||
or c
|
||
jr z,A3214
|
||
ldir
|
||
A3214: ld a,(T0400)
|
||
or a
|
||
jr z,A322D
|
||
ld hl,D2E7C ; 512 ¡ ©â, ¡ãä¥à
|
||
A321D: ld a,(hl)
|
||
ldi
|
||
cp "=" ; ᨬ¢®« à §¤¥«¥¨ï
|
||
jr nz,A321D
|
||
ld hl,T0400 ; ®âªã¤
|
||
A3227: ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,A3227
|
||
A322D: xor a
|
||
ld (de),a
|
||
ld hl,LE400 ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
ex de,hl
|
||
sbc hl,de
|
||
ld (D3296),hl
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
and a
|
||
ret
|
||
|
||
; ©â¨ ª®¥æ ¢á¥å ¯¥à¥¬¥ëå ?
|
||
A323D: ld hl,LE400 ; ç «® ¡ãä¥à ¯¥à¥¬¥ëå ®ªà㦥¨ï
|
||
ld bc,(D3296)
|
||
push hl
|
||
A3245: pop de
|
||
ld de,D2E7C ; 512 ¡ ©â ¡ãä¥à
|
||
xor a
|
||
cpir
|
||
push hl
|
||
A324D: ld a,(hl)
|
||
or a
|
||
jr z,A325D
|
||
ld a,(de)
|
||
cp (hl)
|
||
inc hl
|
||
inc de
|
||
dec bc
|
||
jr nz,A3245
|
||
cp "=" ; ᨬ¢®« à §¤¥«¥¨ï
|
||
jr nz,A324D
|
||
scf
|
||
A325D: pop de
|
||
ret
|
||
|
||
;-----------------------------------------------------------
|
||
; ‘ª®¯¨à®¢ âì áâப㠯¥à¥¬¥®© ®ªà㦥¨ï ¢ ¡ãä¥àë
|
||
; (¨¬ï ¨ § 票¥ ¢ à §ë¥ ¡ãä¥àë)
|
||
; ¢å®¤: hl=¨¬ï ¯¥à¥¬. ¨ § 票¥, à §¤¥«. ᨬ¢®«®¬ "="
|
||
;-----------------------------------------------------------
|
||
A325F: ld b,maxlen_env_string ; 255 ¬ ªá. ¤«¨ áâப¨ (¨¬ï+§ ç.)
|
||
ld de,D2E7C ; ªã¤
|
||
xor a
|
||
ld (de),a
|
||
ld (T0400),a
|
||
; ᪮¯¨à. ¢ "D2E7C" ¨¬ï ¯¥à¥¬¥®©
|
||
A3269: ld a,(hl)
|
||
inc hl
|
||
cp "=" ; ᨬ¢®« à §¤¥«¥¨ï
|
||
jr z,A3283 ; ª®¥æ ¨¬¥¨
|
||
or a
|
||
jr z,A327B ; ª®¥æ áâப¨
|
||
call upper ; a..z -> A..Z
|
||
ld (de),a
|
||
inc de
|
||
djnz A3269
|
||
jr A3294 ; ᫨誮¬ ¤«¨ ï áâப
|
||
|
||
; § 票¥ ¥ § ¤ ®
|
||
A327B: ld a,"=" ; ᨬ¢®« à §¤¥«¥¨ï
|
||
ld (de),a
|
||
inc de
|
||
xor a
|
||
ld (de),a
|
||
inc de
|
||
ret
|
||
|
||
|
||
A3283: ld (de),a ; á®åà. "="
|
||
inc de
|
||
xor a
|
||
ld (de),a ; ¢ ª®¥æ ¨¬¥¨ ¯¥à¥¬.
|
||
; ᪮¯¨à. ¢ "T0400" § 票¥ ¯¥à¥¬¥®© (áâப㠯ã⥩)
|
||
ld de,T0400 ; 512 ¡ ©â, ¡ãä¥à
|
||
ld (de),a
|
||
ld c,255 ; ç⮡ë "ldi" ¥ ¯®à⨫ "b"
|
||
A328D: ld a,(hl)
|
||
ldi
|
||
or a
|
||
ret z ; ª®¥æ áâப¨ § ç. ¯¥à¥¬¥®©
|
||
djnz A328D
|
||
A3294: ld a,b
|
||
ld (de),a ; ®¡à¥§ âì ᫨誮¬ ¤«¨ãî áâபã
|
||
inc de
|
||
scf
|
||
ret
|
||
|
||
|
||
D3296: dw 1
|
||
DEFAULT_ENV: db 0
|
||
|
||
|
||
|
||
include "mouse.asm" ; ª®¤ ¬ë誨
|
||
|
||
|
||
|
||
db " " ; 12
|
||
ds 20
|
||
|
||
db "FILENAME.EXT",0
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; RST 18h. ‚¥ªâ®à ¤¨áª®¢ëå ãáâனáâ¢
|
||
; ¢å®¤: a=®¬¥à ãáâனá⢠(0-25)
|
||
;-------------------------------------------------
|
||
drv_devices:
|
||
push hl
|
||
push bc ; á®åà. bc
|
||
ld c,a
|
||
add a,a ;1+1=2
|
||
add a,c ;2+1=3
|
||
ld c,a
|
||
ld b,0
|
||
ld hl,A38FC ; â ¡«¨æ ¯¥à¥å®¤®¢
|
||
add hl,bc
|
||
ld a,(hl)
|
||
inc a
|
||
jr z,A38F4 ; ¡ë«® a=0FFh
|
||
dec a
|
||
inc hl
|
||
ld c,(hl) ; § £à. ¤à¥á ®¡à ¡®â稪
|
||
inc hl ;
|
||
ld h,(hl) ;
|
||
ld l,c
|
||
pop bc ; ¢®ááâ. bc
|
||
ex (sp),hl ; ¤à¥á ¢ á⥪
|
||
ret ; ¯¥à¥©â¨ ¥£®
|
||
;
|
||
A38F4: pop bc
|
||
pop hl
|
||
ld a,EINVDRV ; ª®¤ "¥¢¥àë© ®¬¥à ãáâனá⢠"
|
||
scf
|
||
ret
|
||
|
||
|
||
|
||
A38FA: dw A38FC
|
||
|
||
|
||
; ’ ¡«¨æ ¤à¥á®¢ ®¡à ¡®â稪®¢ ¤¥¢ ©á®¢. 26 í«¥¬¥â®¢ (¤¨áª¨ A..Z ?).
|
||
A38FC: db -1 ;00
|
||
dw -1
|
||
db -1 ;01
|
||
dw -1
|
||
db -1 ;02
|
||
dw -1
|
||
db -1 ;03
|
||
dw -1
|
||
db -1 ;04
|
||
dw -1
|
||
db -1 ;05
|
||
dw -1
|
||
db -1 ;06
|
||
dw -1
|
||
db -1 ;07
|
||
dw -1
|
||
db -1 ;08
|
||
dw -1
|
||
db -1 ;09
|
||
dw -1
|
||
db -1 ;10
|
||
dw -1
|
||
db -1 ;11
|
||
dw -1
|
||
db -1 ;12
|
||
dw -1
|
||
db -1 ;13
|
||
dw -1
|
||
db -1 ;14
|
||
dw -1
|
||
db -1 ;15
|
||
dw -1
|
||
db -1 ;16
|
||
dw -1
|
||
db -1 ;17
|
||
dw -1
|
||
db -1 ;18
|
||
dw -1
|
||
db -1 ;19
|
||
dw -1
|
||
db -1 ;20
|
||
dw -1
|
||
db -1 ;21
|
||
dw -1
|
||
db -1 ;22
|
||
dw -1
|
||
db -1 ;23
|
||
dw -1
|
||
db -1 ;24
|
||
dw -1
|
||
db -1 ;25
|
||
dw -1
|
||
db -1 ; ª®¥æ
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; <20>à®áª ¨à®¢ âì á¨á⥬ã FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨
|
||
;-----------------------------------------------------------
|
||
scan_all_devices:
|
||
xor a
|
||
ld (last_drive),a ; á¡à. ï祩ªã
|
||
ld hl,A38FC
|
||
ld (A38FA),hl ; ¢®ááâ. ï祩ªã
|
||
; FDD ¤¥¢ ©áë
|
||
ld c,a ; c="open device"
|
||
call A3D7A ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||
ld de,A3D7A ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||
call A397B ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||
; HDD ¤¥¢ ©áë
|
||
xor a
|
||
ld c,a ; c="open device"
|
||
call A39CC ; ã§ âì ç¨á«® HDD-¤¥¢ ©á®¢
|
||
ld de,A39CC ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||
call A397B ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||
; RAM-¤¨áª¨
|
||
xor a
|
||
ld c,a ; c="open device"
|
||
call A3E5E ; ã§ âì ç¨á«® RAM-¤¨áª®¢
|
||
ld de,A3E5E ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||
call A397B ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||
xor a
|
||
ret
|
||
|
||
|
||
|
||
; ˆ¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
|
||
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪 ¤¥¢ ©á
|
||
; a=ç¨á«® ¤¥¢ ©á®¢ (0=¥â)
|
||
A397B: ld c,a
|
||
ld hl,last_drive ; ï祩ª ®¬¥à ¯®á«. ¤¨áª
|
||
add a,(hl)
|
||
ld (hl),a
|
||
ld a,c
|
||
ld c,0 ; á¡à.
|
||
or a
|
||
ret z ; ¥â ¤¥¢ ©á®¢
|
||
ld hl,(A38FA) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
|
||
A3989: ld (hl),c ; ¨¤¥ªá ?
|
||
inc hl
|
||
ld (hl),e ; de= ¤à¥á ®¡à ¡®â稪
|
||
inc hl
|
||
ld (hl),d
|
||
inc hl
|
||
inc c ; ++¨¤¥ªá ?
|
||
dec a
|
||
jr nz,A3989
|
||
ld (A38FA),hl ; á®åà. ®¢®¥ ¯®«®¦. ¢ â ¡«¨æ¥
|
||
dec a
|
||
ld (hl),a ; a=0FFh
|
||
ret
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #08 (DSS_RESCAN). <20>¥à¥áª ¨à®¢ âì ¤¥¢ ©áë á¨á⥬ë.
|
||
;
|
||
; ¢å®¤: ¥â
|
||
; ¢ë室: A - ®¬¥à ¯®á«¥¤¥£® «®£. ¤¨áª ¢ á¨á⥬¥
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_08:di
|
||
call scan_all_devices ; ¯¥à¥áª . ¢á¥ ¤¥¢ ©áë
|
||
ld a,(last_drive)
|
||
ei
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;/////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #09. <20>®¬¥à á¨á⥬®£® ¤¨áª .
|
||
; ‚®§¢à é ¥â ®¬¥à ¤¨áª , c ª®â®à®£® § £à㦥 á¨á⥬ .
|
||
;
|
||
; ¢å®¤: B = 0 (01h - ¨á¯. boot-§ £àã§ç¨ª á¨á⥬ë)
|
||
; ¢ë室: A - ®¬¥à á¨á⥬®£® ¤¨áª (0=A,1=B,..)
|
||
;/////////////////////////////////////////////////////////////////////
|
||
Func_09: inc b
|
||
dec b
|
||
jr z,A39A5
|
||
dec b
|
||
jr z,A39AA ; á ª ª®£® ¤¨áª § £à. á¨á⥬ (¤«ï § £àã§ç¨ª )
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
;
|
||
A39A5: db 3Eh ; ld a,..
|
||
boot_disk:
|
||
db -1 ; ®¬¥à ¤¨áª , á ª®â®à®£® § £à㦠« áì á¨á⥬
|
||
and a
|
||
ret
|
||
|
||
; ‘®®¡é¨âì DSS á ª ª®£® ¤¨áª § £à㦠¥âáï á¨á⥬ .
|
||
; ˆá¯. § £àã§ç¨ª á¨áâ¥¬ë ¤«ï ¨¨æ. ï祩ª¨ "boot_disk".
|
||
A39AA: ld b,a
|
||
ld c,0
|
||
A39AD: push bc
|
||
ld a,c
|
||
ld bc,0008h ; ¯®«ãç¨âì £¥®¬¥âà¨î ¤¨áª
|
||
ld de,55AAh ; ᨣ âãà
|
||
rst 18h
|
||
pop bc
|
||
jr c,A39C3 ; ®è¨¡ª
|
||
ex af,af'
|
||
cp b
|
||
jr nz,A39C3
|
||
ld a,c
|
||
ld (boot_disk),a ; ¨¨æ. ï祩ªã
|
||
and a
|
||
ret
|
||
;
|
||
A39C3: inc c ; ++®¬¥à boot-¤¨áª
|
||
ld a,(last_drive) ; ®¬¥à ¯®á«. ¤¨áª á¨á⥬ë
|
||
cp c
|
||
jr nz,A39AD
|
||
scf
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡à ¡®â稪 HDD (rst 18h)
|
||
;-------------------------------------------------
|
||
A39CC: inc c
|
||
dec c ; c=0
|
||
jr z,A3A01
|
||
dec c ; c=1 open
|
||
jp z,A3BD1
|
||
dec c ; c=2 close
|
||
jp z,A3BD3
|
||
dec c ; c=3 media check (ᬥ ®á¨â¥«ï)
|
||
jp z,A3BD5
|
||
dec c ; c=4 get BPB
|
||
jp z,A3BD9
|
||
dec c ; c=5 input (ç⥨¥ ᥪâ®à®¢)
|
||
jp z,A3C27
|
||
dec c ; c=6 output (§ ¯¨áì ᥪâ®à®¢)
|
||
jp z,A3C1C
|
||
dec c ; c=7
|
||
jp z,A3BCD
|
||
dec c ; c=8 ã§ âì £¥®¬¥âà¨î ¤¨áª
|
||
jp z,A3B34
|
||
dec c ; c=9
|
||
jr z,A39FD
|
||
dec c ; c=10
|
||
jp z,A3C06
|
||
dec c ; c=11
|
||
jp z,A3C11
|
||
A39FD: ld a,1 ; ª®¤ "bad command"
|
||
scf
|
||
ret
|
||
|
||
; c=0
|
||
A3A01: push iy
|
||
ld hl,T3A4C ; â ¡«¨æ «®£.¤¨áª®¢ (16*12)
|
||
ld (D3D78),hl ; ¤à¥á áâàãªâãàë ⥪. «®£. ¤¨áª
|
||
ld ix,L4000 ; ¡ãä¥à ¯®¤ ᯨ᮪ (5 ¡ ©â)
|
||
ld c,5Fh ; ᯨ᮪ ¤¨áª®¢ëå ãáâனáâ¢
|
||
rst 08h
|
||
xor a
|
||
ld b,(ix+2) ; ª®«-¢® HDD ãáâனáâ¢
|
||
cp b
|
||
jr z,A3A25 ; ¥â ¢¨â®¢
|
||
;
|
||
ld c,80h ; ¬ áâ¥à ¯¥à¢®¬ ª «¥
|
||
A3A19: push bc
|
||
ld a,c
|
||
ld (D3D6F),a ; ®¬¥à ¤¥¢ ©á (80h/81h ¬ áâ¥à/á«¥©¢)
|
||
call A3C9A ; ã§ âì «®£. ¤¨áª¨ ¢¨â ¨ á®§¤ âì ¨å â ¡«¨æë
|
||
pop bc
|
||
inc c ; á«¥©¢ ¯¥à¢®¬ ª «¥
|
||
djnz A3A19
|
||
;
|
||
A3A25: pop iy
|
||
ld hl,(D3D78) ; ¤à¥á áâàãªâãàë ⥪. «®£. ¤¨áª
|
||
ld de,T3A4C ; â ¡«¨æ «®£.¤¨áª®¢ (16*12)
|
||
xor a ; áç¥â稪 «®£. ¤¨áª®¢
|
||
sbc hl,de
|
||
ret z ; áâàãªâãà ¯¥à¢®£® «®£. ¤¨áª
|
||
ld de,16 ; à §¬¥à áâàãªâãàë «®£. ¤¨áª
|
||
inc a
|
||
sbc hl,de
|
||
jr nz,$-3 ; ¯¥à¥©â¨ áâàãªâãàã ¯¥à¢®£® «®£. ¤¨áª
|
||
and a ; a=ª®«-¢® «®£.¤¨áª®¢
|
||
ret
|
||
|
||
|
||
; ¥â ®¡à 饨ï
|
||
;L3A3B: ld a,0FFh
|
||
;inc hl
|
||
;cp (hl)
|
||
;ret nz
|
||
;inc hl
|
||
;cp (hl)
|
||
;ret nz
|
||
;inc hl
|
||
;cp (hl)
|
||
;ret nz
|
||
;inc hl
|
||
;cp (hl)
|
||
;ret nz
|
||
;inc hl
|
||
;cp (hl)
|
||
;ret
|
||
|
||
|
||
; ’ ¡«¨æ «®£. ¤¨áª®¢ „Ž‘-
|
||
;
|
||
; +0 - ®¬¥à ¤¥¢ ©á (80h,...)
|
||
; +1,+2,+3,+4 - ¡á. ®¬¥à ç. ᥪâ®à «®£. ¤¨áª
|
||
; +5,+6,+7,+8 - à §¬¥à «®£. ¤¨áª (ç¨á«® ᥪâ®à®¢)
|
||
;
|
||
;
|
||
T3A4C: ds 16*12 ; 192 C..N
|
||
|
||
|
||
; ¢å®¤: a=0..11 (¨¤¥ªá)
|
||
; ¢ë室: ix,hl - ¡á. ®¬¥à ç. ᥪâ®à
|
||
; a - ®¬¥à ¤¥¢ ©á (80h,...)
|
||
A3B0C: push de
|
||
push bc
|
||
push hl
|
||
ld l,a
|
||
ld h,0
|
||
add hl,hl ;1+1=2
|
||
add hl,hl ;2+2=4
|
||
add hl,hl ;4+4=8
|
||
add hl,hl ;8+8=16
|
||
ex de,hl
|
||
ld iy,T3A4C ; â ¡«¨æ «®£.¤¨áª®¢ (16*12)
|
||
add iy,de
|
||
ld c,(iy+1) ; ¡á®«îâë© ®¬¥à
|
||
ld b,(iy+2) ; ç «ì®£® ᥪâ®à
|
||
ld e,(iy+3) ; à §¤¥«
|
||
ld d,(iy+4) ;
|
||
pop hl
|
||
add ix,bc
|
||
adc hl,de
|
||
ld a,(iy+0) ; ⨯ ¤¥¢ ©á (80h,...)
|
||
pop bc
|
||
pop de
|
||
ret
|
||
|
||
;c=8. “§ âì £¥®¬¥âà¨î ¤¨áª (CHS)
|
||
A3B34: bit 7,b
|
||
jr nz,A3B49
|
||
inc b
|
||
dec b ; b=0
|
||
jr z,A3B6F
|
||
dec b ; b=1
|
||
jr z,A3B5C
|
||
dec b ; b=2
|
||
jr z,A3B60
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
;
|
||
A3B49: res 7,b
|
||
inc b
|
||
dec b
|
||
jr z,A3B65
|
||
dec b
|
||
jr z,A3B67
|
||
dec b
|
||
jr z,A3B6B
|
||
ld a,1 ; ª®¤ "bad command"
|
||
scf
|
||
ret
|
||
;
|
||
A3B5C: ld a,0Bh ; ª®¤ "failure"
|
||
scf
|
||
ret
|
||
;
|
||
A3B60: ld b,l
|
||
jp A3C32
|
||
;
|
||
A3B65: and a
|
||
ret
|
||
;
|
||
A3B67: ld a,0Bh ; ª®¤ "failure"
|
||
scf
|
||
ret
|
||
;
|
||
A3B6B: ld a,0Bh ; ª®¤ "failure"
|
||
scf
|
||
ret
|
||
|
||
;c=8. “§ âì £¥®¬¥âà¨î ¤¨áª (CHS)
|
||
;b=0.
|
||
; ¢å®¤: a - ¨¤¥ªá (0..11)
|
||
A3B6F: ex de,hl
|
||
ld bc,55AAh ; ᨣ âãà à §¤¥«
|
||
and a
|
||
sbc hl,bc
|
||
ld l,a ; ¨¤¥ªá à §¤¥«
|
||
ld a,0Bh ; ª®¤ "failure"
|
||
scf
|
||
ret nz
|
||
push iy
|
||
ld h,0
|
||
add hl,hl ; *16
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,hl
|
||
ld b,h
|
||
ld c,l
|
||
ld iy,T3A4C ; â ¡«¨æ «®£.¤¨áª®¢ (16*12)
|
||
add iy,bc
|
||
ld e,(iy+5) ; à §¬¥à à §¤¥« (ç¨á«® ᥪâ®à®¢)
|
||
ld d,(iy+6) ;
|
||
ld l,(iy+7) ; áâ. à §àï¤
|
||
ld h,(iy+8) ;
|
||
ld a,(iy+0) ; ⨯ ¤¥¢ ©á (80h,...)
|
||
ld c,a
|
||
ld iy,LC1C0 ; LC000+01BEh+2 ??
|
||
and 0Fh
|
||
jr z,A3BA7 ;
|
||
ld iy,LC1C8 ; LC000+01BEh+0Ah ??
|
||
A3BA7: in a,(0E2h)
|
||
push af
|
||
ld a,0FEh ; ®¬¥à áâà.
|
||
out (0E2h),a
|
||
ld a,(iy+0)
|
||
exx
|
||
ld l,(iy+3) ;
|
||
ld h,(iy+4) ;
|
||
ld e,(iy+2) ;
|
||
ld d,0
|
||
ld b,d
|
||
ld c,(iy+1) ;
|
||
exx
|
||
ex af,af'
|
||
pop af
|
||
out (0E2h),a
|
||
ld a,c
|
||
ex af,af'
|
||
pop iy
|
||
and a
|
||
ret
|
||
|
||
|
||
A3BCD: ld a,1 ; ª®¤ "bad command"
|
||
and a
|
||
ret
|
||
|
||
A3BD1: xor a
|
||
ret
|
||
|
||
A3BD3: xor a
|
||
ret
|
||
|
||
A3BD5: ld a,-1
|
||
and a
|
||
ret
|
||
|
||
|
||
|
||
A3BD9: push iy
|
||
push de
|
||
ld l,a
|
||
ld h,0
|
||
add hl,hl ; *16
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,hl
|
||
ld b,h
|
||
ld c,l
|
||
ld iy,T3A4C ; â ¡«¨æ «®£.¤¨áª®¢ (16*12)
|
||
add iy,bc
|
||
ld e,(iy+1) ; ¬«. à §àï¤ ®¬¥à ᥪâ®à
|
||
ld d,(iy+2)
|
||
ld l,(iy+3) ; áâ. à §àï¤
|
||
ld h,(iy+4)
|
||
db 0DDh
|
||
ld l,e
|
||
db 0DDh
|
||
ld h,d
|
||
ld a,(iy+0) ; ⨯ ¤¥¢ ©á (80h,...)
|
||
pop de ; ¡ãä¥à
|
||
pop iy
|
||
ld bc,0155h ; ¯à®ç¨â âì ®¤¨ ᥪâ®à
|
||
rst 08h
|
||
ret
|
||
|
||
A3C06: push iy
|
||
call A3B0C ; ¯®«ãç¨âì ¡á. ®¬¥à ç. ᥪâ®à
|
||
ld c,52h ; ç⥨¥ ᥪâ®à®¢ ¢ § ¤. ¡«®ª ¯ ¬ïâ¨
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
A3C11: push iy
|
||
call A3B0C ; ¯®«ãç¨âì ¡á. ®¬¥à ç. ᥪâ®à
|
||
ld c,53h ; ?
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
A3C1C: push iy
|
||
call A3B0C ; ¯®«ãç¨âì ¡á. ®¬¥à ç. ᥪâ®à
|
||
ld c,56h ; § ¯¨á âì "b" ᥪâ®à®¢
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
A3C27: push iy
|
||
call A3B0C ; ¯®«ãç¨âì ¡á. ®¬¥à ç. ᥪâ®à
|
||
ld c,55h ; ¯à®ç¨â âì "b" ᥪâ®à®¢
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
A3C32: push iy
|
||
call A3B0C ; ¯®«ãç¨âì ¡á. ®¬¥à ç. ᥪâ®à
|
||
ld c,54h ; ¯à®¢¥àª ᥪâ®à®¢ (¥ à ¡®â ¥â?)
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
|
||
; «®£. ¤¨áª à §¤¥«
|
||
A3C3D: ld e,(iy+8) ; ¡á®«îâë© («®£.) ®¬¥à
|
||
ld d,(iy+9) ; ç «ì®£® ᥪâ®à
|
||
ld l,(iy+10) ; à §¤¥«
|
||
ld h,(iy+11) ;
|
||
ld ix,(D3D70) ; ¬«.à §àï¤
|
||
add ix,de
|
||
ld de,(D3D72) ; áâ.à §àï¤
|
||
adc hl,de
|
||
db 0DDh
|
||
ld d,h
|
||
db 0DDh
|
||
ld e,l
|
||
ld ix,(D3D78) ; ¤à¥á áâàãªâãàë ⥪. «®£. ¤¨áª
|
||
ld (ix+1),e
|
||
ld (ix+2),d
|
||
ld (ix+3),l
|
||
ld (ix+4),h
|
||
;
|
||
ld e,(iy+12) ; à §¬¥à à §¤¥« (ç¨á«® ᥪâ®à®¢)
|
||
ld d,(iy+13) ;
|
||
ld l,(iy+14) ; áâ. à §àï¤
|
||
ld h,(iy+15) ;
|
||
ld (ix+5),e
|
||
ld (ix+6),d
|
||
ld (ix+7),l
|
||
ld (ix+8),h
|
||
ld a,(D3D6F) ; ®¬¥à ¤¥¢ ©á (80h/81h ¬ áâ¥à/á«¥©¢)
|
||
ld (ix+0),a
|
||
ld de,16 ; à §¬¥à â ¡«¨æë «®£.¤¨áª ?
|
||
add ix,de
|
||
ld (D3D78),ix ; ¤à¥á áâàãªâãàë á«¥¤. «®£. ¤¨áª
|
||
A3C90: ld de,16 ; à §¬¥à à §¤¥«
|
||
add iy,de
|
||
pop bc
|
||
djnz A3CD3 ; ¯à®¢¥à¨âì á«¥¤. à §¤¥«
|
||
and a ; ª®¥æ à §¤¥«®¢ ¢ MBR
|
||
ret
|
||
|
||
|
||
;----------------------------------------------------
|
||
; “§ âì «®£. ¤¨áª¨ ¢¨â ¨ á®§¤ âì ¨å â ¡«¨æë
|
||
;----------------------------------------------------
|
||
A3C9A: in a,(0E2h) ; á®åà. áâà.
|
||
push af
|
||
ld a,0FFh ; ®¬¥à áâà.
|
||
out (0E2h),a
|
||
call A3CA8
|
||
pop af
|
||
out (0E2h),a ; ¢®ááâ. áâà.
|
||
ret
|
||
|
||
A3CA8: ld ix,0
|
||
ld de,0
|
||
ld (D3D74),de
|
||
ld (D3D76),ix
|
||
; 横«
|
||
A3CB7: ld (D3D70),de ; ¬«.à §àï¤ ®¬¥à ᥪâ®à
|
||
ld (D3D72),ix ; áâ.à §àï¤
|
||
call read_one_sector ; ¯à®ç¨â âì ®¤¨ ᥪâ®à (MBR, 0-© ᥪâ®à)
|
||
ld hl,(LC000+510) ; ª®¥æ ᥪâ®à
|
||
ld de,0AA55h ; ᨣ âãà â ¡«¨æë à §¤¥«®¢
|
||
and a
|
||
sbc hl,de
|
||
jr nz,A3D1A ; ¥ § ª®¬ë© à §¤¥«, ¢ë©â¨
|
||
ld iy,LC000+01BEh ; ®¯¨á ⥫ì 1-£® à §¤¥«
|
||
ld b,4 ; ¬ ªá. ç¨á«® à §¤¥«®¢ ¢¨â
|
||
A3CD3: push bc
|
||
; â¥áâ à áè. à §¤¥«
|
||
ld a,(iy+4) ; ¡ ©â-¨¤¥â¨ä. à §¤¥«
|
||
cp 5 ; "<22> áè¨à¥ë©" 0-2ƒ¡ (MS-DOS 3.3)
|
||
jr nz,A3CFE
|
||
; á«¥¤. à §¤¥«
|
||
A3CDB: push iy
|
||
ld de,(D3D70) ; ¬«.à §àï¤ ®¬¥à ᥪâ®à
|
||
ld ix,(D3D72) ; áâ.à §àï¤
|
||
push de
|
||
push ix
|
||
call next_partition ; á«¥¤. à §¤¥«
|
||
pop ix
|
||
pop de
|
||
ld (D3D70),de ; ¬«.à §àï¤ ®¬¥à ᥪâ®à
|
||
ld (D3D72),ix ; áâ.à §àï¤
|
||
call read_one_sector ; ¯à®ç¨â âì ®¤¨ ᥪâ®à
|
||
pop iy
|
||
jr A3C90
|
||
;
|
||
; â¥áâ à áè. à §¤¥«
|
||
A3CFE: cp 0Fh ; "<22> áè¨à¥ë©" 0-2ƒ¡ (Win95)
|
||
jr z,A3CDB ; á«¥¤. à §¤¥«
|
||
; â¥áâ ®á. à §¤¥«
|
||
cp 0Eh ; "Žá®¢®©" 32Œ¡-2ƒ¡ FAT16 (Win95)
|
||
jp z,A3C3D ; «®£. ¤¨áª à §¤¥«
|
||
cp 6 ; "Žá®¢®©" 32Œ¡-2ƒ¡ FAT16 (MS-DOS 4.0)
|
||
jp z,A3C3D
|
||
cp 4 ; "Žá®¢®©" 16Œ¡-32Œ¡ FAT16 (MS-DOS 3.0)
|
||
jp z,A3C3D
|
||
cp 1 ; "Žá®¢®©" 0Œ¡-15Œ¡ FAT12 (MS-DOS 2.0)
|
||
jp z,A3C3D
|
||
call test_others; ; ¯®áâ ¢¨«
|
||
jr z,A3CDB; ; á«¥¤. à §¤¥«
|
||
pop bc
|
||
or a
|
||
ret z ; ª®¥æ à §¤¥«®¢
|
||
A3D1A: scf ; ¥ § ª®¬ë© à §¤¥«
|
||
ret
|
||
|
||
; ¯¥à¥©â¨ á«¥¤. à §¤¥«
|
||
next_partition:
|
||
ld hl,(D3D74)
|
||
ld de,(D3D76)
|
||
ld a,l
|
||
or h
|
||
or e
|
||
or d
|
||
ld e,(iy+8) ; ¡á®«îâë© («®£.) ®¬¥à
|
||
ld d,(iy+9) ; ç «ì®£® ᥪâ®à
|
||
ld l,(iy+10) ; à §¤¥«
|
||
ld h,(iy+11) ;
|
||
jr nz,A3D44
|
||
ld (D3D74),de
|
||
ld (D3D76),hl
|
||
ld ix,(D3D76)
|
||
jp A3CB7
|
||
;
|
||
A3D44: ld ix,(D3D74) ; ¬«. à §àï¤
|
||
add ix,de
|
||
push ix
|
||
ld de,(D3D76) ; áâ. à §àï¤
|
||
adc hl,de
|
||
push hl
|
||
pop ix
|
||
pop de
|
||
jp A3CB7
|
||
|
||
; â¥áâ ¤à㣨¥ ⨯ë à §¤¥«®¢
|
||
; ¢å®¤: a - ⨯ à §¤¥«
|
||
; ¢ë室: Z - á«¥¤. à §¤¥«
|
||
test_others:
|
||
cp 0Bh ; "Žá®¢®©" 512Œ¡-2’¡ FAT32 (OSR2)
|
||
ret z
|
||
cp 7 ; NTFS
|
||
ret z
|
||
cp 82h ; Linux swap
|
||
ret z
|
||
cp 83h ; Linux
|
||
ret z
|
||
cp 0EBh ; BeOS
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; —⥨¥ ®¤®£® ᥪâ®à ¢ ¡ãä¥à 0C000h
|
||
;-------------------------------------------------
|
||
read_one_sector:
|
||
push iy
|
||
ld ix,(D3D70) ; ¬«.à §àï¤ ®¬¥à ᥪâ®à
|
||
ld hl,(D3D72) ; áâ.à §àï¤
|
||
ld de,LC000 ; ¡ãä¥à
|
||
ld bc,0155h ; ¯à®ç¨â âì ®¤¨ ᥪâ®à
|
||
ld a,(D3D6F) ; ®¬¥à ¤¥¢ ©á (80h/81h ¬ áâ¥à/á«¥©¢)
|
||
rst 08h
|
||
pop iy
|
||
ret
|
||
|
||
|
||
D3D6F: db 0 ; ®¬¥à ¤¥¢ ©á (80h/81h ¬ áâ¥à/á«¥©¢)
|
||
;
|
||
D3D70: dw 0 ; ¬«.à §àï¤ ®¬¥à ᥪâ®à
|
||
D3D72: dw 0 ; áâ.à §àï¤
|
||
D3D74: dw 0
|
||
D3D76: dw 0
|
||
;
|
||
D3D78: dw T3A4C ; ¤à¥á áâàãªâãàë ⥪. «®£. ¤¨áª
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡à ¡®â稪 FDD (rst 18h)
|
||
;-------------------------------------------------
|
||
A3D7A: inc c
|
||
dec c ; c=0
|
||
jr z,A3DA7
|
||
dec c ; c=1
|
||
jr z,A3DAB
|
||
dec c ; c=2
|
||
jr z,A3DAF
|
||
dec c ; c=3
|
||
jr z,A3DB1
|
||
dec c ; c=4
|
||
jr z,A3DB5
|
||
dec c ; c=5
|
||
jr z,A3DDB
|
||
dec c ; c=6
|
||
jr z,A3DDF
|
||
dec c ; c=7
|
||
jp z,A3E5A
|
||
dec c ; c=8
|
||
jr z,A3DE3
|
||
ld a,EINVFNC ; ª®¤ "¥¢¥àë© ®¬¥à äãªæ¨¨"
|
||
scf
|
||
ret
|
||
; c=0
|
||
A3DA7: ld a,2
|
||
and a
|
||
ret
|
||
; c=1
|
||
A3DAB: ld c,51h ; á¡à. ª®â஫«¥à ¨ áâà. ¤¨áª
|
||
rst 08h
|
||
ret
|
||
; c=2
|
||
A3DAF: xor a
|
||
ret
|
||
; c=3
|
||
A3DB1: ld a,-1
|
||
and a
|
||
ret
|
||
; c=4
|
||
A3DB5: ld ix,0 ; ¬«. à §àï¤ ®¬¥à ᥪâ®à
|
||
ld hl,0 ; áâ. à §àï¤
|
||
push de
|
||
push af
|
||
ld bc,0155h ; ¯à®ç¨â âì ®¤¨ ᥪâ®à
|
||
rst 08h
|
||
pop de
|
||
pop hl
|
||
ret c
|
||
ld bc,24
|
||
add hl,bc
|
||
ld e,(hl)
|
||
push de
|
||
ld a,d
|
||
ld c,58h ; ¯®«ãç¨âì ¯ à ¬. ®á¨â¥«ï
|
||
rst 08h
|
||
ld a,h
|
||
pop hl
|
||
push hl
|
||
ld h,a
|
||
pop af
|
||
ld c,59h ; ãáâ. ¯ à ¬. ®á¨â¥«ï
|
||
rst 08h
|
||
xor a
|
||
ret
|
||
|
||
; c=5
|
||
A3DDB: ld c,55h ; ç⥨¥ á ¤¥¢ ©á
|
||
rst 08h
|
||
ret
|
||
; c=6
|
||
A3DDF: ld c,56h ; § ¯¨áì ¤¥¢ ©á
|
||
rst 08h
|
||
ret
|
||
; c=8
|
||
A3DE3: bit 7,b
|
||
jr nz,A3DF0
|
||
inc b
|
||
dec b
|
||
jr z,A3DFB
|
||
ld a,1 ; ª®¤ "bad command"
|
||
scf
|
||
ret
|
||
;
|
||
A3DF0: res 7,b
|
||
inc b
|
||
dec b
|
||
jr z,A3E41
|
||
ld a,1 ; ª®¤ "bad command"
|
||
scf
|
||
ret
|
||
;
|
||
A3DFB: ex de,hl
|
||
ld bc,55AAh ; ᨣ âãà
|
||
and a
|
||
sbc hl,bc
|
||
ld l,a
|
||
ld a,0Bh ; ª®¤ "failur"
|
||
scf
|
||
ret nz
|
||
ld a,l
|
||
and 0Fh
|
||
push af
|
||
ld c,58h ; ¯®«ãç¨âì ¯ à ¬. ®á¨â¥«ï
|
||
rst 08h
|
||
jr c,A3E3C
|
||
push hl
|
||
push de
|
||
ld a,h
|
||
ld h,0
|
||
add hl,hl
|
||
dec a
|
||
jr nz,$-2
|
||
ld b,h
|
||
ld c,l
|
||
ex af,af'
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
A3E20: ex af,af'
|
||
add hl,bc
|
||
adc a,0
|
||
dec de
|
||
ex af,af'
|
||
ld a,d
|
||
or e
|
||
jr nz,A3E20
|
||
ex af,af'
|
||
ld e,a
|
||
ex de,hl
|
||
exx
|
||
pop de
|
||
pop hl
|
||
pop af
|
||
ex af,af'
|
||
ld a,b
|
||
ld c,l
|
||
ld b,0
|
||
ld l,h
|
||
ld h,b
|
||
ex de,hl
|
||
exx
|
||
and a
|
||
ret
|
||
;
|
||
A3E3C: pop af
|
||
ld a,2 ; ª®¤ "bad drive number"
|
||
scf
|
||
ret
|
||
;
|
||
A3E41: push af
|
||
exx
|
||
ex de,hl
|
||
ld h,l
|
||
ld l,c
|
||
pop af
|
||
and 0Fh
|
||
push af
|
||
push hl
|
||
push de
|
||
ld c,58h ; ¯®«ãç¨âì ¯ à ¬. ®á¨â¥«ï
|
||
rst 08h
|
||
pop de
|
||
pop hl
|
||
jr c,A3E3C
|
||
pop af
|
||
ld c,59h ; ãáâ. ¯ à ¬. ®á¨â¥«ï
|
||
rst 08h
|
||
ret c
|
||
and a
|
||
ret
|
||
; c=7
|
||
A3E5A: ld a,1
|
||
and a
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡à ¡®â稪 RAM-¤¨áª®¢
|
||
;-------------------------------------------------
|
||
A3E5E: inc c
|
||
dec c ; c=0
|
||
jp z,A3EF5
|
||
dec c ; c=1
|
||
jr z,A3E7F
|
||
dec c ; c=2
|
||
jr z,A3E81
|
||
dec c ; c=3
|
||
jr z,A3E83
|
||
dec c ; c=4
|
||
jr z,A3E87
|
||
dec c ; c=5
|
||
jr z,A3E93
|
||
dec c ; c=6
|
||
jr z,A3EC4
|
||
ld a,1 ; ª®¤ "bad command"
|
||
scf
|
||
ret
|
||
; c=1
|
||
A3E7F: xor a
|
||
ret
|
||
; c=2
|
||
A3E81: xor a
|
||
ret
|
||
; c=3
|
||
A3E83: ld a,-1
|
||
and a
|
||
ret
|
||
; c=4
|
||
A3E87: ld ix,0
|
||
ld hl,0
|
||
ld b,1
|
||
; c=5
|
||
A3E93: push bc
|
||
push ix
|
||
push hl
|
||
push bc
|
||
call A3F35
|
||
pop bc
|
||
ld ix,512 ; à §¬¥à ᥪâ®à ?
|
||
A3EA0: push bc
|
||
push ix
|
||
call A3F71
|
||
pop ix
|
||
pop bc
|
||
djnz A3EA0
|
||
pop hl
|
||
pop ix
|
||
pop bc
|
||
xor a
|
||
cp b
|
||
ld c,b
|
||
ld b,a
|
||
jr z,A3EBC
|
||
add ix,bc
|
||
ld c,b
|
||
adc hl,bc
|
||
xor a
|
||
ret
|
||
;
|
||
A3EBC: inc b
|
||
add ix,bc
|
||
ld b,c
|
||
adc hl,bc
|
||
xor a
|
||
ret
|
||
; c=6
|
||
A3EC4: push bc
|
||
push ix
|
||
push hl
|
||
push bc
|
||
call A3F35
|
||
pop bc
|
||
ld ix,512 ; à §¬¥à ᥪâ®à ?
|
||
A3ED1: push bc
|
||
push ix
|
||
call A3FAD
|
||
pop ix
|
||
pop bc
|
||
djnz A3ED1
|
||
pop hl
|
||
pop ix
|
||
pop bc
|
||
xor a
|
||
cp b
|
||
ld c,b
|
||
ld b,a
|
||
jr z,A3EED
|
||
add ix,bc
|
||
ld c,b
|
||
adc hl,bc
|
||
xor a
|
||
ret
|
||
;
|
||
A3EED: inc b
|
||
add ix,bc
|
||
ld b,c
|
||
adc hl,bc
|
||
xor a
|
||
ret
|
||
|
||
; c=0. <20>à®áª ¨à®¢ âì ç¨á«® RAM-¤¨áª®¢.
|
||
A3EF5: ;ld hl,0200h ; ##
|
||
; ld a,80h
|
||
;A3EFA: srl a ; / 2 (¬«.¡¨â ¢ CF)
|
||
; rr h ; 横«. ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
|
||
; jr nc,A3EFA
|
||
; ¢ë室: h=0, a=20h
|
||
ld a,20h ; ¯®áâ ¢¨«
|
||
ld (D3F70),a
|
||
ld de,T3F25 ; â ¡«¨æ ®¬¥à®¢ (0..15) RAM-¤¨áª®¢
|
||
ld bc,00CEh ; ¯®«ãç¨âì id ¡«®ª , § ç. RAM-¤¨áª
|
||
A3F09: push bc
|
||
ld a,b ; ®¬¥à RAM-¤¨áª 0..15
|
||
rst 08h
|
||
or a
|
||
jr z,A3F11 ; ¡«®ª ¥ § ç¥
|
||
ld (de),a ; id ¡«®ª ¢ â ¡«¨æã
|
||
inc de
|
||
A3F11: pop bc
|
||
inc b ; ++®¬¥à ram-¤¨áª
|
||
ld a,15+1 ; ¬ ªá. ®¬¥à + 1
|
||
cp b
|
||
jr nz,A3F09
|
||
; ¢ë室 § ¯à¥¤¥«ë 0..15 ¤¨ ¯ §® (¥â ᢮¡. ram-¤¨áª®¢)
|
||
ld hl,T3F25 ; â ¡«¨æ ®¬¥à®¢ (0..15) RAM-¤¨áª®¢
|
||
ex de,hl
|
||
and a
|
||
sbc hl,de
|
||
ld a,l ; ç¨á«® RAM-¤¨áª®¢ (0=¥â)
|
||
;ld hl,T3FEB; ; 㦥 ?
|
||
and a
|
||
ret
|
||
|
||
|
||
; ’ ¡«¨æ ®¬¥à®¢ (0..15) RAM-¤¨áª®¢
|
||
T3F25: db -1,-1,-1,-1,-1,-1,-1,-1
|
||
db -1,-1,-1,-1,-1,-1,-1,-1
|
||
|
||
|
||
|
||
A3F35: ld bc,T3F25
|
||
add a,c
|
||
ld c,a
|
||
ld a,0
|
||
adc a,b
|
||
ld b,a
|
||
ld a,(bc)
|
||
ex af,af'
|
||
db 0DDh
|
||
ld b,h
|
||
db 0DDh
|
||
ld c,l
|
||
ld a,(D3F70)
|
||
A3F47: rrca ; 横«. ᤢ¨£ ¢¯à ¢® (¬«.à §àï¤ ¢ CF)
|
||
jr c,A3F54
|
||
rr h
|
||
rr l
|
||
rr b
|
||
rr c
|
||
jr A3F47
|
||
;
|
||
A3F54: ld b,c ; «®£. ®¬¥à áâà ¨æë
|
||
ld c,0C4h ; ¯®«ãç¨âì 䨧. ®¬¥à áâà ¨æë ¡«®ª
|
||
ex af,af'
|
||
rst 08h
|
||
ex af,af'
|
||
ld a,(D3F70)
|
||
ld c,a
|
||
dec c
|
||
db 0DDh
|
||
ld a,l
|
||
and c
|
||
inc a
|
||
ld hl,LC000
|
||
ld bc,512
|
||
sbc hl,bc
|
||
add hl,bc
|
||
dec a
|
||
jr nz,$-2
|
||
ret
|
||
|
||
D3F70: db 0
|
||
|
||
|
||
A3F71: ld a,d
|
||
cp 0A0h
|
||
ld c,0E2h
|
||
set 6,h
|
||
jr c,A3F7E
|
||
ld c,0A2h
|
||
res 7,h
|
||
A3F7E: in a,(c)
|
||
ex af,af'
|
||
di
|
||
out (c),a
|
||
db 0DDh
|
||
ld b,h
|
||
db 0DDh
|
||
ld h,c
|
||
db 0DDh
|
||
ld c,l
|
||
ldir
|
||
ex af,af'
|
||
db 0DDh
|
||
ld c,h
|
||
out (c),a
|
||
ld a,h
|
||
and 7Fh
|
||
ei
|
||
ret nz
|
||
ld c,0E2h
|
||
in b,(c)
|
||
ld a,0FEh
|
||
out (c),a
|
||
ex af,af'
|
||
db 0DDh
|
||
ld h,0C2h
|
||
db 0DDh
|
||
ld l,a
|
||
ld a,(ix+0)
|
||
ex af,af'
|
||
out (c),b
|
||
ld h,0C0h
|
||
ret
|
||
|
||
|
||
A3FAD: ld a,d
|
||
cp 0A0h
|
||
ld c,0E2h
|
||
set 6,h ; 00->40h
|
||
jr c,A3FBA
|
||
ld c,0A2h
|
||
res 7,h
|
||
A3FBA: in a,(c)
|
||
ex af,af'
|
||
di
|
||
out (c),a
|
||
db 0DDh
|
||
ld b,h
|
||
db 0DDh
|
||
ld h,c
|
||
db 0DDh
|
||
ld c,l
|
||
ex de,hl
|
||
ldir
|
||
ex de,hl
|
||
ex af,af'
|
||
db 0DDh
|
||
ld c,h
|
||
out (c),a
|
||
ld a,h
|
||
and 7Fh
|
||
ei
|
||
ret nz
|
||
ld c,0E2h
|
||
in b,(c) ; á®åà. ¯®àâ
|
||
ld a,0FEh ; ®¬¥à áâà.
|
||
out (c),a
|
||
ex af,af'
|
||
db 0DDh
|
||
ld h,0C2h
|
||
db 0DDh
|
||
ld l,a
|
||
ld a,(ix+0)
|
||
ex af,af'
|
||
out (c),b ; ¢®ááâ. ¯®àâ
|
||
ld h,0C0h
|
||
ret
|
||
|
||
|
||
include "cursor.asm"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; ¢å®¤: de=᪥-ª®¤/ascii-ª®¤ (d - á¡à. 7-© ¡¨â)
|
||
;
|
||
;TSR: ld a,b
|
||
; and 00110000b ; ¡¨âë Ctrl+Alt
|
||
; cp 00110000b ; 30h
|
||
; jp nz,A06DD ; á®åà. de,bc ¢ ª®«ìæ. ¡ãä¥à¥ ª« ¢ë
|
||
; ; de=᪥-ª®¤/ascii-ª®¤
|
||
; ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢¨ âãàë
|
||
; ld a,(D0641)
|
||
; ld (D0640),a
|
||
; ret;
|
||
; ;
|
||
; res 7,d
|
||
; ld a,d
|
||
; ld e,a
|
||
; ld d,0 ; de=¨¤¥ªá ᪥-ª®¤ (hot-ª« ¢¨è¨)
|
||
; ; ¢ª«. áâà. á â ¡«¨æ¥©
|
||
; ld a,3 ; «®£. ®¬¥à ¤®á-¡ ª¨
|
||
; call set_dos_page ; ¯®¤ª«. ¤®á-¡ ªã ¢ 0C000h
|
||
; ld (tsr2+1),a ; áâ à ï ¡ ª 0E2h ¯®àâ
|
||
; ;
|
||
; ld hl,0C000h
|
||
; add hl,de ; ¤à¥á í«¥¬¥â ®¡à ¡. hot-ª« ¢¨è¨
|
||
; ld a,(hl)
|
||
; or a
|
||
; jr z,tsr1 ; ®¡à ¡. ¥ ®¯à¥¤¥«¥
|
||
; ld (tsr2+1),a ; áâà. ®¡à ¡®â稪
|
||
; inc hl
|
||
; ld a,(hl) ; ¤à¥á ®¡à ¡®â稪 hot-ª« ¢¨è¨
|
||
; inc hl
|
||
; ld h,(hl)
|
||
; ld l,a
|
||
; ld (tsr4+1),hl ; ¤à¥á ®¡à ¡®â稪
|
||
; jr tsr3
|
||
; ;
|
||
;tsr1:
|
||
;tsr2: ld a,-1
|
||
; out (0E2h),a ; ¢®ááâ. ¯®àâ
|
||
; ret
|
||
; ;
|
||
;tsr3: call tsr1 ; ¢ª«. áâà ¨æã ®¡à ¡®â稪
|
||
;tsr4: jp 0 ; ¯¥à¥©â¨ ®¡à ¡®â稪
|
||
|
||
|
||
|
||
|
||
; à ¡. ¡ãä¥à, ¨á¯. 16 ¡ ©â (¯/¯ à ¬-¤¨áª®¢)
|
||
;T3FEB: db 0
|