Core: fixed error in EXEC, SYSTIME. Shell: CMD_DATE - printing day of week

This commit is contained in:
Anatoliy Belyanskiy 2024-01-26 00:44:27 +10:00
parent ec7682cf21
commit 43b8683575
16 changed files with 373 additions and 206 deletions

View File

@ -14,35 +14,35 @@ SYSTIME:
LD C,BIOS.CMOS_TEST
RST ToBIOS
JP C,.NOCMOS
LD D,7 ;DAY
LD D,CMOS.Register.date
CALL RCMOS
PUSH AF
LD D,8 ;MONTH
LD D,CMOS.Register.month
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,4 ;HOUR
LD D,CMOS.Register.hours
CALL RCMOS
PUSH AF
LD D,2 ;MINUTE
LD D,CMOS.Register.minutes
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,0 ;SECOND
LD D,CMOS.Register.seconds
CALL RCMOS
PUSH AF
LD D,6 ;WEEK DAY
LD D,CMOS.Register.dayOfWeek
LD C,BIOS.CMOS_RD
RST ToBIOS
POP DE
LD E,A
PUSH DE
LD D,9 ;YEAR
LD D,CMOS.Register.year
CALL RCMOS ;READ AND CONVERT TO DECIMAL
PUSH AF
LD D,#32 ;CENTURY
LD D,CMOS.Register.century
LD C,BIOS.CMOS_RD
RST ToBIOS
LD XH,A
@ -61,7 +61,7 @@ SYSTIME:
JR Z,.GOODAGE
.BADAGE:
PUSH AF
LD D,#32 ;CENTURY
LD D,CMOS.Register.century
LD C,BIOS.CMOS_WR
RST ToBIOS
POP AF
@ -122,34 +122,47 @@ SETTIME:
PUSH BC
PUSH HL
PUSH DE
;
; [ ] 25/01/2024
CALL CalcDayOfWeek
PUSH HL
;
LD C,BIOS.CMOS_TEST
RST ToBIOS
JP C,.NOCMOS2
JR C,.NOCMOS2
;
; [ ] 25/01/2024
POP AF
LD D,CMOS.Register.dayOfWeek
LD C,BIOS.CMOS_WR
RST ToBIOS
;
POP AF
PUSH AF
LD D,7 ;DAY
LD D,CMOS.Register.date
CALL WCMOS
POP BC
LD A,C
LD D,8 ;MONTH
LD D,CMOS.Register.month
CALL WCMOS
POP AF
PUSH AF
LD D,4 ;HOUR
LD D,CMOS.Register.hours
CALL WCMOS
POP BC
LD A,C
LD D,2 ;MINUTE
LD D,CMOS.Register.minutes
CALL WCMOS
POP AF
PUSH AF
LD D,0 ;SECOND
;PUSH AF ; [ ] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
LD D,CMOS.Register.seconds
CALL WCMOS
POP BC
LD A,C
LD D,6 ;WEEK DAY
LD C,BIOS.CMOS_WR
RST ToBIOS
; [ ] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
;POP BC
;LD A,C
;LD D,CMOS.Register.dayOfWeek
;LD C,BIOS.CMOS_WR
;RST ToBIOS
;
POP HL
XOR A
@ -160,17 +173,23 @@ SETTIME:
ADD HL,DE
DEC A
PUSH HL
LD D,#32 ;CENTURY
LD D,CMOS.Register.century
CALL WCMOS
POP BC
LD A,C
LD D,9 ;YEAR
LD D,CMOS.Register.year
CALL WCMOS
AND A
RET
; !FIXIT ­®¢ë© ¡¨®á ¢ëáâ ¢«ï¥â ¢à¥¬ï, ¥á«¨ á ­¨¬ çâ®-â® ­¥ â ª.
.NOCMOS2:
LD C,0
POP AF
POP DE
POP HL
POP BC
POP IX
LD C,A
;
LD (SYSTIME.NC_DAY),DE ;DAY/MONTH
LD (SYSTIME.NC_HOUR),HL ;HOUR/MINUTE
LD (SYSTIME.NC_SEC),BC ;SECOND/WEEKDAY

View File

