mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
bugs
This commit is contained in:
parent
2f0db9fa98
commit
0af59044c8
@ -93,6 +93,8 @@ GOOD_DRIVE: LD DE,#8200 ;!HARDCODE
|
|||||||
LD HL,(FCLUSTR)
|
LD HL,(FCLUSTR)
|
||||||
LD DE,#C000
|
LD DE,#C000
|
||||||
CALL FLOAD ; § £à㧪
|
CALL FLOAD ; § £à㧪
|
||||||
|
|
||||||
|
|
||||||
DI
|
DI
|
||||||
XOR A
|
XOR A
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
@ -434,6 +436,84 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
|||||||
INC A
|
INC A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
; ; HL - CLUSTER
|
||||||
|
; ; DE - ADDRESS
|
||||||
|
; ;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
||||||
|
; FLOAD: LD (READMEM),DE
|
||||||
|
; .LD_FILE: PUSH HL ; system.dos first cluster
|
||||||
|
; CALL NSECTOR ; Cluster to Sector
|
||||||
|
; LD DE,(READMEM)
|
||||||
|
; LD A,(BOOT.SectorsPerCluster)
|
||||||
|
; CP #20 + 1 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||||
|
; LD C,BIOS.DRV_READ_LONG
|
||||||
|
; JR C,.SMALL_CLUSTER
|
||||||
|
; LD A,(BANKDOS)
|
||||||
|
; EX AF,AF'
|
||||||
|
; ;LD BC,#20*256 + BIOS.DRV_READ_LONG
|
||||||
|
; LD B,#20 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||||
|
; .set_drv: LD A,(DRIVE)
|
||||||
|
; RST ToBIOS_18
|
||||||
|
; JP C,GOOD_DRIVE.NoShell
|
||||||
|
; POP HL
|
||||||
|
; ; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||||
|
; ;AND A
|
||||||
|
; ;RET
|
||||||
|
; LD A,(BIG_SHELL)
|
||||||
|
; OR A
|
||||||
|
; RET Z
|
||||||
|
; ;
|
||||||
|
; XOR A
|
||||||
|
; LD (BIG_SHELL),A
|
||||||
|
; PUSH HL
|
||||||
|
; CALL NSECTOR
|
||||||
|
; LD DE,#20 ; !HARDCODE ª®«-¢® ¯à®ç¨â ëå ᥪâ®à®¢
|
||||||
|
; AND A
|
||||||
|
; ADD IX,DE
|
||||||
|
; JR NC,.no_inc_hl
|
||||||
|
; INC HL
|
||||||
|
; .no_inc_hl: LD BC,SUBLOAD_SIZE*256 + BIOS.DRV_READ ; !HARDCODE ª®«-¢® „ާ £à㦠¥¬ëå ᥪâ®à®¢
|
||||||
|
; LD DE,#4000
|
||||||
|
; JR .set_drv
|
||||||
|
; ;
|
||||||
|
; .SMALL_CLUSTER: LD B,A
|
||||||
|
; ;LD C,BIOS.DRV_READ_LONG
|
||||||
|
; LD A,(BANKDOS)
|
||||||
|
; EX AF,AF'
|
||||||
|
; LD A,(DRIVE)
|
||||||
|
; RST ToBIOS_18
|
||||||
|
; JP C,GOOD_DRIVE.NoShell
|
||||||
|
; ;
|
||||||
|
; LD HL,(READMEM)
|
||||||
|
; LD DE,(CLU_LEN)
|
||||||
|
; ADD HL,DE
|
||||||
|
; LD (READMEM),HL
|
||||||
|
; ; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||||
|
; ;POP HL
|
||||||
|
; ;RET C
|
||||||
|
; CALL C,.more_than_1
|
||||||
|
; POP HL
|
||||||
|
; RET C
|
||||||
|
; ;
|
||||||
|
; CALL R_F_FAT ; next cluster in chain
|
||||||
|
; RET C
|
||||||
|
; EX DE,HL
|
||||||
|
; JP .LD_FILE
|
||||||
|
; ; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||||
|
; .more_than_1: LD A,(BIG_SHELL)
|
||||||
|
; OR A
|
||||||
|
; SCF
|
||||||
|
; RET Z
|
||||||
|
; IN A,(SLOT1)
|
||||||
|
; LD HL,BANKDOS
|
||||||
|
; CP (HL)
|
||||||
|
; CCF
|
||||||
|
; RET Z
|
||||||
|
; LD (BANKDOS),A
|
||||||
|
; LD HL,#C000
|
||||||
|
; LD (READMEM),HL
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
||||||
@ -442,7 +522,7 @@ FLOAD: LD (READMEM),DE
|
|||||||
CALL NSECTOR ; Cluster to Sector
|
CALL NSECTOR ; Cluster to Sector
|
||||||
LD DE,(READMEM)
|
LD DE,(READMEM)
|
||||||
LD A,(BOOT.SectorsPerCluster)
|
LD A,(BOOT.SectorsPerCluster)
|
||||||
CP #20
|
CP #20 + 1 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||||
LD C,BIOS.DRV_READ_LONG
|
LD C,BIOS.DRV_READ_LONG
|
||||||
JR C,.SMALL_CLUSTER
|
JR C,.SMALL_CLUSTER
|
||||||
LD A,(BANKDOS)
|
LD A,(BANKDOS)
|
||||||
@ -474,7 +554,6 @@ FLOAD: LD (READMEM),DE
|
|||||||
JR .set_drv
|
JR .set_drv
|
||||||
;
|
;
|
||||||
.SMALL_CLUSTER: LD B,A
|
.SMALL_CLUSTER: LD B,A
|
||||||
;LD C,BIOS.DRV_READ_LONG
|
|
||||||
LD A,(BANKDOS)
|
LD A,(BANKDOS)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,(DRIVE)
|
LD A,(DRIVE)
|
||||||
@ -509,6 +588,12 @@ FLOAD: LD (READMEM),DE
|
|||||||
LD (BANKDOS),A
|
LD (BANKDOS),A
|
||||||
LD HL,#C000
|
LD HL,#C000
|
||||||
LD (READMEM),HL
|
LD (READMEM),HL
|
||||||
|
LD A,(BOOT.SectorsPerCluster)
|
||||||
|
SUB SUBLOAD_SIZE + 1
|
||||||
|
CCF
|
||||||
|
RET NC
|
||||||
|
LD A,SUBLOAD_SIZE
|
||||||
|
LD (BOOT.SectorsPerCluster),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|||||||
@ -161,9 +161,15 @@ DISKINF: LD C,B
|
|||||||
EXX
|
EXX
|
||||||
LD B,A
|
LD B,A
|
||||||
LD C,A
|
LD C,A
|
||||||
.loop_free_space:
|
.loop_free_space:;!FIXIT
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
EXX
|
||||||
|
PUSH BC
|
||||||
|
EXX
|
||||||
CALL READ_FROM_FAT
|
CALL READ_FROM_FAT
|
||||||
|
EXX
|
||||||
|
POP BC
|
||||||
|
EXX
|
||||||
POP BC
|
POP BC
|
||||||
CP DSS_Error.sys.DISK_FULL
|
CP DSS_Error.sys.DISK_FULL
|
||||||
RET Z
|
RET Z
|
||||||
|
|||||||
@ -399,6 +399,10 @@ DIR_PATH_CHECK: LD A,(HL)
|
|||||||
;
|
;
|
||||||
.checkDir: LD HL,CurrentDirectory+1
|
.checkDir: LD HL,CurrentDirectory+1
|
||||||
LD DE,WorkDirectory+1
|
LD DE,WorkDirectory+1
|
||||||
|
; áçñâ稪
|
||||||
|
LD A,B
|
||||||
|
LD B,C
|
||||||
|
EX AF,AF'
|
||||||
;
|
;
|
||||||
.loop: LD A,(DE)
|
.loop: LD A,(DE)
|
||||||
AND A
|
AND A
|
||||||
@ -406,8 +410,22 @@ DIR_PATH_CHECK: LD A,(HL)
|
|||||||
CP (HL)
|
CP (HL)
|
||||||
INC HL
|
INC HL
|
||||||
INC DE
|
INC DE
|
||||||
JR Z,.loop
|
JR NZ,.gotoPath
|
||||||
JP .gotoPath
|
DJNZ .loop
|
||||||
|
EX AF,AF'
|
||||||
|
SUB 1
|
||||||
|
RET C
|
||||||
|
EX AF,AF'
|
||||||
|
DJNZ .loop
|
||||||
|
;
|
||||||
|
.gotoPath: LD C,B
|
||||||
|
EX AF,AF'
|
||||||
|
LD B,A
|
||||||
|
CALL FINDDIR.CHECK_SLASH
|
||||||
|
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||||
|
RET C
|
||||||
|
LD HL,CurrentPath
|
||||||
|
JP GETWORD
|
||||||
;
|
;
|
||||||
.end: CP (HL)
|
.end: CP (HL)
|
||||||
RET Z
|
RET Z
|
||||||
@ -417,12 +435,7 @@ DIR_PATH_CHECK: LD A,(HL)
|
|||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE)
|
||||||
ADD 'A'
|
ADD 'A'
|
||||||
CP (HL)
|
CP (HL)
|
||||||
RET
|
RET
|
||||||
.gotoPath: CALL FINDDIR.CHECK_SLASH
|
|
||||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
|
||||||
RET C
|
|
||||||
LD HL,CurrentPath
|
|
||||||
JP GETWORD
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,22 @@
|
|||||||
;
|
;
|
||||||
STRUCT _sStack ; 256 bytes
|
STRUCT _sStack ; 256 bytes
|
||||||
.buffer BLOCK 256,0
|
.buffer BLOCK 256,0
|
||||||
.SPoint BYTE 0
|
.SPoint BYTE 0
|
||||||
ENDS
|
ENDS
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
STRUCT _sEXE_HEADER ; 512 bytes
|
STRUCT _sEXE_HEADER ; 512 bytes
|
||||||
.EXE_EXT TEXT 3,{"EX","E"}
|
.EXE_EXT TEXT 3,{"EX","E"} ; 0-2 EXE ‘¨£ âãà
|
||||||
.VERSION BYTE 0
|
.VERSION BYTE 0 ; 3 Version of EXE file
|
||||||
.OFFCOD1 WORD 0
|
.OFFCOD1 WORD 00 ; 4-5 ‘ ª ª®£® á¬¥é¥¨ï ¢ ä ©«¥ ¡ã¤¥â £à㧨âìáï ª®¤ ¢
|
||||||
.OFFCOD2 WORD 0
|
.OFFCOD2 WORD 00 ; 6-7 ¯ ¬ïâì ¯® ¤à¥áã (Code_addr) Low addr, High addr.
|
||||||
.LOADER WORD 0
|
.LOADER WORD 00 ; 8-9 <EFBFBD> §¬¥à ¯¥à¢¨ç®£® § £àã§ç¨ª ¨«¨ 0
|
||||||
.RESERVED BLOCK 6,0
|
.RESERVED BLOCK 6,0 ; 10-15 Reserved
|
||||||
.LD_ADDR WORD 0
|
.LD_ADDR WORD 00 ; 16-17 €¤à¥á à ᯮ«®¦¥¨ï ª®¤ ¢ ¯ ¬ï⨠(#4100-#FFFF)
|
||||||
.PC_REG WORD 0
|
.PC_REG WORD 00 ; 18-19 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
|
||||||
.SP_REG WORD 0
|
.SP_REG WORD 00 ; 20-21 €¤à¥á á⥪ (Reg. SP)
|
||||||
.RESERVED2 BLOCK 490,0
|
.RESERVED2 BLOCK 490,0 ; 22-512 Œ®¦® ¨á¯®«ì§®¢ âì ¯®¤ ⥪áâ ¤«ï ¢ë¯¥¤àñ¦ ¨«¨ ¥ ¨á¯®«ì§®¢ âì
|
||||||
ENDS
|
ENDS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
957
|
959
|
||||||
@ -155,5 +155,5 @@ MOUSE_BAUD:
|
|||||||
;
|
;
|
||||||
;----------------------------------------------------;
|
;----------------------------------------------------;
|
||||||
; <EFBFBD>ЈЌ ЈЅ, стЅЊ хр Јтся Ђ тЎЉ ІЅ стр ЈцЅ!
|
; <EFBFBD>ЈЌ ЈЅ, стЅЊ хр Јтся Ђ тЎЉ ІЅ стр ЈцЅ!
|
||||||
SUBLOAD_SIZE EQU 10 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
SUBLOAD_SIZE EQU 2 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
||||||
;----------------------------------------------------;
|
;----------------------------------------------------;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ cmd_chdir:
|
|||||||
xor a
|
xor a
|
||||||
ld hl,work_buffer1;
|
ld hl,work_buffer1;
|
||||||
cp (hl)
|
cp (hl)
|
||||||
jr nz,A877B
|
jr nz,.chdir
|
||||||
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
||||||
inc hl
|
inc hl
|
||||||
ld (hl),"."
|
ld (hl),"."
|
||||||
@ -19,7 +19,7 @@ cmd_chdir:
|
|||||||
ld (hl),0
|
ld (hl),0
|
||||||
dec hl
|
dec hl
|
||||||
dec hl
|
dec hl
|
||||||
A877B: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
.chdir: ld c,Dss.ChDir ; ᬥ¨âì ⥪. ª â «®£
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||||
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||||||
|
|||||||
@ -181,9 +181,10 @@ cmd_dir:
|
|||||||
;ld hl,has_not_full_info
|
;ld hl,has_not_full_info
|
||||||
;JR Z,.skip_full_space
|
;JR Z,.skip_full_space
|
||||||
;
|
;
|
||||||
ld hl,(free_space) ; ¬«. à §àï¤
|
ld hl,(free_space_low) ; ¬«. à §àï¤
|
||||||
exx
|
exx
|
||||||
ld hl,(free_space+2) ; áâ. à §àï¤
|
ld hl,(free_space_medium) ; áâ. à §àï¤
|
||||||
|
;!FIXIT ¨á¯®«ì§®¢ âì áâ à訩 à §àï¤! free_space_high
|
||||||
exx
|
exx
|
||||||
CALL Size2Char
|
CALL Size2Char
|
||||||
ld hl,T8B46 ; "0 000 000 000"
|
ld hl,T8B46 ; "0 000 000 000"
|
||||||
@ -495,11 +496,13 @@ A8B16: inc a
|
|||||||
ret
|
ret
|
||||||
;
|
;
|
||||||
|
|
||||||
D88DC: dw 0
|
D88DC: WORD 0
|
||||||
D88DE: dw 0
|
D88DE: WORD 0
|
||||||
D88E0: dw 0
|
D88E0: WORD 0
|
||||||
dir_number: dw 0
|
dir_number: WORD 0
|
||||||
free_space: dword 0
|
free_space_low: WORD 0
|
||||||
|
free_space_medium: WORD 0
|
||||||
|
free_space_high: BYTE 0
|
||||||
;
|
;
|
||||||
|
|
||||||
T8B2E: db "000000000"
|
T8B2E: db "000000000"
|
||||||
@ -512,50 +515,76 @@ T8B46: db "0 000 000 000",0
|
|||||||
; [x] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
; [x] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||||
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||||
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||||
read_disk_info:
|
read_disk_info: OR #80
|
||||||
OR #80
|
LD HL,work_buffer
|
||||||
LD HL,work_buffer
|
.full+1: LD B,0
|
||||||
.full+1: LD B,0
|
LD C,Dss.DskInfo
|
||||||
LD C,Dss.DskInfo
|
RST ToDSS
|
||||||
RST ToDSS
|
; ” ©«®¢ ï á¨á⥬
|
||||||
; ” ©«®¢ ï á¨á⥬
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
; Œ¥âª ¤¨áª ¢ BPB
|
||||||
; Œ¥âª ¤¨áª ¢ BPB
|
EX AF,AF'
|
||||||
EX AF,AF'
|
LD A,(.full)
|
||||||
LD A,(.full)
|
OR A
|
||||||
OR A
|
JR Z,.no_full_space_option
|
||||||
JR Z,.no_full_space_option
|
;
|
||||||
;
|
; max sector (LBA28) #0FFF'FFFF
|
||||||
; (DE*A)*BC
|
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||||
;PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
; DE - ᢮¡®¤ëå ª« áâ¥à®¢ low
|
||||||
;PUSH DE ; ᢮¡®¤ëå ª« áâ¥à®¢
|
; DE' - ᢮¡®¤ëå ª« áâ¥à®¢ high
|
||||||
PUSH BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||||
EX AF,AF'
|
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
; !TEST fat 32
|
PUSH IX
|
||||||
;LD C,A ; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
;
|
||||||
;CALL Mult16X8
|
PUSH BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
; A:HL = DE*A
|
EX AF,AF'
|
||||||
LD B,0
|
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||||
LD C,A
|
;
|
||||||
EXX
|
; free_clu_L * clu_size_in_sect
|
||||||
PUSH DE
|
LD C,A
|
||||||
EXX
|
EX AF,AF'
|
||||||
POP HL
|
CALL Mult16X8 ; DE*C = A:HL
|
||||||
; HL:DE * BC ᢮¡®¤ë¥_ª« áâ¥àë * à §¬¥à_ª« áâ¥à _¢_ᥪâ®à å
|
; A:HL = DE*C
|
||||||
CALL Mult32
|
;
|
||||||
; HL:DE = ᢮¡®¤ë¥_ᥪâ®àë
|
; free_clu_H * clu_size_in_sect
|
||||||
;
|
EXX
|
||||||
; EX DE,HL
|
EX AF,AF'
|
||||||
; LD H,0
|
LD C,A
|
||||||
; LD L,A
|
PUSH BC
|
||||||
POP BC
|
CALL Mult16X8 ; DE*C = A:HL
|
||||||
CALL Mult32
|
; max #0FFF'FFFF sectors for LBA28
|
||||||
; HL:DE = ᢮¡®¤®¥ ¬¥áâ® ;!FIXIT ®£à ¨ç¥® 4 £¨£ ¬¨
|
EX AF,AF'
|
||||||
;
|
LD D,0
|
||||||
LD (free_space+2),HL
|
LD E,A
|
||||||
EX DE,HL
|
ADD HL,DE
|
||||||
LD (free_space),HL
|
EXX
|
||||||
;
|
; HL':HL - ᢮¡®¤ëå ᥪâ®à®¢
|
||||||
|
;
|
||||||
|
EX DE,HL
|
||||||
|
POP BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
|
PUSH BC
|
||||||
|
CALL Mult_16x16 ; DE*BC = HL:DE.
|
||||||
|
EXX
|
||||||
|
POP BC
|
||||||
|
CALL Mult_16x16 ; DE*BC = HL:DE.
|
||||||
|
LD XH,D
|
||||||
|
LD XL,E
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
ADD IX,DE
|
||||||
|
EX DE,HL
|
||||||
|
EXX
|
||||||
|
JR NC,.no_inc_HL
|
||||||
|
INC L
|
||||||
|
; ¯®â®¬ã çâ® ¥ ¤®«¦® ¡ëâì ¡®«ìè¥ #001F'FFFF'FE00
|
||||||
|
; ¯à¨ ᥪâ®à¥ ¢ 512 ¡ ©â®¢
|
||||||
|
;
|
||||||
|
.no_inc_HL: LD A,L
|
||||||
|
LD (free_space_high),A
|
||||||
|
LD (free_space_medium),IX
|
||||||
|
EXX
|
||||||
|
LD (free_space_low),DE
|
||||||
|
POP IX
|
||||||
;
|
;
|
||||||
.no_full_space_option:
|
.no_full_space_option:
|
||||||
; parse
|
; parse
|
||||||
@ -647,8 +676,7 @@ read_disk_info:
|
|||||||
.good_label:
|
.good_label:
|
||||||
POP HL
|
POP HL
|
||||||
PUSH HL ; «¨è¥¥
|
PUSH HL ; «¨è¥¥
|
||||||
|
; ¥áâì ¬¥âª
|
||||||
; ¥áâì ¬¥âª
|
|
||||||
volume_label:
|
volume_label:
|
||||||
pop DE ; «¨è¥¥
|
pop DE ; «¨è¥¥
|
||||||
; %5
|
; %5
|
||||||
@ -663,7 +691,6 @@ volume_label:
|
|||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
ret
|
ret
|
||||||
;
|
;
|
||||||
|
|
||||||
; ¥á«¨ ¥ 㤠«®áì ¯à®ç¨â âì á¥à¨©ë© ®¬¥à ¤¨áª ¨«¨ ä®à¬ â ¥¨§¢¥áâ¥
|
; ¥á«¨ ¥ 㤠«®áì ¯à®ç¨â âì á¥à¨©ë© ®¬¥à ¤¨áª ¨«¨ ä®à¬ â ¥¨§¢¥áâ¥
|
||||||
unknown_serial:
|
unknown_serial:
|
||||||
; á¥à¨©ë© ®¬¥à ¤¨áª - ¥¨§¢¥á⥠;!HARDCODE ¨¦¥
|
; á¥à¨©ë© ®¬¥à ¤¨áª - ¥¨§¢¥á⥠;!HARDCODE ¨¦¥
|
||||||
@ -787,51 +814,77 @@ Size2Char:
|
|||||||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (16*8bit)
|
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (16*8bit)
|
||||||
;<3B> ¢å®¤: DE * C
|
;<3B> ¢å®¤: DE * C
|
||||||
;<3B> ¢ë室:A:HL = १ã«ìâ â
|
;<3B> ¢ë室:A:HL = १ã«ìâ â
|
||||||
Mult16X8:
|
Mult16X8: SUB A
|
||||||
SUB A
|
LD L,A
|
||||||
LD L,A
|
LD H,A
|
||||||
LD H,A
|
CP C
|
||||||
CP C
|
RET Z
|
||||||
RET Z
|
OR D
|
||||||
OR D
|
OR E
|
||||||
OR E
|
RET Z
|
||||||
RET Z
|
LD A,C
|
||||||
LD A,C
|
LD C,#00
|
||||||
LD C,#00
|
LD B,#08
|
||||||
LD B,#08
|
.loop: ADD HL,HL
|
||||||
Mlt16x8:
|
RLA
|
||||||
ADD HL,HL
|
JR NC,.next
|
||||||
RLA
|
ADD HL,DE
|
||||||
JR NC,1F
|
ADC A,C
|
||||||
ADD HL,DE
|
.next: DJNZ .loop
|
||||||
ADC A,C
|
RET
|
||||||
1: DJNZ Mlt16x8
|
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||||||
;<3B> ¢å®¤: HL:DE * BC
|
;<3B> ¢å®¤: HL:DE * BC
|
||||||
;<3B> ¢ë室:HL:DE = १ã«ìâ â
|
;<3B> ¢ë室:HL:DE = १ã«ìâ â
|
||||||
Mult32:
|
IFUSED Mult32
|
||||||
PUSH IX
|
Mult32: PUSH IX
|
||||||
LD IX,#0000
|
LD IX,#0000
|
||||||
LD A,#20
|
LD A,#20
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
mul32b:
|
.loop: ADD IX,IX
|
||||||
ADD IX,IX
|
ADC HL,HL
|
||||||
ADC HL,HL
|
RL E
|
||||||
RL E
|
RL D
|
||||||
RL D
|
JR NC,.no_add
|
||||||
JR NC,noadd1
|
ADD IX,BC
|
||||||
ADD IX,BC
|
JR NC,no_add
|
||||||
JR NC,noadd1
|
INC HL
|
||||||
INC HL
|
.no_add: DEC A
|
||||||
noadd1:
|
JR NZ,.loop
|
||||||
DEC A
|
LD E,LX
|
||||||
JR NZ,mul32b
|
LD D,HX
|
||||||
LD E,LX
|
POP IX
|
||||||
LD D,HX
|
RET
|
||||||
POP IX
|
ENDIF
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
;INPUT : DE * BC
|
||||||
|
;OUTPUT: HL:DE
|
||||||
|
Mult_16x16: LD IX,0
|
||||||
|
LD HL,0
|
||||||
|
;
|
||||||
|
LD A,B
|
||||||
|
OR C
|
||||||
|
JR Z,.exit
|
||||||
|
;
|
||||||
|
.loop: SRL B
|
||||||
|
RR C
|
||||||
|
JP NC,.no_add
|
||||||
|
ADD IX,DE
|
||||||
|
JR NC,.no_add
|
||||||
|
INC HL
|
||||||
|
;
|
||||||
|
.no_add: LD A,B
|
||||||
|
OR C
|
||||||
|
JR Z,.exit
|
||||||
|
;
|
||||||
|
SLA E
|
||||||
|
RL D
|
||||||
|
RL L
|
||||||
|
RL H
|
||||||
|
JP .loop
|
||||||
|
;
|
||||||
|
.exit: LD D,XH
|
||||||
|
LD E,XL
|
||||||
|
RET
|
||||||
///////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1 +1 @@
|
|||||||
316
|
320
|
||||||
Loading…
Reference in New Issue
Block a user