CORE: -bug in LOADDIR for fat32

SHELL: small optimize
This commit is contained in:
Anatoliy Belyanskiy 2024-05-10 01:30:13 +10:00
parent f135083519
commit cc435bef7d
13 changed files with 79 additions and 97 deletions

View File

@ -581,7 +581,7 @@ LEAVE: LD A,B
; ¢å®¤: ­¥â ; ¢å®¤: ­¥â
; ¢ë室: A - ª®¤ § ¢¥à襭¨ï ; ¢ë室: A - ª®¤ § ¢¥à襭¨ï
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
WAIT: LD A,(ErrorLevel) GET_ERR: LD A,(ErrorLevel)
AND A AND A
RET RET
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////

View File

@ -48,7 +48,7 @@ F_FIRST:
LD HL,HANDBUF+12 ;!HARDCODE LD HL,HANDBUF+12 ;!HARDCODE
LD BC,HANDBUF.SIZE-12 ;????? ¬¥âªã ¢¬¥áâ® ç¨á« ? LD BC,HANDBUF.SIZE-12 ;????? ¬¥âªã ¢¬¥áâ® ç¨á« ?
LDIR LDIR
LD A,(HANDBUF+11) LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
LD (DE),A LD (DE),A
INC DE INC DE
LD HL,HANDBUF LD HL,HANDBUF
@ -58,16 +58,18 @@ F_FIRST:
JR NZ,.FIND_M2 JR NZ,.FIND_M2
LD BC,11 ;!HARDCODE LD BC,11 ;!HARDCODE
LDIR LDIR
LD A,F_NEXT.NO_NEXT.NO .exit: LD A,F_NEXT.NO_NEXT.NO
LD (F_NEXT.NO_NEXT),A LD (F_NEXT.NO_NEXT),A
XOR A XOR A
RET RET
.FIND_M2: .FIND_M2:
;!TODO LFN
;CP 2
;CALL NC,GetName_LFN
;CALL C,GetName
;
CALL GetName CALL GetName
LD A,F_NEXT.NO_NEXT.NO JR .exit
LD (F_NEXT.NO_NEXT),A
XOR A
RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ;

View File

@ -76,7 +76,7 @@ DISKINF: LD C,B
.next_prm: LD HL,CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER .next_prm: LD HL,CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER
LD C,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER LD C,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER
CALL .mCOPY_LOOP CALL .mCOPY_LOOP
; ; !FIXIT ¥á«¨ ¬¥âª  ¢ BPB "NO NAME" ¨«¨ ¯à®¡¥«ë, â® ¯à®¢¥àïâì ¬¥âªã ¢ ª®à­¥¢®¬ ª â «®£¥.
LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL
LD C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL LD C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL
CALL .mCOPY_LOOP CALL .mCOPY_LOOP

View File

@ -52,6 +52,7 @@
; DJNZ .GETN6 ; DJNZ .GETN6
; RET ; RET
;---------------;---------------;--------------- ;---------------;---------------;---------------
;!TODO LFN
GetName: LD BC,#08FF ;!HARDCODE ¤«¨­  ¨¬¥­¨ + áçñâ稪 GetName: LD BC,#08FF ;!HARDCODE ¤«¨­  ¨¬¥­¨ + áçñâ稪
LD A,' ' LD A,' '
.loop: CP (HL) .loop: CP (HL)

View File

@ -317,7 +317,7 @@ ADRST10: ;DS 512 ;,0
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27 DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45 DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59 DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
@ -344,7 +344,7 @@ ADRST10: ;DS 512 ;,0
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3 DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT

View File

@ -519,6 +519,8 @@ LOADDIR: ;!TODO optimize
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
LD HL,(CORE_BUFFERS.FatBuffer.RootDirStartCluster_H) LD HL,(CORE_BUFFERS.FatBuffer.RootDirStartCluster_H)
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
LD HL,#4000 ;!HARDCODE à §¬¥à ¤¨à¥ªâ®à¨¨
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
; ;
.read_dir: LD HL,DIRPAGE.buffer ; ªã¤  .read_dir: LD HL,DIRPAGE.buffer ; ªã¤ 
LD DE,#4000 ; ᪮«ìª® LD DE,#4000 ; ᪮«ìª®

View File