@ -303,10 +303,10 @@ OPENDIR:;!TEST ;[x] some optimize
LD (CORE_BUFFERS.FM_BUF + _sFM.F_SIZE),HL
EX DE,HL
;
CALL LOADDIR
JP LOADDIR
; CF=0
;AND A
RET
;RET
;----------------------------------------------------------------------;

View File

@ -858,6 +858,7 @@ EXEC: LD (CMDLINE),HL
;LD HL,(CMDLINE)
JR C,EXEC0_SHORT
.VAR_2: CALL EXEC_1
;LD A,DSS_Error.sys.FILE_NOT_FOUND
SCF
RET ; File not found - exit
@ -873,7 +874,7 @@ EXEC_1: ;LD (CMDLINE),HL
CALL MASK
RET C
CALL TST_EXT
LD A,DSS_Error.sys.FILE_NOT_FOUND
;LD A,DSS_Error.sys.FILE_NOT_FOUND
RET C
_mINCTASK ;R08
CALL OPEN_FN.FILE
@ -914,6 +915,7 @@ COPYEXN: LD A,(HL)
CALL FINDPATH
;[x] 1/10/2023
LD A,DSS_Error.sys.FILE_NOT_FOUND
RET C
;
LD HL,(CMDLINE)

View File

@ -327,7 +327,7 @@ LOADDIR:
CALL MOVE_FP
SET_PAGE_X DIRPAGE
AND A
PUSH AF
;!TEST no ldir
; ®ç¨áâ¨âì ª¥è ª â «®£ 
@ -349,11 +349,9 @@ LOADDIR:
LD DE,#4000 ; ᪮«ìª®
XOR A ; ¤¥áªà¨¯â®à
CALL READ ; ç⥭¨¥ ¨§ ä ©« 
;!FIXIT 能恥丞<E681A5> <20> 株芋芥
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
POP AF
OUT (SLOT3),A
AND A
RET
.LROTDIR:
LD HL,(FatBuffer.DIR_FRH) ; áâ. à §àï¤
@ -376,7 +374,6 @@ LOADDIR:
RST ToDSS.DRV
POP AF
OUT (SLOT3),A
AND A
RET
;----------------------------------------------------------------------;
@ -650,7 +647,7 @@ RD_BPB: LD C,SLOT3
LD (FatBuffer.CLU_LEN),HL
EX DE,HL
LD HL,#3FFF ;!TODO FATcacheSize
LD HL,#3FFF ;!HARDCODE ;!TODO FATcacheSize
XOR A
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤  ¯®­ ¤®¡¨âáï
.loop4: INC A

View File

