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,35 +122,48 @@ 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
PUSH AF
LD D,7 ;DAY
CALL WCMOS
POP BC
LD A,C
LD D,8 ;MONTH
CALL WCMOS
POP AF
PUSH AF
LD D,4 ;HOUR
CALL WCMOS
POP BC
LD A,C
LD D,2 ;MINUTE
CALL WCMOS
POP AF
PUSH AF
LD D,0 ;SECOND
CALL WCMOS
POP BC
LD A,C
LD D,6 ;WEEK DAY
LD D,CMOS.Register.dayOfWeek
LD C,BIOS.CMOS_WR
RST ToBIOS
;
POP AF
PUSH AF
LD D,CMOS.Register.date
CALL WCMOS
POP BC
LD A,C
LD D,CMOS.Register.month
CALL WCMOS
POP AF
PUSH AF
LD D,CMOS.Register.hours
CALL WCMOS
POP BC
LD A,C
LD D,CMOS.Register.minutes
CALL WCMOS
POP AF
;PUSH AF ; [ ] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
LD D,CMOS.Register.seconds
CALL WCMOS
; [ ] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
;POP BC
;LD A,C
;LD D,CMOS.Register.dayOfWeek
;LD C,BIOS.CMOS_WR
;RST ToBIOS
;
POP HL
XOR A
LD DE,100
@ -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