.TITLE NWDATE .SBTTL RSX11M ROLLIN .PSECT IMPURE,D,LCL,OVR ; ; ; SYSTEM MACRO DEFINITIONS ; ; ; .MCALL QIOW$S ; ; ; DATA ; ; ; .NLIST BEX ERM1: .ASCII /ERROR IMPROPER FORMAT USED FOR DATE/ ERM1S =<.-ERM1> .EVEN .LIST BEX .PSECT ; ; ; MONTH TABLE ; ; ; MONTBL: .RAD50 /JAN/ .RAD50 /FEB/ .RAD50 /MAR/ .RAD50 /APR/ .RAD50 /MAY/ .RAD50 /JUN/ .RAD50 /JUL/ .RAD50 /AUG/ .RAD50 /SEP/ .RAD50 /OCT/ .RAD50 /NOV/ .RAD50 /DEC/ ; ; ; PROGRAM PROPER ; ; ; NWDATE::CALL $SAVAL ;SAVE REGISTERS MOV #ADATE,R0 ;POINTER TO ASCII DATE CALL $CDTB ;CONVERT DAY TO DECIMAL CMPB R2,#'- ;CHECK FOR CHARACTER BNE ERROR ;NO, ERROR CMP R1,#1 ;CHECK FOR PROPER DAY BLT ERROR ;CAN'T BE LESS THAN 1 CMP R1,#31. BGT ERROR ;CAN'T BE GREATER THAN 31 MOV R1,DATE+4 CLR R1 CALL $CAT5 ;CONVERT MONTH TO RAD 50 MOV #12.,R2 ;SET UP MONTH COUNTER MOV #MONTBL,R3 ;SETUP POINTER TO MONTH TABLE CLR R4 1$: CMP R1,(R3)+ ;CHECK FOR MONTH BEQ 2$ ;YES, GO ON INC R4 ;SET UP ANOTHER MONTH COUNTER DEC R2 BGT 1$ BR ERROR ;BAD MONTH GIVEN 2$: INC R4 ;THIS IS DECIMAL MONTH MOV R4,DATE+2 ;STORE MONTH CMPB (R0)+,#'- ;CHECK FOR CHARACTER BNE ERROR ;NO, ERROR CALL $CDTB ;CONVERT YEAR TO DECIMAL TST R1 BMI ERROR CMP R1,#99. ;CHECK FOR GOOD YEAR BGT ERROR TST R2 BEQ 3$ CMPB R2,#' ;IS THERE A SPACE AT THE END BNE ERROR 3$: MOV R1,DATE ;SAVE YEAR RETURN ERROR: QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM1,#ERM1S,#60> JMP RSTART .END