@ -101,6 +101,110 @@ RMKTIME:
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; [ ] 25/01/2024
; ¢å®¤: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; ¢ë室: H - ¤¥­ì ­¥¤¥«¨ (1 - ¢®áªà¥á¥­ì¥)
CalcDayOfWeek: ;!FIXIT ¢ëç¨á«ïâì ¤¥­ì ­¥¤¥«¨
; x = (14 ? ¬¥áïæ) / 12
; y = £®¤ ? x
; m = ¬¥áïæ + 12 * x ? 2
; „¥­ì<C2AD>¥¤¥«¨ = (7000 + (¤¥­ì + y + y/4 ? y/100 + y/400 + (31 * m)/12)) mod 7
; ‚ᥠ¤¥«¥­¨ï 楫®ç¨á«¥­­ë¥ (®áâ â®ª ®â¡à á뢠¥âáï).
;
LD A,D
LD (.day),A
; x = (14 ? ¬¥áïæ) / 12
; y = £®¤ ? x
LD A,E
CP 3
LD A,0
JR NC,1F
DEC IX
LD A,12
1: ; y = IX
; m = ¬¥áïæ + 12 * x ? 2
ADD E
SUB 2
; m = A
; HL = (31 * m)
LD D,0
LD E,A
RLA
RLA
RLA
LD H,D
LD L,A
ADD HL,HL
ADD HL,HL
SBC HL,DE
; (31 * m) = HL
; BC = (31 * m) / 12
LD B,H
LD C,L
; D=0
LD E,12
CALL BC_Div_DE
; (31 * m) / 12 = BC
LD (.m31_12),BC
; y / 4
PUSH IX
POP BC
; D=0
LD E,4
CALL BC_Div_DE
; y / 4 = BC
PUSH BC
; y / 100
PUSH IX
POP BC
; D=0
LD E,100
CALL BC_Div_DE
; y / 100 = BC
PUSH BC
; y / 400
PUSH IX
POP BC
LD DE,400
CALL BC_Div_DE
; y / 400 = BC
; y/400 - y/100
AND A
LD H,B
LD L,C
POP DE
SBC HL,DE
; y/400 - y/100 = HL
; y/4 ? y/100 + y/400
POP DE
ADD HL,DE
; y/4 ? y/100 + y/400 + (31 * m)/12
.m31_12+1: LD DE,0
ADD HL,DE
; y + y/4 ? y/100 + y/400 + (31 * m)/12
EX DE,HL
ADD IX,DE
; ¤¥­ì + y + y/4 ? y/100 + y/400 + (31 * m)/12
LD D,0
.day+1: LD E,0
ADD IX,DE
; 7000 + (¤¥­ì + y + y/4 ? y/100 + y/400 + (31 * m)/12)
LD DE,7000
ADD IX,DE
; (7000 + (¤¥­ì + y + y/4 ? y/100 + y/400 + (31 * m)/12)) mod 7
LD B,XH
LD C,XL
LD DE,7
CALL BC_Div_DE
; „¥­ì<C2AD>¥¤¥«¨ = L
LD H,L
INC H
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; a..z -> A..Z
@ -190,6 +294,33 @@ HEX2BCD:
;----------------------------------------------------------------------;
;
;
;----------------------------------------------------------------------;
;BC/DE ==> BC, remainder in HL
; ­¥ ¯®àâ¨â DE
BC_Div_DE:
ld hl,0
ld a,b
ld b,16
;shift the bits from BC into HL
.div_loop:
sla c
rla
adc hl,hl
sbc hl,de
jr nc,.div_inc_acc
add hl,de
db $FE ;this begins the instruction `cp *`, so it eats the next byte.
.div_inc_acc:
inc c
djnz .div_loop
ld b,a
ret
;----------------------------------------------------------------------;
;
; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). ‹¥£ª® ¯¥à¥¤¥« âì ¯®¤ HL:DE / A => HL:DE.A
;----------------------------------------------------------------------;
DIV_for_SPC:
@ -231,107 +362,106 @@ DIV_for_SPC:
; LD H,0
; LD L,A
; RET
/*
DEFINE NEW_DIV 1
DIV32: LD XH,D
LD XL,E
; DEFINE NEW_DIV 1
IFN NEW_DIV
EX DE,HL
LD HL,0
LD A,#20
DIV001: ADD IX,IX
EX DE,HL
ADC HL,HL
EX DE,HL
ADC HL,HL
SBC HL,BC
JR NC,DIV002
ADD HL,BC
DEC A
JR NZ,DIV001
RET
DIV002: INC IX
DEC A
JR NZ,DIV001
RET
ELSE
; DIV32: LD XH,D
; LD XL,E
; IFN NEW_DIV
; EX DE,HL
; LD HL,0
; LD A,#20
; DIV001: ADD IX,IX
; EX DE,HL
; ADC HL,HL
; EX DE,HL
; ADC HL,HL
; SBC HL,BC
; JR NC,DIV002
; ADD HL,BC
; DEC A
; JR NZ,DIV001
; RET
; DIV002: INC IX
; DEC A
; JR NZ,DIV001
; RET
; ELSE
div32_16:
;HLIX/BC -> HLIX remainder DE
;174+4*div32_16_sub8
;min: 2186cc
;max: 2794cc
;avg: 2466cc
;61 bytes
ex de,hl ; 4
; div32_16:
; ;HLIX/BC -> HLIX remainder DE
; ;174+4*div32_16_sub8
; ;min: 2186cc
; ;max: 2794cc
; ;avg: 2466cc
; ;61 bytes
; ex de,hl ; 4
; Negate BC to allow add instead of sbc
xor a ; 4
; Need to set HL to 0 anyways, so save 2cc and a byte
ld h,a ; 4
ld l,a ; 4
sub c ; 4
ld c,a ; 4
sbc a,a ; 4
sub b ; 4
ld b,a ; 4
; ; Negate BC to allow add instead of sbc
; xor a ; 4
; ; Need to set HL to 0 anyways, so save 2cc and a byte
; ld h,a ; 4
; ld l,a ; 4
; sub c ; 4
; ld c,a ; 4
; sbc a,a ; 4
; sub b ; 4
; ld b,a ; 4
ld a,d ; 4
call div32_16_sub8 ; 17
rla ; 4
ld d,a ; 4
; ld a,d ; 4
; call div32_16_sub8 ; 17
; rla ; 4
; ld d,a ; 4
ld a,e ; 4
call div32_16_sub8 ; 17
rla ; 4
ld e,a ; 4
; ld a,e ; 4
; call div32_16_sub8 ; 17
; rla ; 4
; ld e,a ; 4
ld a,ixh ; 8
call div32_16_sub8 ; 17
rla ; 4
ld ixh,a ; 8
; ld a,ixh ; 8
; call div32_16_sub8 ; 17
; rla ; 4
; ld ixh,a ; 8
ld a,ixl ; 8
call div32_16_sub8 ; 17
rla ; 4
ld ixl,a ; 8
; ld a,ixl ; 8
; call div32_16_sub8 ; 17
; rla ; 4
; ld ixl,a ; 8
;ex de,hl ; 4
ret ; 10
; ;ex de,hl ; 4
; ret ; 10
div32_16_sub8:
;119+8*div32_16_sub
;min: 503cc
;max: 655cc
;avg: 573cc
call 1F
1:
;17+2(17+2(div32_16_sub)))
call 1F
1:
;17+2(div32_16_sub)
call div32_16_sub
div32_16_sub:
;48+{8,0+{0,19}}
;min: 48cc
;max: 67cc
;avg: 56.75cc
rla ; 4
adc hl,hl ; 15
jr c,1F ;12/7
add hl,bc ; 11
ret c ;11/5
sbc hl,bc ; 15
ret ; 10
1:
add hl,bc ; 11
scf ; 4
ret ; 10
; div32_16_sub8:
; ;119+8*div32_16_sub
; ;min: 503cc
; ;max: 655cc
; ;avg: 573cc
; call 1F
; 1:
; ;17+2(17+2(div32_16_sub)))
; call 1F
; 1:
; ;17+2(div32_16_sub)
; call div32_16_sub
; div32_16_sub:
; ;48+{8,0+{0,19}}
; ;min: 48cc
; ;max: 67cc
; ;avg: 56.75cc
; rla ; 4
; adc hl,hl ; 15
; jr c,1F ;12/7
; add hl,bc ; 11
; ret c ;11/5
; sbc hl,bc ; 15
; ret ; 10
; 1:
; add hl,bc ; 11
; scf ; 4
; ret ; 10
ENDIF
*/
; ENDIF
;