@ -647,7 +647,7 @@ WRITE_FAT_TABLE:
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT ;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
CALL GET_SECTOR_OF_FAT CALL GET_SECTOR_OF_FAT
; B=0, C:HL - ᬥ饭¨¥ ¢ ᥪâ®à å ¢­ãâਠ⠡«¨æë FAT ­  ­ ç «® ¡«®ª  ; B=0, C:HL - ᬥ饭¨¥ ¢ ᥪâ®à å ¢­ãâਠ⠡«¨æë FAT ­  ­ ç «® ¡«®ª 
LD (.save_offset_HL),HL LD (.pop_offset_HL),HL
LD DE,FAT_CACHE.Sectors_32 LD DE,FAT_CACHE.Sectors_32
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE) LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32 CP FAT_TYPE.x32

View File

@ -554,11 +554,11 @@ KEYSCAN: LD IX,KEYFLAG
; SBC HL,DE ; SBC HL,DE
; CALL Z,RST_X ; CALL Z,RST_X
; ;
; [x] ®¯ á­ ï å७ì ;; [ ] ®¯ á­ ï å७ì
LD HL,BREAK_PROCESS_CODE ;LD HL,BREAK_PROCESS_CODE
AND A ;AND A
SBC HL,DE ;SBC HL,DE
CALL Z,Break_Process ;CALL Z,Break_Process
; ;
LD BC,(KEYFLAG) LD BC,(KEYFLAG)
CALL PUTSYM CALL PUTSYM
@ -1154,12 +1154,13 @@ KBD_Receiver_Overrun:
LD (KEY_FLG),A LD (KEY_FLG),A
;LD (UNCODE),A ;LD (UNCODE),A
RET RET
; [x] ®¯ á­ ï å७ì ;
Break_Process: LD A,(TASK) ; [ ] ®¯ á­ ï å७ì
XOR 2 ; 2 - task of primary shell ; Break_Process: LD A,(TASK)
RET Z ; XOR 2 ; 2 - task of primary shell
LD B,DSS_Error.sys.USER_ABORT ; RET Z
JP LEAVE ; LD B,DSS_Error.sys.USER_ABORT
; JP LEAVE
; ` ; `
; 0 ; 0

View File

@ -52,6 +52,7 @@
.KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
ENDS ENDS
;ACCESS MODE: A=0 ç⥭¨¥/§ ¯¨áì ;ACCESS MODE: A=0 ç⥭¨¥/§ ¯¨áì
; A=1 ç⥭¨¥ ; A=1 ç⥭¨¥
; A=2 § ¯¨áì ; A=2 § ¯¨áì

View File

@ -1 +1 @@
983 984

View File

