home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
RCPM
/
WHO.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
3KB
|
104 lines
TITLE 'Who -> Print name of current user logged in'
;
; WHO is on the system?
; Who will allow the system operator to simply type WHO on the console
; and the system will respond by looking up the user. This is just one
; of the many programs incorporated in the OxGate BBS system. If
; you would like more information on the OxGate, feel free to call
; (408) 867-1768 (voice) in the evenings (Pacific Time).
; NB: Who will also work with RBBS.
;
; Copyright (C) 1983 By Paul Traina - All rights reserved.
; This program has been released for non-commercial useage.
; This program may not be sold without the express written
; conscent of the Author.
;
MACLIB SEQIO22 ;Public domain macro library
;
FILAREA: EQU 14 ;User area that LASTCALR is in
FILDRIV: EQU 'A' ;Drive where LASTCALR resides
;
;**************************************************************************
; End of user modifiable section
;**************************************************************************
PAGE
;
BDOS EQU 0005h ;BDOS vector
LF EQU 10 ;Ascii line feed
CR EQU 13 ;Ascii carriage return
EOF EQU 1Ah ;CP/M end of file
OUTPUT EQU 6 ;BDOS console output function
PRINT EQU 9 ;BDOS print string
BSIZE EQU 80H ;Size of buffer
FILERR SET ERROR ;Error exit routine
BUFFERS SET DBUF ;Disk buffer to use
;
; The following allocations are used by the 'FILE' macros
;
ORG 100h
JMP PSTART
DB 'Who - Copyright (C) 1982 by Paul Traina',CR,LF,EOF
PSTART: PUSH B ;SAVE STACK AND REGISTERS
PUSH D
PUSH H
LXI H,0
DAD SP
SHLD STACK
XRA A ;This makes WHO re-entrant
STA COMMA
JMP START
;
DEFAULT$USER: DB FILAREA
CUR$USER: DB 0FFh
DEFAULT$DISK: DB FILDRIV-'A'
CUR$DISK: DB 0FFh
PGSIZE: DW 0
;
START: FILE INFILE,CALLER,,LASTCALR,,BSIZE,,PUBLIC,TRUE
;
GETLOOP GET CALLER ;Get a character from the file
CPI EOF
JZ EXIT
CPI ',' ;Don't print the ',' between names
JNZ CHAROK
LDA COMMA ;only allow one comma
INR A ;this is so that we don't see the date
CPI 2 ;that is right after the last name
JZ EXIT ;this is all we should print, STOP
STA COMMA ;save new comma value
MVI A,' ' ;and instead of a comma, print a space
CHAROK: CALL CONOUT
JMP GETLOOP
;
CONOUT: PUSH B
PUSH D
PUSH H
MOV E,A ;move character to 'E' register
MVI C,OUTPUT ;tell BDOS to print it
CALL BDOS
POP H
POP D
POP B
RET
ERROR: MVI C,PRINT
LXI D,ERRMSG
CALL BDOS
EXIT: LHLD STACK ;restore the stack
SPHL
POP H ;restore the registers
POP D
POP B
RET ;return to the CCP
;
ERRMSG: DB 'File error?$'
DS 20h ;lots of stack space
STACK: DW 0 ;save stack vector here
COMMA: DB 0 ;number of comma's so far
;
DBUF: EQU $ ;must be last in program, disk buffer
END