mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
Core: fixed error in EXEC, SYSTIME. Shell: CMD_DATE - printing day of week
This commit is contained in:
parent
ec7682cf21
commit
43b8683575
@ -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
|
||||
|
||||
@ -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
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
; 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,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,ixl ; 8
|
||||
call div32_16_sub8 ; 17
|
||||
rla ; 4
|
||||
ld ixl,a ; 8
|
||||
|
||||
; div32_16:
|
||||
; ;HLIX/BC -> HLIX remainder DE
|
||||
; ;174+4*div32_16_sub8
|
||||
; ;min: 2186cc
|
||||
; ;max: 2794cc
|
||||
; ;avg: 2466cc
|
||||
; ;61 bytes
|
||||
; 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
|
||||
; ; 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
|
||||
|
||||
ENDIF
|
||||
*/
|
||||
|
||||
; 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,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
|
||||
|
||||
; ;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
|
||||
|
||||
; ENDIF
|
||||
;
|
||||
@ -1 +1 @@
|
||||
831
|
||||
843
|
||||
@ -29,7 +29,7 @@ echo_mode:
|
||||
;-------------------------------------------------
|
||||
RUN_BAT:
|
||||
call BATCH
|
||||
jp c,A83DD ; ®è¨¡ª ®âªà. ä ©« (cpp.asm)
|
||||
jp c,EXEERR ; ®ט¨<D798>× ®ג×א. ה ©« (cpp.asm)
|
||||
ret
|
||||
;-------------------------------------------------
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -26,7 +26,7 @@ hex8: push af
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;!FIXIT ¥áâì ¤ã¡«ì hex2dec_ascii_16bit
|
||||
;!FIXIT ¥áâì ¤ã¡«ì PDIGIT
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
hex2dec_ascii_16bit:
|
||||
.n10: ld ix,.tmp1
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
297
|
||||
303
|
||||
@ -1 +1 @@
|
||||
Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3
|
||||
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e
|
||||
Loading…
Reference in New Issue
Block a user