.TITLE S .IDENT /V01.1B/ ;13-JUL-78 ADD BATCH PASSWORD .MCALL FDBDF$,FDAT$A,FDRC$A,FDOP$A,FDBF$A .MCALL FSRSZ$,FINIT$,MOUT$S,OPEN$R,CLOSE$ .MCALL GET$R,QIOW$S,DIR$ .MACRO FILERR MOVB FDB+F.ERR,R5 NEG R5 MOUT$S #XQIO,,R5 .ENDM FILERR .MACRO SPACE .REPT SP.SIZ .BYTE 40 .ENDR .ENDM B.SIZ=100 EFLAG=20. NFILES=1 SYLUN=2 TILUN=5 TIFLG=21. US.SIZ=12. PS.SIZ=6 UI.SIZ=9. SP.SIZ=6 NAMOFF=0 UICOFF=10 PASOFF=12 BPSOFF=64 UUAOFF=52 ;UTILIZATION FSRSZ$ NFILES FDB: FDBDF$ FDAT$A R.FIX,FD.CR,B.SIZ FDRC$A FD.RAN,BUFFER,B.SIZ FDOP$A SYLUN,DSPT,,FO.RD FDBF$A EFLAG .NLIST BEX DSPT: .WORD DV.SIZ,DEVICE .WORD DI.SIZ,DIRECT .WORD FN.SIZ,FILNAM DEVICE: .ASCII /SD0:/ DV.SIZ=.-DEVICE DIRECT: .ASCII /[1,100]/ DI.SIZ=.-DIRECT FILNAM: .ASCII /PDSUPF.DAT/ FN.SIZ=.-FILNAM .EVEN XQIO: .WORD XQLN,XQIOSM XQIOSM: .ASCII /LB0:[1,2]QIOSYM.MSG/ XQLN=.-XQIOSM .EVEN BUFFER: .BLKB B.SIZ .PSECT SC RW,D,GBL,REL,OVR USRNAM: .BLKB US.SIZ SPACE UICFLD: .BLKB UI.SIZ WHERE: SPACE PASWRD: .BLKB PS.SIZ SPACE BATPWD: .BLKB PS.SIZ LENGTH=.-USRNAM .EVEN HOWMCH: .FLT4 0.0 .PSECT FIRST: .WORD 0 LAST: .WORD 0 IOST: .BLKW 2 .PAGE SINIT:: START: FINIT$ ;INIT FSR OPEN$R #FDB ;OPEN THE FILE BCC 5$ ;BR I OK FILERR ;TELL OF ERROR JMP EXIT ; 5$: GET$R #FDB,#BUFFER,#B.SIZ ;GET FIRST RECORD BCC 10$ ;BR IF OK FILERR ;TELL OF ERROR JMP EXIT 10$: MOV BUFFER,FIRST ;FIRST USER RECORD NUMBER MOV BUFFER+2,LAST ;LAST USER RECORD UNMBER MOV FIRST,R5 ;START WITH NUMBER 1 RTS PC S:: MOV FIRST,R5 CMP FIRST,LAST BLE 20$ 13$: JMP THTZIT 15$: INC R5 ;SKIP NULL NAME CMP R5,LAST BGT 13$ 20$: GET$R #FDB,#BUFFER,#B.SIZ,R5 ;GET A USER RECORD BCC 25$ ;BR IF OK FILERR ;TELL OF ERROR BR EXIT 25$: MOV #USRNAM,R0 ;+ MOV BUFFER+NAMOFF,R1 ; BEQ 15$ ;NO NAME (DELETED) CALL $C5TA ; MOV BUFFER+NAMOFF+2,R1 ;CONVERT USER NAME CALL $C5TA ; MOV BUFFER+NAMOFF+4,R1 ; CALL $C5TA ;- MOV BUFFER+NAMOFF+6,R1 CALL $C5TA MOV #UICFLD,R2 ;+ MOV BUFFER+UICOFF,R3 ;CONVERT UIC CLR R4 ; CALL .PPASC ;- 26$: CMP R2,#WHERE BGE 27$ MOVB #40,(R2)+ BR 26$ 27$: MOV #PASWRD,R0 ;+ MOV BUFFER+PASOFF,R1 ; COM R1 CALL $C5TA ;CONVERT PASSWORD MOV BUFFER+PASOFF+2,R1 ; COM R1 CALL $C5TA ;- MOV #BATPWD,R0 ;+ MOV BUFFER+BPSOFF,R1 ; BEQ 30$ ; COM R1 ; CALL $C5TA ; MOV BUFFER+BPSOFF+2,R1 ; COM R1 ; CALL $C5TA ;- 30$: SUB #USRNAM,R0 ; QIOW$S #IO.WVB,#TILUN,#TIFLG,,#IOST,,<#USRNAM,R0,#40> ; TSTB IOST ; BPL 35$ ; MOVB IOST,R5 ; NEG R5 ; MOUT$S #XQIO,,R5 ; BR EXIT 35$: INC R5 SETL MOV #BUFFER+UUAOFF,R1 LDCLF @R1,%0 STF %0,HOWMCH MOV R5,FIRST RTS PC THTZIT: MOVB #'?,USRNAM 40$: CLOSE$ #FDB RTS PC EXIT: EXIT$S .END