@@ -797,35 +797,30 @@ CHECK_YYYY:
797
797
CMP AX , 1980 ; is < 1980?
798
798
JB VAL_DATE_RET ; if so, invalid (CF)
799
799
CMP AX , 2079 ; is > 2079?
800
- JA VAL_DATE_ERR ; if so, invalid (NC)
800
+ JA VAL_DATE_RET_CMC ; if so, invalid (NC)
801
801
802
802
;----------------------------------------------------------------------------;
803
803
; Validate month is 01-12
804
804
;
805
805
CHECK_MONTH:
806
806
MOV AL , DH ; AL = BCD month
807
807
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)
812
811
813
812
;----------------------------------------------------------------------------;
814
813
; Validate day is 01-31
815
814
;
816
815
CHECK_DAY:
817
816
MOV AL , DL ; AL = BCD day
818
817
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
823
822
VAL_DATE_RET:
824
823
RET ; return with current CF
825
- VAL_DATE_ERR:
826
- STC ; return with CF = 1
827
- RET
828
-
829
824
VALIDATE_DATE ENDP
830
825
831
826
;----------------------------------------------------------------------------;
0 commit comments