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 >
Assembly Source File  |  2000-06-30  |  3KB  |  104 lines

  1.     TITLE    'Who -> Print name of current user logged in'
  2. ;
  3. ;    WHO is on the system?
  4. ;    Who will allow the system operator to simply type WHO on the console
  5. ;    and the system will respond by looking up the user.  This is just one
  6. ;    of the many programs incorporated in the OxGate BBS system.  If
  7. ;    you would like more information on the OxGate, feel free to call
  8. ;    (408) 867-1768 (voice) in the evenings (Pacific Time).
  9. ;    NB: Who will also work with RBBS.
  10. ;
  11. ;    Copyright (C) 1983 By Paul Traina - All rights reserved.
  12. ;    This program has been released for non-commercial useage.
  13. ;    This program may not be sold without the express written
  14. ;    conscent of the Author.
  15. ;
  16.     MACLIB    SEQIO22            ;Public domain macro library
  17. ;
  18. FILAREA:    EQU    14        ;User area that LASTCALR is in
  19. FILDRIV:    EQU    'A'        ;Drive where LASTCALR resides
  20. ;
  21. ;**************************************************************************
  22. ;    End of user modifiable section
  23. ;**************************************************************************
  24.         PAGE
  25. ;
  26. BDOS        EQU    0005h        ;BDOS vector
  27. LF        EQU    10        ;Ascii line feed
  28. CR        EQU    13        ;Ascii carriage return
  29. EOF        EQU    1Ah        ;CP/M end of file
  30.  
  31. OUTPUT        EQU    6        ;BDOS console output function
  32. PRINT        EQU    9        ;BDOS print string
  33. BSIZE        EQU    80H        ;Size of buffer
  34. FILERR        SET    ERROR        ;Error exit routine
  35. BUFFERS        SET    DBUF        ;Disk buffer to use
  36. ;
  37. ; The following allocations are used by the 'FILE' macros
  38. ;
  39.     ORG    100h
  40.     JMP    PSTART
  41.     DB    'Who - Copyright (C) 1982 by Paul Traina',CR,LF,EOF
  42. PSTART:    PUSH    B    ;SAVE STACK AND REGISTERS
  43.     PUSH    D
  44.     PUSH    H
  45.     LXI    H,0
  46.     DAD    SP
  47.     SHLD    STACK
  48.     XRA    A    ;This makes WHO re-entrant
  49.     STA    COMMA
  50.     JMP    START
  51. ;
  52. DEFAULT$USER:    DB    FILAREA
  53. CUR$USER:    DB    0FFh
  54. DEFAULT$DISK:    DB    FILDRIV-'A'
  55. CUR$DISK:    DB    0FFh
  56. PGSIZE:        DW    0
  57. ;
  58. START:    FILE    INFILE,CALLER,,LASTCALR,,BSIZE,,PUBLIC,TRUE
  59. ;
  60. GETLOOP    GET    CALLER        ;Get a character from the file
  61.     CPI    EOF
  62.     JZ    EXIT
  63.     CPI    ','        ;Don't print the ',' between names
  64.     JNZ    CHAROK
  65.     LDA    COMMA        ;only allow one comma
  66.     INR    A        ;this is so that we don't see the date
  67.     CPI    2        ;that is right after the last name
  68.     JZ    EXIT        ;this is all we should print, STOP
  69.     STA    COMMA        ;save new comma value
  70.     MVI    A,' '        ;and instead of a comma, print a space
  71. CHAROK:    CALL    CONOUT
  72.     JMP    GETLOOP
  73. ;
  74. CONOUT:    PUSH    B
  75.     PUSH    D
  76.     PUSH    H
  77.     MOV    E,A        ;move character to 'E' register
  78.     MVI    C,OUTPUT    ;tell BDOS to print it
  79.     CALL    BDOS
  80.     POP    H
  81.     POP    D
  82.     POP    B
  83.     RET
  84.  
  85. ERROR:    MVI    C,PRINT
  86.     LXI    D,ERRMSG
  87.     CALL    BDOS
  88.  
  89. EXIT:    LHLD    STACK        ;restore the stack
  90.     SPHL
  91.     POP    H        ;restore the registers
  92.     POP    D
  93.     POP    B
  94.     RET            ;return to the CCP
  95. ;
  96. ERRMSG:    DB    'File error?$'
  97.  
  98.     DS    20h        ;lots of stack space
  99. STACK:    DW    0        ;save stack vector here
  100. COMMA:    DB    0        ;number of comma's so far
  101. ;
  102. DBUF:    EQU    $        ;must be last in program, disk buffer
  103.     END
  104.