.TITLE DATIME .IDENT \V01.01\ .ENABL LC .MCALL .DATE, .EXIT, .PRINT, .TTYIN $JSW = 44 J.CHNI = 4000 START:: BIS #J.CHNI,@#$JSW ;SET THE CHAIN INDIRECT BIT MOV #512,R1 ;POINT TO THE COMMAND LINE STORAGE AREA MOV #CMDSTR,R0 ;POINT TO THE COMMAND LINE 1$: MOVB (R0)+,(R1)+ ;MOVE IN A CHARACTER BNE 1$ ;BRANCH IF NOT DONE TSTB -(R1) ;BACK UP THE POINTER .DATE ;GET THE SYSTEM DATE MOV R0,DATE ;SAVE IT BNE 3$ ;BRANCH IF DATE IS THERE .PRINT #DATQRY ;ELSE PROMPT FOR ONE 2$: .TTYIN ;GET A CHARACTER MOVB R0,(R1)+ ;PUT IT IN THE COMMAND STRING CMPB #12,R0 ;WAS IT A LINEFEED? BNE 2$ ;BRANCH IF NOT. MORE TO COME... 3$: TST DATE ;WAS THERE A SYSTEM DATE? BEQ 4$ ;BRANCH IF NOT MOVB #15,(R1)+ ;ELSE MOVE IN A MOVB #12,(R1)+ ; AND A 4$: MOV #TIMSTR,R0 ;POINT TO THE TIME COMMAND 5$: MOVB (R0)+,(R1)+ ;MOVE IT INTO THE COMMAND STRING BNE 5$ ;LOOP UNTIL ALL THERE TSTB -(R1) ;BACK UP THE POINTER TST DATE ;WAS A DATE SPECIFIED? BNE 7$ ;BRANCH IF SO .PRINT #TIMQRY ;QUERY FOR THE TIME 6$: .TTYIN ;GET A CHARACTER CMPB #15,R0 ;IS IT A ? BEQ 7$ ;BRANCH IF SO MOVB R0,(R1)+ ;ELSE MOVE IT INTO THE COMMAND STRING BR 6$ ;LOOP 7$: CLRB (R1)+ ;MARK THE END OF THE STRING SUB #512,R1 ;GET THE LENGTH OF THE STRING MOV R1,@#510 ;SAVE IT CLR R0 ;NEED TO DO A HARD EXIT .EXIT ;QUIT DATE: .WORD 0 .NLIST BEX DATQRY: .ASCII \Date? \<200> TIMQRY: .ASCII \Time? \<200> CMDSTR: .ASCIZ \SET TT NOQUIET\<15><12>\DATE \ TIMSTR: .ASCIZ \TIME \ .EVEN .END START