View File

@ -1 +1 @@
831
843

View File

@ -29,7 +29,7 @@ echo_mode:
;-------------------------------------------------
RUN_BAT:
call BATCH
jp c,A83DD ; ®è¨¡ª  ®âªà. ä ©«  (cpp.asm)
jp c,EXEERR ; ®ט¨<D798>×  ®ג×א. ה ©«  (cpp.asm)
ret
;-------------------------------------------------

View File

@ -9,16 +9,14 @@
;///////////////////////////////////////////////////
cmd_date:
ex de,hl ; hl=ª®¬-áâப 
;ld de,T9186 ; ¡ãä¥à
ld de,work_buffer1;
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
RST ToDSS
;ld de,T9186
ld de,work_buffer1;
ld a,(de)
or a
jr z,cmd_dt1
call A893C
jr z,.cmd_dt1
call STR2DEC
jp c,invalid_param ; "Invalid parametr"
xor a
cp h
@ -28,7 +26,7 @@ cmd_date:
jp c,invalid_param ; "Invalid parametr"
ld b,l
push bc
call A893C
call STR2DEC
pop bc
jp c,invalid_param ; "Invalid parametr"
xor a
@ -39,7 +37,7 @@ cmd_date:
jp c,invalid_param ; "Invalid parametr"
ld c,l
push bc
call A893C
call STR2DEC
push hl
ld c,Dss.SysTime
RST ToDSS
@ -47,30 +45,55 @@ cmd_date:
pop de
ld c,Dss.SetTime
RST ToDSS
cmd_dt1:ld c,Dss.SysTime
.cmd_dt1:
ld c,Dss.SysTime
RST ToDSS
PUSH BC ; [ ] ¢ë¢®¤ ¤­ï ­¥¤¥«¨ 26/01/2023
push ix
push de
ld a,d ; ç¨á«®
ld hl,PRM1 ; ªã¤ 
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
ld a,"."
ld (hl),a
inc hl
pop de
ld a,e ; ç¨á«®
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
ld a,"."
ld (hl),a
inc hl
push hl
pop ix
pop hl
call A8964
call PDIGIT
; [ ] ¢ë¢®¤ ¤­ï ­¥¤¥«¨ 26/01/2023
POP DE
LD D,0
LD A,E
CP 8
JR C,.skip
LD E,8
.skip: LD HL,.days
LD BC,.days.size
CALL LCPIR
;
LD DE,PRM2
CALL ncopy_string
;
ld de,MAIN_MSG.DATE ; ¨­¤¥ªá "Current date: %1"
jp MESSAGE ; ¢ë¢¥á⨠áâபã
;
.days: DB 0
DZ "Sunday"
DZ "Monday"
DZ "Tuesday"
DZ "Wednesday"
DZ "Thursday"
DZ "Friday"
DZ "Saturday"
DZ "check CMOS!"
.days.size EQU $ - .days
;///////////////////////////////////////////////////
@ -89,7 +112,7 @@ cmd_time:
ld a,(de)
or a
jr z,cmd_tm1
call A893C
call STR2DEC
jp c,invalid_param ; "Invalid parametr"
xor a
cp h
@ -99,7 +122,7 @@ cmd_time:
jp c,invalid_param ; "Invalid parametr"
ld b,l
push bc
call A893C
call STR2DEC
pop bc
jp c,invalid_param ; "Invalid parametr"
xor a
@ -110,7 +133,7 @@ cmd_time:
jp c,invalid_param ; "Invalid parametr"
ld c,l
push bc
call A893C
call STR2DEC
pop bc
jp c,invalid_param ; "Invalid parametr"
xor a
@ -134,18 +157,18 @@ cmd_tm1:ld c,Dss.SysTime
push hl
ld a,h ; ç¨á«®
ld hl,PRM1 ; ªã¤ 
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
ld a,":"
ld (hl),a
inc hl
pop de
ld a,e ; ç¨á«®
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
ld a,":"
ld (hl),a
inc hl
pop af ; ç¨á«®
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
xor a
ld (hl),a ; ¢ ª®­¥æ áâப¨
ld de,MAIN_MSG.TIME ; ¨­¤¥ªá "Current time: %1"