@ -289,13 +289,7 @@ PRNSIZE: ld a,(ix+32)
ld h,(ix+FAT_DIRECTORY_RECORD.F_SIZE+3) ld h,(ix+FAT_DIRECTORY_RECORD.F_SIZE+3)
exx exx
push ix push ix
call MAKE_LN_32 ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤ call MAKE_LN ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
ld hl,L32BIT_.end
ld a,(hl)
cp " "
jr nz,.not_zero
ld a,"0"
ld (hl),a
.not_zero: ld de,SIZE_BUFFER.low ; "0 000 000 000" .not_zero: ld de,SIZE_BUFFER.low ; "0 000 000 000"
ld hl,L32BIT_ ; "0000000000" ld hl,L32BIT_ ; "0000000000"
ldi ldi
@ -403,33 +397,12 @@ toNumber: ld c,#2F
ld (hl),a ld (hl),a
inc hl inc hl
ret ret
;
;!TODO ¯¥à¥â é¨âì ¢ procedures/math.asm ;!TODO ¯¥à¥â é¨âì ¢ procedures/math.asm
; „¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤ ; „¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
; HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤  ; HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤ 
; !FIXIT ¬®¦­® ®¡ê¥¤¥­¨âì á PDIGIT ; !FIXIT ¬®¦­® ®¡ê¥¤¥­¨âì á PDIGIT
MAKE_LN_32: CALL MAKE_LN
ld hl,L32BIT_ ; "0000000000"
JR MAKE_LN_Clean
; ¤¥áïâ¨ç­ë© 40-  à §àï¤­ë© ¢ë¢®¤
MAKE_LN_40: CALL MAKE_LN.skip_1
ld hl,L40BIT_ ; "0000000000"
;
MAKE_LN_Clean: ld de,#2030 ; " ","0"
.KILLZ: ld a,(hl)
cp e
jr nz,.KILLZ2
ld (hl),d
inc hl
jr .KILLZ
;
.KILLZ2: ld hl,L32BIT_.end ; "0"
ld a,(hl)
cp d
ret nz
ld (hl),e
ret
; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
MAKE_LN: ld ix,L32BIT_ ; "0000000000" MAKE_LN: ld ix,L32BIT_ ; "0000000000"
exx exx
ld de,#3B9A ld de,#3B9A
@ -491,7 +464,8 @@ MAKE_LN: ld ix,L32BIT_ ; "0000000000"
inc ix inc ix
ret ret
; ;
GET_DIG: xor a GET_DIG: ld a,"0"-1
AND A
.loop: inc a .loop: inc a
sbc hl,de sbc hl,de
exx exx
@ -503,9 +477,16 @@ GET_DIG: xor a
exx exx
adc hl,de adc hl,de
exx exx
dec a ;dec a
add a,"0" cp "0"
ld (ix+0),a jr nz,.putChar
ld b,a
ld a,(ix-1)
cp " "
jr z,.putChar
ld a,b
;
.putChar: ld (ix+0),a
inc ix inc ix
ret ret
; ;
@ -524,16 +505,18 @@ full_space_medium: WORD 0
full_space_high: BYTE 0 full_space_high: BYTE 0
; ;
L40BIT_ db "00" ; !TODO ¬®¦¥â ®¡®©â¨áì ®¤­¨¬ ¡ãä¥à®¬ 00 ¢¬¥áâ® ¤¢ãå?
L32BIT_: db "000000000" L40BIT: db " " ; ¬ àª¥à ¤«ï ix-1
.Str: db " " ; 00
L32BIT_: db " " ; 000000000
.end: db "0" .end: db "0"
; ;
DIRIDD: db "<DIR> ",0 DIRIDD: db "<DIR> ",0
; ;
SIZE_BUFFER: SIZE_BUFFER: db " " ; ¬ àª¥à ¤«ï ix-1
.high db "00" .high db " " ; "00"
.low: db "0 000 000 000",0,0 .low: db " ",0,0 ; "0 000 000 000",0,0
.bytes equ SIZE_BUFFER - $ .bytes equ SIZE_BUFFER - $
; ;
; [x] ⥯¥àì ­¥ «¥§¥â ­ ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ­®¢ë© ¯ à ¬¥âà ä㭪樨 DskInfo ; [x] ⥯¥àì ­¥ «¥§¥â ­ ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ­®¢ë© ¯ à ¬¥âà ä㭪樨 DskInfo
@ -562,12 +545,7 @@ read_disk_info: OR #80
AND E AND E
EXX EXX
INC A INC A
;JR Z,.no_full_space_option
LD (.full),A LD (.full),A
; ;
; LD A,(.full)
; OR A
; JR Z,.no_full_space_option
EX AF,AF' EX AF,AF'
; ;
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE ; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
@ -618,7 +596,6 @@ read_disk_info: OR #80
RR C RR C
JP NC,.loop2 JP NC,.loop2
; <-- B':HL'HL, C':DE':DE ; <-- B':HL'HL, C':DE':DE
;!TODO ¢ë¢®¤¨âì ¯®«­ë© à §¬¥à ¤¨áª 
EXX EXX
LD A,C LD A,C
LD (free_space_high),A LD (free_space_high),A
@ -674,17 +651,16 @@ read_disk_info: OR #80
ld c,Dss.ChDir ld c,Dss.ChDir
RST ToDSS RST ToDSS
; ¯®¨áª ¬¥âª¨ ; ¯®¨áª ¬¥âª¨
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨ ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
ld de,work_buffer1 ; ªã¤  ld de,work_buffer1 ; ªã¤ 
ld a,FAT_ATTR.VOLUME_ID ;  âਡãâ ¬¥âª¨ ⮬  ld a,FAT_ATTR.VOLUME_ID ;  âਡãâ ¬¥âª¨ ⮬ 
ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11 ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11
RST ToDSS RST ToDSS
push af push af
call restore_path ; ¢®ááâ. ⥪. ¯ãâì call restore_path ; ¢®ááâ. ⥪. ¯ãâì
pop af pop af
;jr c,no_volume_label ; ¬¥âª¨ ­¥â ¤¨à४â®à¨¨ ld hl,work_buffer1 + BUFFER_FIND.REC_Name ; ­ ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
ld hl,work_buffer1+33 ; ­ ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first jr nc,volume_label ; ¬¥âª  ¢ ª®à­¥¢®¬ ª â «®£¥
jr nc,volume_label ; ¬¥âª  ¢ ª®à­¥¢®¬ ª â «®£¥
; ¡¥àñ¬ ¬¥âªã ¨§ BPB ; ¡¥àñ¬ ¬¥âªã ¨§ BPB
; âãâ ¢ HL ¤«¨­  ¯®«ï "Œ¥âª  ¤¨áª " ; âãâ ¢ HL ¤«¨­  ¯®«ï "Œ¥âª  ¤¨áª "
POP hl POP hl
@ -710,12 +686,12 @@ read_disk_info: OR #80
LD (PRM5),A LD (PRM5),A
ret ret
.good_label: POP HL .good_label: POP HL
PUSH HL ; «¨è­¥¥ PUSH HL ; ⮫ª ¥¬ «¨è­¥¥
; ¥áâì ¬¥âª  ; ¥áâì ¬¥âª 
volume_label: pop DE ; «¨è­¥¥ volume_label: POP DE ; á­¨¬ ¥¬ «¨è­¥¥
; %5 ; %5
ld de,PRM5 ld de,PRM5
ld bc,11 ;!HARDCODE ¤«¨­  ¬¥âª¨ ld bc,11 ;!HARDCODE ¤«¨­  ¬¥âª¨
ldir ldir
xor a xor a
ld (de),a ld (de),a
@ -758,11 +734,11 @@ volume_string_yes:
; has_not_full_info: ; has_not_full_info:
; db ' (?)',0 ; db ' (?)',0
; ;
cmd_dir_options:; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠ ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬) cmd_dir_options:; [x] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠ ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
DB 'f' : DW cmd_dir_freeSpace DB 'f' : DW cmd_dir_freeSpace
DB 'p' : DW cmd_dir_pause DB 'p' : DW cmd_dir_pause
.Size EQU ($-cmd_dir_options)/3 .Size EQU ($-cmd_dir_options)/3
.paramLength equ 3 .paramLength EQU 3
; ;
; ;
@ -776,7 +752,7 @@ cmd_dir_pause: ld a,#ff
ld (cmd_dir.key_p),a ld (cmd_dir.key_p),a
jp cmd_dir.parse jp cmd_dir.parse
/////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////
GET_BIG_DIG: ld b,0 GET_BIG_DIG: ld b,"0"-1
and a and a
.loop: inc b .loop: inc b
sbc hl,de sbc hl,de
@ -794,15 +770,21 @@ GET_BIG_DIG: ld b,0
adc a,c adc a,c
; ;
ex af,af' ex af,af'
dec b ;dec b
ld a,b ld a,b
add a,"0" cp "0"
ld (ix+0),a jr nz,.putChar
ld a,(ix-1)
cp " "
jr z,.putChar
ld a,b
;
.putChar: ld (ix+0),a
ex af,af' ex af,af'
inc ix inc ix
ret ret
; stop ; stop
PRINT_5BYTES: ld ix,L40BIT_ ; "00" PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
ld c,#17 ld c,#17
exx exx
ld de,#4876 ld de,#4876
@ -828,16 +810,9 @@ PRINT_5BYTES: ld ix,L40BIT_ ; "00"
CALL GET_BIG_DIG CALL GET_BIG_DIG
; ;
; DE':DE = 100,000,000 ; DE':DE = 100,000,000
CALL MAKE_LN_40 CALL MAKE_LN.skip_1
ld hl,L32BIT_.end ; "0"
ld a,(hl)
cp " "
jr nz,.not_zero
ld a,"0"
ld (hl),a
.not_zero: ;
.exit_clean: ld de,SIZE_BUFFER.high ; "0 000 000 000" .exit_clean: ld de,SIZE_BUFFER.high ; "0 000 000 000"
ld hl,L40BIT_ ; "0000000000" ld hl,L40BIT.Str ; "0000000000"
ldi ldi
ldi ldi
ld a,(hl) ld a,(hl)

View File

@ -1 +1 @@
357 365

@ -1 +1 @@
Subproject commit 62170ee7bc7dabe6fd55b94e89826ca510a60097 Subproject commit 5797b0c5804320f86d263997f624cb8b6bb69385