Skip to content

Commit 158cc47

Browse files
committed
Day validation fix
1 parent dc1dc95 commit 158cc47

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/GLATICK.ASM

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -797,35 +797,30 @@ CHECK_YYYY:
797797
CMP AX, 1980 ; is < 1980?
798798
JB VAL_DATE_RET ; if so, invalid (CF)
799799
CMP AX, 2079 ; is > 2079?
800-
JA VAL_DATE_ERR ; if so, invalid (NC)
800+
JA VAL_DATE_RET_CMC ; if so, invalid (NC)
801801

802802
;----------------------------------------------------------------------------;
803803
; Validate month is 01-12
804804
;
805805
CHECK_MONTH:
806806
MOV AL, DH ; AL = BCD month
807807
CALL BCD_TO_BYTE ; AL = BYTE month
808-
TEST AL, AL ; is 0?
809-
JZ VAL_DATE_ERR ; if so, not valid (ZF)
810-
CMP AL, 12 ; is > 12?
811-
JA VAL_DATE_ERR ; if so, not valid (NC)
808+
DEC AX ; convert to 0-based month (0-11)
809+
CMP AL, 12 ; is 1-12?
810+
JNC VAL_DATE_RET_CMC ; if not, invalid (NC)
812811

813812
;----------------------------------------------------------------------------;
814813
; Validate day is 01-31
815814
;
816815
CHECK_DAY:
817816
MOV AL, DL ; AL = BCD day
818817
CALL BCD_TO_BYTE ; AL = BYTE day
819-
TEST AL, AL ; is 0?
820-
JZ VAL_DATE_ERR ; if so, not valid
821-
CMP AL, 31 ; is <= 31?
822-
CMC ; if not, not valid (CF)
818+
DEC AX ; convert to 0-based day (0-30)
819+
CMP AL, 31 ; is 1-31?
820+
VAL_DATE_RET_CMC:
821+
CMC ; CF = ! CF
823822
VAL_DATE_RET:
824823
RET ; return with current CF
825-
VAL_DATE_ERR:
826-
STC ; return with CF = 1
827-
RET
828-
829824
VALIDATE_DATE ENDP
830825

831826
;----------------------------------------------------------------------------;

0 commit comments

Comments
 (0)