View File

@ -146,7 +146,7 @@ cmd_dir:
; „¥áïâ¨ç­ë© ¢ë¢®¤
.print: ld hl,(D88DC)
ld ix,PRM1 ; ¡ãä¥à
call A8964
call PDIGIT
;
ld hl,(D88DE) ; ¬«. à §àï¤
exx
@ -209,7 +209,7 @@ cmd_dir:
; „¥áïâ¨ç­ë© ¢ë¢®¤
ld hl,(dir_number)
ld ix,PRM3 ; ¡ãä¥à
call A8964
call PDIGIT
;xor a
;ld (de),a
;

View File

@ -13,14 +13,14 @@ cmd_echo:
push de
ld b,3 ; ¤«¨­  áà ¢­¥­¨ï
ld hl,T8C21 ; "ON",0
call A874E ; áà ¢­¨âì áâப¨
call COMPARE ; áŕ ˘­¨âě áâப¨
pop de
ld a,true ; ०¨¬ "on"
jr z,A864B
push de
ld b,4 ; ¤«¨­  áà ¢­¥­¨ï
ld hl,T8C24 ; "OFF",0
call A874E ; áà ¢­¨âì áâப¨
call COMPARE ; áŕ ˘­¨âě áâப¨
pop hl
ld a,false ; ०¨¬ "off"
jr z,A864B

