.TITLE FLABEL .SBTTL RSX11M ROLLIN .PSECT IMPURE,D,LCL,OVR ; ; ; SYSTEM MACRO DEFINITIONS ; ; ; .MCALL QIOW$S ; ; ; DATA ; ; ; UIC: .BYTE 1,1 PCODE: .WORD 155. .NLIST BEX ERM1: .ASCII /ERROR WHEN WRITING FILE LABEL TO MAG TAPE/ ERM1S =<.-ERM1> .EVEN .LIST BEX .PSECT ; ; ; PROGRAM PROPER ; ; ; FLABEL::CALL $SAVAL ;SAVE REGISTERS MOV #OUTFDB+F.FNB,R5 ;FILENAME TO R5 MOV #FLABL,R1 ;POINTER TO BUFFER MOV N.FNAM(R5),(R1)+ MOV N.FNAM+2(R5),(R1)+ MOV N.FTYP(R5),(R1)+ MOV UIC,(R1)+ ;UIC TO BUFFER MOV PCODE,(R1)+ ;PROTECTION CODE TO BUFFER CALL DOSDAT ;CONVERT DATE TO DOS CLR (R1)+ MOV #OUTFDB,R4 ;OUTPUT FDB TO R4 MOVB F.LUN(R4),R2 ;OUTPUT LUN TO R2 MOV F.BKST(R4),R3 ;I/O STATUS TO R0 QIOW$S #IO.WLB,R2,R2,,R3,,<#FLABL,#FLASIZ> CMPB #IS.SUC,(R3) ;WAS WRITE SUCCESSFUL BEQ EXIT ;RETURN TO PROGRAM QIOW$S #IO.WVB,#TTYLUN,,,,,<#ERM1,#ERM1S,#60> JMP RSTART EXIT: RETURN ; ; ; DOS/RSX DATE CONVERTER ; ; ; DOSDAT::MOV #DATE,R0 ;BUFFER START TO R1 MOV (R0)+,R5 ;YEAR IN R5 BIT #3,R5 ;IS YEAR DIVISIBLE BY 4 BNE NOTPLY ;NO ITS NOT LEAP YEAR INCB DAYSMO+2 ;INCREMENT # OF DAYS IN FEB TO 29 NOTPLY: SUB #70.,R5 ;SUBTRACT (19)70 MUL #1000.,R5 ;MULTIPLY BY 1000 MOV (R0)+,R2 ;# OF CURRENT MONTH IN R2 MOV #DAYSMO,R3 ;USE R3 AS POINTER ADDAMO: MOVB (R3)+,R4 ;GET # OF DAYS IN R4 ADD R4,R5 ;ADD TO DATE SOB R2,ADDAMO ;IF NOT DONE, DO ANOTHER MOV (R0)+,R2 ;NOW GET DAY IN R2 ADD R2,R5 ;AND ADD IT MOV R5,(R1)+ ;SAVE DOS DATE MOVB #28.,DAYSMO+2 ;SET FEB BACK TO 28 FOR NEXT TIME RETURN ; ; ; TABLE OF DAYS OF EACH MONTH ; ; ; DAYSMO: .BYTE 0.,31.,28.,31.,30.,31.,30.,31.,31.,30.,31.,30. .END