.TITLE CKUSR .IDENT /V01.1B/ ; READ PDSUPF.DAT ; USES LUN 4 ; CALL SINIT !OPEN PDSUPF.DAT ; CALL S(USRRET,UIC) !READ A RECORD ; RETURNS NEXT (NON-NULL) USER NAME IN USRRET (12 BYTES) AND UIC (1 WORD) ; CALL SFIN !CLOSE PDSUPF.DAT ; .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=4 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:/ ;F.B. we have it on sd not lb 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 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 RTS PC S:: MOV FIRST,R4 CMP FIRST,LAST BLE 20$ 13$: JMP THTZIT 15$: INC R4 ;SKIP NULL NAME CMP R4,LAST BGT 13$ 20$: GET$R #FDB,#BUFFER,#B.SIZ,R4 ;GET A USER RECORD BCC 25$ ;BR IF OK FILERR ;TELL OF ERROR BR EXIT ; ; GOT A RECORD IN BUFFER. EXTRACT USER NAME AND UIC. ; 25$: MOV 2(R5),R0 ;+ ADDRESS USRRET MOV #14.,R1 ;CLEAR RETURN BUFFER 26$: CLRB (R0)+ SOB R1,26$ MOV 2(R5),R0 ; READDRESS BUFFER 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 BUFFER+UICOFF,@4(R5) ;RETURN UIC MOV R4,FIRST RTS PC THTZIT: MOVB #'?,@2(R5) RTS PC SFIN:: CLOSE$ #FDB RTS PC EXIT: EXIT$S .END