View File

@ -1,5 +1,5 @@
; à ¡. ï祩ª 
D8374: dw 0
SAVEHL: dw 0
@ -92,26 +92,25 @@ COMP: call EVALCMD ; (batch.asm)
; § ¤ ­ ­¥ ¤¨áª
RUN_EXT: ex de,hl ; ¢®ááâ.  ¤à¥á ­ ç «  áâப¨
ld (D8374),hl ; struct_input_line+5
ld de,T8C1A ; ¡ãä¥à
ld (SAVEHL),hl ; struct_input_line+5
ld de,EXTBF ; ¡ãä¥à
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©« 
RST ToDSS
ld hl,(D8374) ; ¨¬ï ä ©« 
jr c,A83D7 ; ¢ë¯®«­¨âì exe-ä ©«
ld hl,(SAVEHL) ; ¨¬ï ä ©« 
jr c,RUN_EXE ; ¢ë¯®«­¨âì exe-ä ©«
bit 1,a ; ¥áâì à áè. ?
jr z,A839D ; ­¥â
jr z,.NON_EXT ; ­¥â
; ¥áâì à áè. ä ©« 
ld de,T8C1A ; ¡ãä¥à à áè. ä ©« 
ld hl,T8C1E ; "BAT"
ld de,EXTBF ; ¡ãä¥à à áè. ä ©« 
ld hl,BATBF ; "BAT"
ld b,3 ; ¤«¨­  áà ¢­¥­¨ï ;!HARDCODE
call A874E ; áà ¢­¨âì áâப¨
ld hl,(D8374)
call COMPARE ; áà ¢­¨âì áâப¨
ld hl,(SAVEHL)
jp z,RUN_BAT ; ¢ë¯®«­¨âì bat-ä ©« (batch.asm)
jr A83D7 ; ¢ë¯®«­¨âì exe-ä ©«
A839D: ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã
jr RUN_EXE ; ¢ë¯®«­¨âì exe-ä ©«
.NON_EXT:
ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«­¨âì ¯à®£à ¬¬ã
RST ToDSS
;[x] 01/11/23 ;!TEST
PUSH AF
CALL RESTORE_ALL
@ -120,20 +119,19 @@ A839D: ld bc,0*256 + Dss.Exec ;
;[x] 25/10/23
JP NC,Ret_New_Line ; Ok
;
ld hl,(D8374)
ld hl,(SAVEHL)
cp DSS_Error.sys.FILE_NOT_FOUND
jr nz,A83DD
jr nz,EXEERR
push hl
;ld a,(D96AD) ; ¤«¨­  áâப¨ (inline.asm)
ld a,(struct_input_line+4) ; ¤«¨­  áâப¨
ld b,a
A83AF: ld a,(hl)
.loop: ld a,(hl)
cp " "+1
jr c,A83B7
jr c,.next
inc hl
djnz A83AF
A83B7: ld e,b
djnz .loop
.next: ld e,b
ld d,0
add hl,de
push hl
@ -159,7 +157,8 @@ A83B7: ld e,b
; ‚믮«­¨âì exe-ä ©«
; hl=¨¬ï ä ©« 
A83D7: ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«­¨âì ä ©«
RUN_EXE:
ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«­¨âì ä ©«
RST ToDSS
;[x] 01/11/23 ;!TEST
@ -171,7 +170,7 @@ A83D7: ld bc,0*256 + Dss.Exec ;
;[x] 25/10/23
JP NC,Ret_New_Line ; Ok
;
A83DD: cp DSS_Error.sys.INVALID_HANDLE ; ª®¤ ®è¨¡ª¨ "­¥â ¤¥áªà¨¯â®à "
EXEERR: cp DSS_Error.sys.INVALID_HANDLE ; ª®¤ ®è¨¡ª¨ "­¥â ¤¥áªà¨¯â®à "
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
xor a ; ¨­¤¥ªá "Bad command or file name"
jp print_err_message

