mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +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
|
LD C,BIOS.CMOS_TEST
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
JP C,.NOCMOS
|
JP C,.NOCMOS
|
||||||
LD D,7 ;DAY
|
LD D,CMOS.Register.date
|
||||||
CALL RCMOS
|
CALL RCMOS
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,8 ;MONTH
|
LD D,CMOS.Register.month
|
||||||
CALL RCMOS
|
CALL RCMOS
|
||||||
POP DE
|
POP DE
|
||||||
LD E,A
|
LD E,A
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD D,4 ;HOUR
|
LD D,CMOS.Register.hours
|
||||||
CALL RCMOS
|
CALL RCMOS
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,2 ;MINUTE
|
LD D,CMOS.Register.minutes
|
||||||
CALL RCMOS
|
CALL RCMOS
|
||||||
POP DE
|
POP DE
|
||||||
LD E,A
|
LD E,A
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD D,0 ;SECOND
|
LD D,CMOS.Register.seconds
|
||||||
CALL RCMOS
|
CALL RCMOS
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,6 ;WEEK DAY
|
LD D,CMOS.Register.dayOfWeek
|
||||||
LD C,BIOS.CMOS_RD
|
LD C,BIOS.CMOS_RD
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP DE
|
POP DE
|
||||||
LD E,A
|
LD E,A
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD D,9 ;YEAR
|
LD D,CMOS.Register.year
|
||||||
CALL RCMOS ;READ AND CONVERT TO DECIMAL
|
CALL RCMOS ;READ AND CONVERT TO DECIMAL
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,#32 ;CENTURY
|
LD D,CMOS.Register.century
|
||||||
LD C,BIOS.CMOS_RD
|
LD C,BIOS.CMOS_RD
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
LD XH,A
|
LD XH,A
|
||||||
@ -61,7 +61,7 @@ SYSTIME:
|
|||||||
JR Z,.GOODAGE
|
JR Z,.GOODAGE
|
||||||
.BADAGE:
|
.BADAGE:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,#32 ;CENTURY
|
LD D,CMOS.Register.century
|
||||||
LD C,BIOS.CMOS_WR
|
LD C,BIOS.CMOS_WR
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP AF
|
POP AF
|
||||||
@ -122,34 +122,47 @@ SETTIME:
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
|
;
|
||||||
|
; [ ] 25/01/2024
|
||||||
|
CALL CalcDayOfWeek
|
||||||
|
PUSH HL
|
||||||
|
;
|
||||||
LD C,BIOS.CMOS_TEST
|
LD C,BIOS.CMOS_TEST
|
||||||
RST ToBIOS
|
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
|
POP AF
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,7 ;DAY
|
LD D,CMOS.Register.date
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP BC
|
POP BC
|
||||||
LD A,C
|
LD A,C
|
||||||
LD D,8 ;MONTH
|
LD D,CMOS.Register.month
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP AF
|
POP AF
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD D,4 ;HOUR
|
LD D,CMOS.Register.hours
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP BC
|
POP BC
|
||||||
LD A,C
|
LD A,C
|
||||||
LD D,2 ;MINUTE
|
LD D,CMOS.Register.minutes
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP AF
|
POP AF
|
||||||
PUSH AF
|
;PUSH AF ; [ ] ¡ £ á ãáâ ®¢ª®© ¤ï ¥¤¥«¨ ¨§ ॣ¨áâà C. <20> 襫 Hard
|
||||||
LD D,0 ;SECOND
|
LD D,CMOS.Register.seconds
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP BC
|
; [ ] ¡ £ á ãáâ ®¢ª®© ¤ï ¥¤¥«¨ ¨§ ॣ¨áâà C. <20> 襫 Hard
|
||||||
LD A,C
|
;POP BC
|
||||||
LD D,6 ;WEEK DAY
|
;LD A,C
|
||||||
LD C,BIOS.CMOS_WR
|
;LD D,CMOS.Register.dayOfWeek
|
||||||
RST ToBIOS
|
;LD C,BIOS.CMOS_WR
|
||||||
|
;RST ToBIOS
|
||||||
;
|
;
|
||||||
POP HL
|
POP HL
|
||||||
XOR A
|
XOR A
|
||||||
@ -160,17 +173,23 @@ SETTIME:
|
|||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
DEC A
|
DEC A
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD D,#32 ;CENTURY
|
LD D,CMOS.Register.century
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
POP BC
|
POP BC
|
||||||
LD A,C
|
LD A,C
|
||||||
LD D,9 ;YEAR
|
LD D,CMOS.Register.year
|
||||||
CALL WCMOS
|
CALL WCMOS
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
; !FIXIT ®¢ë© ¡¨®á ¢ëáâ ¢«ï¥â ¢à¥¬ï, ¥á«¨ á ¨¬ çâ®-â® ¥ â ª.
|
; !FIXIT ®¢ë© ¡¨®á ¢ëáâ ¢«ï¥â ¢à¥¬ï, ¥á«¨ á ¨¬ çâ®-â® ¥ â ª.
|
||||||
.NOCMOS2:
|
.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_DAY),DE ;DAY/MONTH
|
||||||
LD (SYSTIME.NC_HOUR),HL ;HOUR/MINUTE
|
LD (SYSTIME.NC_HOUR),HL ;HOUR/MINUTE
|
||||||
LD (SYSTIME.NC_SEC),BC ;SECOND/WEEKDAY
|
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
|
LD (CORE_BUFFERS.FM_BUF + _sFM.F_SIZE),HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
CALL LOADDIR
|
JP LOADDIR
|
||||||
; CF=0
|
; CF=0
|
||||||
;AND A
|
;AND A
|
||||||
RET
|
;RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -858,6 +858,7 @@ EXEC: LD (CMDLINE),HL
|
|||||||
;LD HL,(CMDLINE)
|
;LD HL,(CMDLINE)
|
||||||
JR C,EXEC0_SHORT
|
JR C,EXEC0_SHORT
|
||||||
.VAR_2: CALL EXEC_1
|
.VAR_2: CALL EXEC_1
|
||||||
|
;LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
SCF
|
SCF
|
||||||
RET ; File not found - exit
|
RET ; File not found - exit
|
||||||
|
|
||||||
@ -873,7 +874,7 @@ EXEC_1: ;LD (CMDLINE),HL
|
|||||||
CALL MASK
|
CALL MASK
|
||||||
RET C
|
RET C
|
||||||
CALL TST_EXT
|
CALL TST_EXT
|
||||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
;LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
RET C
|
RET C
|
||||||
_mINCTASK ;R08
|
_mINCTASK ;R08
|
||||||
CALL OPEN_FN.FILE
|
CALL OPEN_FN.FILE
|
||||||
@ -914,6 +915,7 @@ COPYEXN: LD A,(HL)
|
|||||||
|
|
||||||
CALL FINDPATH
|
CALL FINDPATH
|
||||||
;[x] 1/10/2023
|
;[x] 1/10/2023
|
||||||
|
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
LD HL,(CMDLINE)
|
LD HL,(CMDLINE)
|
||||||
|
|||||||
@ -327,7 +327,7 @@ LOADDIR:
|
|||||||
CALL MOVE_FP
|
CALL MOVE_FP
|
||||||
|
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
|
AND A
|
||||||
PUSH AF
|
PUSH AF
|
||||||
;!TEST no ldir
|
;!TEST no ldir
|
||||||
; ®ç¨áâ¨âì ª¥è ª â «®£
|
; ®ç¨áâ¨âì ª¥è ª â «®£
|
||||||
@ -349,11 +349,9 @@ LOADDIR:
|
|||||||
LD DE,#4000 ; ᪮«ìª®
|
LD DE,#4000 ; ᪮«ìª®
|
||||||
XOR A ; ¤¥áªà¨¯â®à
|
XOR A ; ¤¥áªà¨¯â®à
|
||||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||||
;!FIXIT 能恥丞<E681A5> <20> 株芋芥
|
|
||||||
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
|
||||||
RET
|
RET
|
||||||
.LROTDIR:
|
.LROTDIR:
|
||||||
LD HL,(FatBuffer.DIR_FRH) ; áâ. à §àï¤
|
LD HL,(FatBuffer.DIR_FRH) ; áâ. à §àï¤
|
||||||
@ -376,7 +374,6 @@ LOADDIR:
|
|||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
AND A
|
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
@ -650,7 +647,7 @@ RD_BPB: LD C,SLOT3
|
|||||||
|
|
||||||
LD (FatBuffer.CLU_LEN),HL
|
LD (FatBuffer.CLU_LEN),HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,#3FFF ;!TODO FATcacheSize
|
LD HL,#3FFF ;!HARDCODE ;!TODO FATcacheSize
|
||||||
XOR A
|
XOR A
|
||||||
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤ ¯® ¤®¡¨âáï
|
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤ ¯® ¤®¡¨âáï
|
||||||
.loop4: INC A
|
.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
|
; 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
|
; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). ‹¥£ª® ¯¥à¥¤¥« âì ¯®¤ HL:DE / A => HL:DE.A
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
DIV_for_SPC:
|
DIV_for_SPC:
|
||||||
@ -231,107 +362,106 @@ DIV_for_SPC:
|
|||||||
; LD H,0
|
; LD H,0
|
||||||
; LD L,A
|
; LD L,A
|
||||||
; RET
|
; RET
|
||||||
/*
|
|
||||||
DEFINE NEW_DIV 1
|
|
||||||
|
|
||||||
DIV32: LD XH,D
|
; DEFINE NEW_DIV 1
|
||||||
LD XL,E
|
|
||||||
|
|
||||||
IFN NEW_DIV
|
; DIV32: LD XH,D
|
||||||
EX DE,HL
|
; LD XL,E
|
||||||
LD HL,0
|
|
||||||
LD A,#20
|
; IFN NEW_DIV
|
||||||
DIV001: ADD IX,IX
|
; EX DE,HL
|
||||||
EX DE,HL
|
; LD HL,0
|
||||||
ADC HL,HL
|
; LD A,#20
|
||||||
EX DE,HL
|
; DIV001: ADD IX,IX
|
||||||
ADC HL,HL
|
; EX DE,HL
|
||||||
SBC HL,BC
|
; ADC HL,HL
|
||||||
JR NC,DIV002
|
; EX DE,HL
|
||||||
ADD HL,BC
|
; ADC HL,HL
|
||||||
DEC A
|
; SBC HL,BC
|
||||||
JR NZ,DIV001
|
; JR NC,DIV002
|
||||||
RET
|
; ADD HL,BC
|
||||||
DIV002: INC IX
|
; DEC A
|
||||||
DEC A
|
; JR NZ,DIV001
|
||||||
JR NZ,DIV001
|
; RET
|
||||||
RET
|
; DIV002: INC IX
|
||||||
ELSE
|
; DEC A
|
||||||
|
; JR NZ,DIV001
|
||||||
|
; RET
|
||||||
|
; ELSE
|
||||||
|
|
||||||
|
|
||||||
div32_16:
|
; div32_16:
|
||||||
;HLIX/BC -> HLIX remainder DE
|
; ;HLIX/BC -> HLIX remainder DE
|
||||||
;174+4*div32_16_sub8
|
; ;174+4*div32_16_sub8
|
||||||
;min: 2186cc
|
; ;min: 2186cc
|
||||||
;max: 2794cc
|
; ;max: 2794cc
|
||||||
;avg: 2466cc
|
; ;avg: 2466cc
|
||||||
;61 bytes
|
; ;61 bytes
|
||||||
ex de,hl ; 4
|
; ex de,hl ; 4
|
||||||
|
|
||||||
; Negate BC to allow add instead of sbc
|
; ; Negate BC to allow add instead of sbc
|
||||||
xor a ; 4
|
; xor a ; 4
|
||||||
; Need to set HL to 0 anyways, so save 2cc and a byte
|
; ; Need to set HL to 0 anyways, so save 2cc and a byte
|
||||||
ld h,a ; 4
|
; ld h,a ; 4
|
||||||
ld l,a ; 4
|
; ld l,a ; 4
|
||||||
sub c ; 4
|
; sub c ; 4
|
||||||
ld c,a ; 4
|
; ld c,a ; 4
|
||||||
sbc a,a ; 4
|
; sbc a,a ; 4
|
||||||
sub b ; 4
|
; sub b ; 4
|
||||||
ld b,a ; 4
|
; ld b,a ; 4
|
||||||
|
|
||||||
|
|
||||||
ld a,d ; 4
|
; ld a,d ; 4
|
||||||
call div32_16_sub8 ; 17
|
; call div32_16_sub8 ; 17
|
||||||
rla ; 4
|
; rla ; 4
|
||||||
ld d,a ; 4
|
; ld d,a ; 4
|
||||||
|
|
||||||
ld a,e ; 4
|
; ld a,e ; 4
|
||||||
call div32_16_sub8 ; 17
|
; call div32_16_sub8 ; 17
|
||||||
rla ; 4
|
; rla ; 4
|
||||||
ld e,a ; 4
|
; ld e,a ; 4
|
||||||
|
|
||||||
ld a,ixh ; 8
|
; ld a,ixh ; 8
|
||||||
call div32_16_sub8 ; 17
|
; call div32_16_sub8 ; 17
|
||||||
rla ; 4
|
; rla ; 4
|
||||||
ld ixh,a ; 8
|
; ld ixh,a ; 8
|
||||||
|
|
||||||
ld a,ixl ; 8
|
; ld a,ixl ; 8
|
||||||
call div32_16_sub8 ; 17
|
; call div32_16_sub8 ; 17
|
||||||
rla ; 4
|
; rla ; 4
|
||||||
ld ixl,a ; 8
|
; ld ixl,a ; 8
|
||||||
|
|
||||||
;ex de,hl ; 4
|
; ;ex de,hl ; 4
|
||||||
ret ; 10
|
; ret ; 10
|
||||||
|
|
||||||
div32_16_sub8:
|
; div32_16_sub8:
|
||||||
;119+8*div32_16_sub
|
; ;119+8*div32_16_sub
|
||||||
;min: 503cc
|
; ;min: 503cc
|
||||||
;max: 655cc
|
; ;max: 655cc
|
||||||
;avg: 573cc
|
; ;avg: 573cc
|
||||||
call 1F
|
; call 1F
|
||||||
1:
|
; 1:
|
||||||
;17+2(17+2(div32_16_sub)))
|
; ;17+2(17+2(div32_16_sub)))
|
||||||
call 1F
|
; call 1F
|
||||||
1:
|
; 1:
|
||||||
;17+2(div32_16_sub)
|
; ;17+2(div32_16_sub)
|
||||||
call div32_16_sub
|
; call div32_16_sub
|
||||||
div32_16_sub:
|
; div32_16_sub:
|
||||||
;48+{8,0+{0,19}}
|
; ;48+{8,0+{0,19}}
|
||||||
;min: 48cc
|
; ;min: 48cc
|
||||||
;max: 67cc
|
; ;max: 67cc
|
||||||
;avg: 56.75cc
|
; ;avg: 56.75cc
|
||||||
rla ; 4
|
; rla ; 4
|
||||||
adc hl,hl ; 15
|
; adc hl,hl ; 15
|
||||||
jr c,1F ;12/7
|
; jr c,1F ;12/7
|
||||||
add hl,bc ; 11
|
; add hl,bc ; 11
|
||||||
ret c ;11/5
|
; ret c ;11/5
|
||||||
sbc hl,bc ; 15
|
; sbc hl,bc ; 15
|
||||||
ret ; 10
|
; ret ; 10
|
||||||
1:
|
; 1:
|
||||||
add hl,bc ; 11
|
; add hl,bc ; 11
|
||||||
scf ; 4
|
; scf ; 4
|
||||||
ret ; 10
|
; ret ; 10
|
||||||
|
|
||||||
ENDIF
|
; ENDIF
|
||||||
*/
|
|
||||||
;
|
;
|
||||||
@ -1 +1 @@
|
|||||||
831
|
843
|
||||||
@ -29,7 +29,7 @@ echo_mode:
|
|||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
RUN_BAT:
|
RUN_BAT:
|
||||||
call BATCH
|
call BATCH
|
||||||
jp c,A83DD ; ®è¨¡ª ®âªà. ä ©« (cpp.asm)
|
jp c,EXEERR ; ®ט¨<D798>× ®ג×א. ה ©« (cpp.asm)
|
||||||
ret
|
ret
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@ -9,16 +9,14 @@
|
|||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_date:
|
cmd_date:
|
||||||
ex de,hl ; hl=ª®¬-áâப
|
ex de,hl ; hl=ª®¬-áâப
|
||||||
;ld de,T9186 ; ¡ãä¥à
|
|
||||||
ld de,work_buffer1;
|
ld de,work_buffer1;
|
||||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;ld de,T9186
|
|
||||||
ld de,work_buffer1;
|
ld de,work_buffer1;
|
||||||
ld a,(de)
|
ld a,(de)
|
||||||
or a
|
or a
|
||||||
jr z,cmd_dt1
|
jr z,.cmd_dt1
|
||||||
call A893C
|
call STR2DEC
|
||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
xor a
|
xor a
|
||||||
cp h
|
cp h
|
||||||
@ -28,7 +26,7 @@ cmd_date:
|
|||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
ld b,l
|
ld b,l
|
||||||
push bc
|
push bc
|
||||||
call A893C
|
call STR2DEC
|
||||||
pop bc
|
pop bc
|
||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
xor a
|
xor a
|
||||||
@ -39,7 +37,7 @@ cmd_date:
|
|||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
ld c,l
|
ld c,l
|
||||||
push bc
|
push bc
|
||||||
call A893C
|
call STR2DEC
|
||||||
push hl
|
push hl
|
||||||
ld c,Dss.SysTime
|
ld c,Dss.SysTime
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
@ -47,30 +45,55 @@ cmd_date:
|
|||||||
pop de
|
pop de
|
||||||
ld c,Dss.SetTime
|
ld c,Dss.SetTime
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
cmd_dt1:ld c,Dss.SysTime
|
.cmd_dt1:
|
||||||
|
ld c,Dss.SysTime
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
PUSH BC ; [ ] ¢ë¢®¤ ¤ï ¥¤¥«¨ 26/01/2023
|
||||||
push ix
|
push ix
|
||||||
push de
|
push de
|
||||||
ld a,d ; ç¨á«®
|
ld a,d ; ç¨á«®
|
||||||
ld hl,PRM1 ; ªã¤
|
ld hl,PRM1 ; ªã¤
|
||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
ld a,"."
|
ld a,"."
|
||||||
ld (hl),a
|
ld (hl),a
|
||||||
inc hl
|
inc hl
|
||||||
pop de
|
pop de
|
||||||
ld a,e ; ç¨á«®
|
ld a,e ; ç¨á«®
|
||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
ld a,"."
|
ld a,"."
|
||||||
ld (hl),a
|
ld (hl),a
|
||||||
inc hl
|
inc hl
|
||||||
push hl
|
push hl
|
||||||
pop ix
|
pop ix
|
||||||
pop hl
|
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"
|
ld de,MAIN_MSG.DATE ; ¨¤¥ªá "Current date: %1"
|
||||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
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)
|
ld a,(de)
|
||||||
or a
|
or a
|
||||||
jr z,cmd_tm1
|
jr z,cmd_tm1
|
||||||
call A893C
|
call STR2DEC
|
||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
xor a
|
xor a
|
||||||
cp h
|
cp h
|
||||||
@ -99,7 +122,7 @@ cmd_time:
|
|||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
ld b,l
|
ld b,l
|
||||||
push bc
|
push bc
|
||||||
call A893C
|
call STR2DEC
|
||||||
pop bc
|
pop bc
|
||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
xor a
|
xor a
|
||||||
@ -110,7 +133,7 @@ cmd_time:
|
|||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
ld c,l
|
ld c,l
|
||||||
push bc
|
push bc
|
||||||
call A893C
|
call STR2DEC
|
||||||
pop bc
|
pop bc
|
||||||
jp c,invalid_param ; "Invalid parametr"
|
jp c,invalid_param ; "Invalid parametr"
|
||||||
xor a
|
xor a
|
||||||
@ -134,18 +157,18 @@ cmd_tm1:ld c,Dss.SysTime
|
|||||||
push hl
|
push hl
|
||||||
ld a,h ; ç¨á«®
|
ld a,h ; ç¨á«®
|
||||||
ld hl,PRM1 ; ªã¤
|
ld hl,PRM1 ; ªã¤
|
||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
ld a,":"
|
ld a,":"
|
||||||
ld (hl),a
|
ld (hl),a
|
||||||
inc hl
|
inc hl
|
||||||
pop de
|
pop de
|
||||||
ld a,e ; ç¨á«®
|
ld a,e ; ç¨á«®
|
||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
ld a,":"
|
ld a,":"
|
||||||
ld (hl),a
|
ld (hl),a
|
||||||
inc hl
|
inc hl
|
||||||
pop af ; ç¨á«®
|
pop af ; ç¨á«®
|
||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call PUTB ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
xor a
|
xor a
|
||||||
ld (hl),a ; ¢ ª®¥æ áâப¨
|
ld (hl),a ; ¢ ª®¥æ áâப¨
|
||||||
ld de,MAIN_MSG.TIME ; ¨¤¥ªá "Current time: %1"
|
ld de,MAIN_MSG.TIME ; ¨¤¥ªá "Current time: %1"
|
||||||
|
|||||||
@ -146,7 +146,7 @@ cmd_dir:
|
|||||||
; „¥áïâ¨çë© ¢ë¢®¤
|
; „¥áïâ¨çë© ¢ë¢®¤
|
||||||
.print: ld hl,(D88DC)
|
.print: ld hl,(D88DC)
|
||||||
ld ix,PRM1 ; ¡ãä¥à
|
ld ix,PRM1 ; ¡ãä¥à
|
||||||
call A8964
|
call PDIGIT
|
||||||
;
|
;
|
||||||
ld hl,(D88DE) ; ¬«. à §àï¤
|
ld hl,(D88DE) ; ¬«. à §àï¤
|
||||||
exx
|
exx
|
||||||
@ -209,7 +209,7 @@ cmd_dir:
|
|||||||
; „¥áïâ¨çë© ¢ë¢®¤
|
; „¥áïâ¨çë© ¢ë¢®¤
|
||||||
ld hl,(dir_number)
|
ld hl,(dir_number)
|
||||||
ld ix,PRM3 ; ¡ãä¥à
|
ld ix,PRM3 ; ¡ãä¥à
|
||||||
call A8964
|
call PDIGIT
|
||||||
;xor a
|
;xor a
|
||||||
;ld (de),a
|
;ld (de),a
|
||||||
;
|
;
|
||||||
|
|||||||
@ -13,14 +13,14 @@ cmd_echo:
|
|||||||
push de
|
push de
|
||||||
ld b,3 ; ¤«¨ áà ¢¥¨ï
|
ld b,3 ; ¤«¨ áà ¢¥¨ï
|
||||||
ld hl,T8C21 ; "ON",0
|
ld hl,T8C21 ; "ON",0
|
||||||
call A874E ; áà ¢¨âì áâப¨
|
call COMPARE ; áŕ ˘¨âě áâப¨
|
||||||
pop de
|
pop de
|
||||||
ld a,true ; ०¨¬ "on"
|
ld a,true ; ०¨¬ "on"
|
||||||
jr z,A864B
|
jr z,A864B
|
||||||
push de
|
push de
|
||||||
ld b,4 ; ¤«¨ áà ¢¥¨ï
|
ld b,4 ; ¤«¨ áà ¢¥¨ï
|
||||||
ld hl,T8C24 ; "OFF",0
|
ld hl,T8C24 ; "OFF",0
|
||||||
call A874E ; áà ¢¨âì áâப¨
|
call COMPARE ; áŕ ˘¨âě áâப¨
|
||||||
pop hl
|
pop hl
|
||||||
ld a,false ; ०¨¬ "off"
|
ld a,false ; ०¨¬ "off"
|
||||||
jr z,A864B
|
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 ; ¢®ááâ. ¤à¥á ç « áâப¨
|
RUN_EXT: ex de,hl ; ¢®ááâ. ¤à¥á ç « áâப¨
|
||||||
ld (D8374),hl ; struct_input_line+5
|
ld (SAVEHL),hl ; struct_input_line+5
|
||||||
ld de,T8C1A ; ¡ãä¥à
|
ld de,EXTBF ; ¡ãä¥à
|
||||||
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©«
|
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©«
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
ld hl,(D8374) ; ¨¬ï ä ©«
|
ld hl,(SAVEHL) ; ¨¬ï ä ©«
|
||||||
jr c,A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
jr c,RUN_EXE ; ¢ë¯®«¨âì exe-ä ©«
|
||||||
bit 1,a ; ¥áâì à áè. ?
|
bit 1,a ; ¥áâì à áè. ?
|
||||||
jr z,A839D ; ¥â
|
jr z,.NON_EXT ; ¥â
|
||||||
; ¥áâì à áè. ä ©«
|
; ¥áâì à áè. ä ©«
|
||||||
ld de,T8C1A ; ¡ãä¥à à áè. ä ©«
|
ld de,EXTBF ; ¡ãä¥à à áè. ä ©«
|
||||||
ld hl,T8C1E ; "BAT"
|
ld hl,BATBF ; "BAT"
|
||||||
ld b,3 ; ¤«¨ áà ¢¥¨ï ;!HARDCODE
|
ld b,3 ; ¤«¨ áà ¢¥¨ï ;!HARDCODE
|
||||||
call A874E ; áà ¢¨âì áâப¨
|
call COMPARE ; áà ¢¨âì áâப¨
|
||||||
ld hl,(D8374)
|
ld hl,(SAVEHL)
|
||||||
jp z,RUN_BAT ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
jp z,RUN_BAT ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||||||
jr A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
jr RUN_EXE ; ¢ë¯®«¨âì exe-ä ©«
|
||||||
|
.NON_EXT:
|
||||||
A839D: ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
;[x] 01/11/23 ;!TEST
|
;[x] 01/11/23 ;!TEST
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL RESTORE_ALL
|
CALL RESTORE_ALL
|
||||||
@ -120,20 +119,19 @@ A839D: ld bc,0*256 + Dss.Exec ;
|
|||||||
;[x] 25/10/23
|
;[x] 25/10/23
|
||||||
JP NC,Ret_New_Line ; Ok
|
JP NC,Ret_New_Line ; Ok
|
||||||
;
|
;
|
||||||
|
ld hl,(SAVEHL)
|
||||||
ld hl,(D8374)
|
|
||||||
cp DSS_Error.sys.FILE_NOT_FOUND
|
cp DSS_Error.sys.FILE_NOT_FOUND
|
||||||
jr nz,A83DD
|
jr nz,EXEERR
|
||||||
push hl
|
push hl
|
||||||
;ld a,(D96AD) ; ¤«¨ áâப¨ (inline.asm)
|
;ld a,(D96AD) ; ¤«¨ áâப¨ (inline.asm)
|
||||||
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
||||||
ld b,a
|
ld b,a
|
||||||
A83AF: ld a,(hl)
|
.loop: ld a,(hl)
|
||||||
cp " "+1
|
cp " "+1
|
||||||
jr c,A83B7
|
jr c,.next
|
||||||
inc hl
|
inc hl
|
||||||
djnz A83AF
|
djnz .loop
|
||||||
A83B7: ld e,b
|
.next: ld e,b
|
||||||
ld d,0
|
ld d,0
|
||||||
add hl,de
|
add hl,de
|
||||||
push hl
|
push hl
|
||||||
@ -159,7 +157,8 @@ A83B7: ld e,b
|
|||||||
|
|
||||||
; ‚믮«¨âì exe-ä ©«
|
; ‚믮«¨âì exe-ä ©«
|
||||||
; hl=¨¬ï ä ©«
|
; hl=¨¬ï ä ©«
|
||||||
A83D7: ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
RUN_EXE:
|
||||||
|
ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
;[x] 01/11/23 ;!TEST
|
;[x] 01/11/23 ;!TEST
|
||||||
@ -171,7 +170,7 @@ A83D7: ld bc,0*256 + Dss.Exec ;
|
|||||||
;[x] 25/10/23
|
;[x] 25/10/23
|
||||||
JP NC,Ret_New_Line ; Ok
|
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 ; ¢ë¢®¤ á®®¡é¥¨ï
|
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||||
xor a ; ¨¤¥ªá "Bad command or file name"
|
xor a ; ¨¤¥ªá "Bad command or file name"
|
||||||
jp print_err_message
|
jp print_err_message
|
||||||
|
|||||||
@ -32,7 +32,7 @@ MAIN_MSG:
|
|||||||
db "Volume Serial Number is %2",CR,LF
|
db "Volume Serial Number is %2",CR,LF
|
||||||
db CR,LF,"Directory of %3",CR,LF,LF,0
|
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 .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 .TIME_ : db "Current time: %1",CR,LF,0
|
||||||
stN .PAUSE_ : db "Press any key to continue . . .",CR,0
|
stN .PAUSE_ : db "Press any key to continue . . .",CR,0
|
||||||
stN .INV_ : db "Invalid parametr",CR,LF,0
|
stN .INV_ : db "Invalid parametr",CR,LF,0
|
||||||
|
|||||||
@ -26,7 +26,7 @@ hex8: push af
|
|||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;!FIXIT ¥áâì ¤ã¡«ì hex2dec_ascii_16bit
|
;!FIXIT ¥áâì ¤ã¡«ì PDIGIT
|
||||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||||
hex2dec_ascii_16bit:
|
hex2dec_ascii_16bit:
|
||||||
.n10: ld ix,.tmp1
|
.n10: ld ix,.tmp1
|
||||||
|
|||||||
@ -359,17 +359,18 @@ newline: push hl
|
|||||||
; in: de=string1
|
; in: de=string1
|
||||||
; hl=string2
|
; hl=string2
|
||||||
; b=¤«¨ áâப¨
|
; b=¤«¨ áâப¨
|
||||||
A874E: ld a,(de)
|
COMPARE:
|
||||||
|
ld a,(de)
|
||||||
cp "a"
|
cp "a"
|
||||||
jr c,$+8
|
jr c,.next
|
||||||
cp "z"+1
|
cp "z"+1
|
||||||
jr nc,$+4
|
jr nc,.next
|
||||||
and 5Fh ; a..z -> A..Z
|
and 5Fh ; a..z -> A..Z
|
||||||
cp (hl)
|
.next: cp (hl)
|
||||||
ret nz
|
ret nz
|
||||||
inc hl
|
inc hl
|
||||||
inc de
|
inc de
|
||||||
djnz A874E
|
djnz COMPARE
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -401,10 +402,10 @@ copy_string:
|
|||||||
; „¥áïâ¨çë© ¢ë¢®¤ ¢ ¡ãä¥à
|
; „¥áïâ¨çë© ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
; ¢å®¤: a=ç¨á«®
|
; ¢å®¤: a=ç¨á«®
|
||||||
; hl=¡ãä¥à
|
; hl=¡ãä¥à
|
||||||
A8913: ld c,2Fh
|
PUTB: ld c,2Fh
|
||||||
inc c
|
.loop: inc c
|
||||||
sub 10
|
sub 10
|
||||||
jr nc,$-3
|
jr nc,.loop
|
||||||
add a,10
|
add a,10
|
||||||
add a,"0"
|
add a,"0"
|
||||||
push af
|
push af
|
||||||
@ -418,8 +419,9 @@ A8913: ld c,2Fh
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
A893C: ld hl,0
|
STR2DEC:
|
||||||
A893F: ld a,(de)
|
ld hl,0
|
||||||
|
.loop: ld a,(de)
|
||||||
inc de
|
inc de
|
||||||
or a
|
or a
|
||||||
ret z
|
ret z
|
||||||
@ -435,17 +437,15 @@ A893F: ld a,(de)
|
|||||||
add hl,hl
|
add hl,hl
|
||||||
add hl,bc
|
add hl,bc
|
||||||
add hl,hl
|
add hl,hl
|
||||||
call A895A
|
call .ATODEC
|
||||||
ret c
|
ret c
|
||||||
add a,l
|
add a,l
|
||||||
ld l,a
|
ld l,a
|
||||||
jr nc,A893F
|
jr nc,.loop
|
||||||
inc h
|
inc h
|
||||||
jr A893F
|
jr .loop
|
||||||
|
.ATODEC:; char -> int
|
||||||
|
cp "0"
|
||||||
; char -> int
|
|
||||||
A895A: cp "0"
|
|
||||||
ret c
|
ret c
|
||||||
cp "9"+1
|
cp "9"+1
|
||||||
ccf
|
ccf
|
||||||
@ -453,17 +453,17 @@ A895A: cp "0"
|
|||||||
sub "0"
|
sub "0"
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;!FIXIT ¥áâì ¤ã¡«
|
;!FIXIT ¥áâì ¤ã¡« hex2dec_ascii_16bit
|
||||||
A8964: ld de,10000
|
PDIGIT: ld de,10000
|
||||||
ld a,#C8 ; ret z
|
ld a,#C8 ; ret z
|
||||||
ld (D8996),a
|
ld (.patch),a
|
||||||
call A898E
|
call .DIG
|
||||||
ld de,1000
|
ld de,1000
|
||||||
call A898E
|
call .DIG
|
||||||
ld de,100
|
ld de,100
|
||||||
call A898E
|
call .DIG
|
||||||
ld de,10
|
ld de,10
|
||||||
call A898E
|
call .DIG
|
||||||
ld a,l
|
ld a,l
|
||||||
add a,"0"
|
add a,"0"
|
||||||
;!TEST
|
;!TEST
|
||||||
@ -474,20 +474,18 @@ A8964: ld de,10000
|
|||||||
LD (IX+1),0
|
LD (IX+1),0
|
||||||
;
|
;
|
||||||
ret
|
ret
|
||||||
|
.DIG: xor a
|
||||||
|
|
||||||
A898E: xor a
|
|
||||||
inc a
|
inc a
|
||||||
sbc hl,de
|
sbc hl,de
|
||||||
jr nc,$-3
|
jr nc,$-3
|
||||||
add hl,de
|
add hl,de
|
||||||
dec a
|
dec a
|
||||||
D8996: ret z
|
.patch: ret z
|
||||||
add a,"0"
|
add a,"0"
|
||||||
ld (ix+0),a
|
ld (ix+0),a
|
||||||
inc ix
|
inc ix
|
||||||
xor a ; nop
|
xor a ; nop
|
||||||
ld (D8996),a
|
ld (.patch),a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -522,11 +520,10 @@ RUNMODE: db 0
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ¡ãä¥à à áè. ä ©«
|
; ¡ãä¥à à áè. ä ©« á ®£à ¨ç¨â¥«¥¬ 0
|
||||||
T8C1A: ds 3
|
EXTBF: BLOCK 4,0
|
||||||
db 0
|
|
||||||
|
|
||||||
T8C1E: db "BAT" ; à áè. bat-ä ©«
|
BATBF: db "BAT" ; à áè. bat-ä ©«
|
||||||
T8C21: db "ON",0
|
T8C21: db "ON",0
|
||||||
T8C24: db "OFF",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