View File

@ -32,7 +32,7 @@ MAIN_MSG:
db "Volume Serial Number is %2",CR,LF
db CR,LF,"Directory of %3",CR,LF,LF,0
stN .VERS_ : db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
stN .DATE_ : db "Current date: %1",CR,LF,0
stN .DATE_ : db "Current date: %1, %2",CR,LF,0 ; [ ] ¢ë¢®¤ ¤­ï ­¥¤¥«¨ 26/01/2023
stN .TIME_ : db "Current time: %1",CR,LF,0
stN .PAUSE_ : db "Press any key to continue . . .",CR,0
stN .INV_ : db "Invalid parametr",CR,LF,0

View File

@ -26,7 +26,7 @@ hex8: push af
;----------------------------------------------------------------------;
;!FIXIT ¥áâì ¤ã¡«ì hex2dec_ascii_16bit
;!FIXIT ¥áâì ¤ã¡«ì PDIGIT
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
hex2dec_ascii_16bit:
.n10: ld ix,.tmp1

View File

@ -359,17 +359,18 @@ newline: push hl
; in: de=string1
; hl=string2
; b=¤«¨­  áâப¨
A874E: ld a,(de)
COMPARE:
ld a,(de)
cp "a"
jr c,$+8
jr c,.next
cp "z"+1
jr nc,$+4
jr nc,.next
and 5Fh ; a..z -> A..Z
cp (hl)
.next: cp (hl)
ret nz
inc hl
inc de
djnz A874E
djnz COMPARE
ret
@ -401,10 +402,10 @@ copy_string:
; „¥áïâ¨ç­ë© ¢ë¢®¤ ¢ ¡ãä¥à
; ¢å®¤: a=ç¨á«®
; hl=¡ãä¥à
A8913: ld c,2Fh
inc c
PUTB: ld c,2Fh
.loop: inc c
sub 10
jr nc,$-3
jr nc,.loop
add a,10
add a,"0"
push af
@ -418,8 +419,9 @@ A8913: ld c,2Fh
A893C: ld hl,0
A893F: ld a,(de)
STR2DEC:
ld hl,0
.loop: ld a,(de)
inc de
or a
ret z
@ -435,17 +437,15 @@ A893F: ld a,(de)
add hl,hl
add hl,bc
add hl,hl
call A895A
call .ATODEC
ret c
add a,l
ld l,a
jr nc,A893F
jr nc,.loop
inc h
jr A893F
; char -> int
A895A: cp "0"
jr .loop
.ATODEC:; char -> int
cp "0"
ret c
cp "9"+1
ccf
@ -453,17 +453,17 @@ A895A: cp "0"
sub "0"
ret
;!FIXIT ¥áâì ¤ã¡«
A8964: ld de,10000
;!FIXIT ¥áâì ¤ã¡« hex2dec_ascii_16bit
PDIGIT: ld de,10000
ld a,#C8 ; ret z
ld (D8996),a
call A898E
ld (.patch),a
call .DIG
ld de,1000
call A898E
call .DIG
ld de,100
call A898E
call .DIG
ld de,10
call A898E
call .DIG
ld a,l
add a,"0"
;!TEST
@ -474,20 +474,18 @@ A8964: ld de,10000
LD (IX+1),0
;
ret
A898E: xor a
.DIG: xor a
inc a
sbc hl,de
jr nc,$-3
add hl,de
dec a
D8996: ret z
.patch: ret z
add a,"0"
ld (ix+0),a
inc ix
xor a ; nop
ld (D8996),a
ld (.patch),a
ret
@ -522,11 +520,10 @@ RUNMODE: db 0
; ¡ãä¥à à áè. ä ©« 
T8C1A: ds 3
db 0
; ¡ãä¥à à áè. ä ©«  á ®£à ­¨ç¨â¥«¥¬ 0
EXTBF: BLOCK 4,0
T8C1E: db "BAT" ; à áè. bat-ä ©« 
BATBF: db "BAT" ; à áè. bat-ä ©« 
T8C21: db "ON",0
T8C24: db "OFF",0

View File

@ -1 +1 @@
297
303

@ -1 +1 @@
Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e