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 / ZCPR2 / WHEEL.MAC < prev    next >
Text File  |  2000-06-30  |  6KB  |  283 lines

  1. ;
  2. ;  PROGRAM:  WHEEL
  3. ;  VERSION:  1.1
  4. ;  AUTHOR:  RICHARD CONN
  5. ;  DATE:  24 JAN 83
  6. ;  PREVIOUS VERSIONS:  1.0 (14 Jan 83)
  7. ;
  8. vers    equ    11
  9.  
  10. ;
  11. ;    WHEEL is used to set and clear the WHEEL byte.  It is invoked by
  12. ; one of the following forms:
  13. ;
  14. ;        WHEEL or WHEEL //    <-- Print Help
  15. ;        WHEEL password SET    <-- Set Wheel Byte
  16. ;        WHEEL password        <-- Set Wheel Byte
  17. ;        WHEEL password RESET    <-- Reset (Clear) Wheel Byte
  18. ;        WHEEL /S or WHEEL /R    <-- Set or Reset Wheel Byte
  19. ;                        (Type Password Later Sans Echo)
  20. ;
  21.  
  22. ;
  23. ;  CP/M Constants
  24. ;
  25. cpm    equ    0
  26. bdose    equ    cpm+5
  27. pass    equ    cpm+5dh    ; 1st FCB is password
  28. cmnd    equ    cpm+6dh    ; 2nd FCB is command
  29. tbuff    equ    cpm+80h
  30. cr    equ    0dh
  31. lf    equ    0ah
  32.  
  33. ;
  34. ;  SYSLIB Routines
  35. ;
  36.     ext    print,caps,codend,inline
  37.  
  38. ;
  39. ;    This program is Copyright (c) 1982, 1983 by Richard Conn
  40. ;    All Rights Reserved
  41. ;
  42. ;    ZCPR2 and its utilities, including this one, are released
  43. ; to the public domain.  Anyone who wishes to USE them may do so with
  44. ; no strings attached.  The author assumes no responsibility or
  45. ; liability for the use of ZCPR2 and its utilities.
  46. ;
  47. ;    The author, Richard Conn, has sole rights to this program.
  48. ; ZCPR2 and its utilities may not be sold without the express,
  49. ; written permission of the author.
  50. ;
  51.  
  52. ;
  53. ;  Branch to Start of Program
  54. ;
  55.     jmp    start
  56.  
  57. ;
  58. ;******************************************************************
  59. ;
  60. ;  SINSFORM -- ZCPR2 Utility Standard General Purpose Initialization Format
  61. ;
  62. ;    This data block precisely defines the data format for
  63. ; initial features of a ZCPR2 system which are required for proper
  64. ; initialization of the ZCPR2-Specific Routines in SYSLIB.
  65. ;
  66.  
  67. ;
  68. ;  EXTERNAL PATH DATA
  69. ;
  70. EPAVAIL:
  71.     DB    0FFH    ; IS EXTERNAL PATH AVAILABLE? (0=NO, 0FFH=YES)
  72. EPADR:
  73.     DW    40H    ; ADDRESS OF EXTERNAL PATH IF AVAILABLE
  74.  
  75. ;
  76. ;  INTERNAL PATH DATA
  77. ;
  78. INTPATH:
  79.     DB    0,0    ; DISK, USER FOR FIRST PATH ELEMENT
  80.             ; DISK = 1 FOR A, '$' FOR CURRENT
  81.             ; USER = NUMBER, '$' FOR CURRENT
  82.     DB    0,0
  83.     DB    0,0
  84.     DB    0,0
  85.     DB    0,0
  86.     DB    0,0
  87.     DB    0,0
  88.     DB    0,0    ; DISK, USER FOR 8TH PATH ELEMENT
  89.     DB    0    ; END OF PATH
  90.  
  91. ;
  92. ;  MULTIPLE COMMAND LINE BUFFER DATA
  93. ;
  94. MCAVAIL:
  95.     DB    0FFH    ; IS MULTIPLE COMMAND LINE BUFFER AVAILABLE?
  96. MCADR:
  97.     DW    0FF00H    ; ADDRESS OF MULTIPLE COMMAND LINE BUFFER IF AVAILABLE
  98.  
  99. ;
  100. ;  DISK/USER LIMITS
  101. ;
  102. MDISK:
  103.     DB    4    ; MAXIMUM NUMBER OF DISKS
  104. MUSER:
  105.     DB    31    ; MAXIMUM USER NUMBER
  106.  
  107. ;
  108. ;  FLAGS TO PERMIT LOG IN FOR DIFFERENT USER AREA OR DISK
  109. ;
  110. DOK:
  111.     DB    0FFH    ; ALLOW DISK CHANGE? (0=NO, 0FFH=YES)
  112. UOK:
  113.     DB    0FFH    ; ALLOW USER CHANGE? (0=NO, 0FFH=YES)
  114.  
  115. ;
  116. ;  PRIVILEGED USER DATA
  117. ;
  118. PUSER:
  119.     DB    10    ; BEGINNING OF PRIVILEGED USER AREAS
  120. PPASS:
  121.     DB    'chdir',0    ; PASSWORD FOR MOVING INTO PRIV USER AREAS
  122.     DS    41-($-PPASS)    ; 40 CHARS MAX IN BUFFER + 1 for ending NULL
  123.  
  124. ;
  125. ;  CURRENT USER/DISK INDICATOR
  126. ;
  127. CINDIC:
  128.     DB    '$'    ; USUAL VALUE (FOR PATH EXPRESSIONS)
  129.  
  130. ;
  131. ;  DMA ADDRESS FOR DISK TRANSFERS
  132. ;
  133. DMADR:
  134.     DW    80H    ; TBUFF AREA
  135.  
  136. ;
  137. ;  NAMED DIRECTORY INFORMATION
  138. ;
  139. NDRADR:
  140.     DW    00000H    ; ADDRESS OF MEMORY-RESIDENT NAMED DIRECTORY
  141. NDNAMES:
  142.     DB    64    ; MAX NUMBER OF DIRECTORY NAMES
  143. DNFILE:
  144.     DB    'NAMES   '    ; NAME OF DISK NAME FILE
  145.     DB    'DIR'        ; TYPE OF DISK NAME FILE
  146.  
  147. ;
  148. ;  REQUIREMENTS FLAGS
  149. ;
  150. EPREQD:
  151.     DB    000H    ; EXTERNAL PATH?
  152. MCREQD:
  153.     DB    000H    ; MULTIPLE COMMAND LINE?
  154. MXREQD:
  155.     DB    000H    ; MAX USER/DISK?
  156. UDREQD:
  157.     DB    000H    ; ALLOW USER/DISK CHANGE?
  158. PUREQD:
  159.     DB    0FFH    ; PRIVILEGED USER?
  160. CDREQD:
  161.     DB    000H    ; CURRENT INDIC AND DMA?
  162. NDREQD:
  163.     DB    000H    ; NAMED DIRECTORIES?
  164. Z2CLASS:
  165.     DB    8    ; CLASS 8
  166.     DB    'ZCPR2'
  167.     DS    10    ; RESERVED
  168.  
  169. ;
  170. ;  END OF SINSFORM -- STANDARD DEFAULT PARAMETER DATA
  171. ;
  172. ;******************************************************************
  173. ;
  174.  
  175. ;
  176. ;  Special Value
  177. ;
  178. WHLADR:
  179.     DW    0    ; ADDRESS OF WHEEL BYTE
  180.  
  181. ;
  182. ;  Start of Program
  183. ;
  184. start:
  185.     call    print
  186.     db    'WHEEL  Version '
  187.     db    vers/10+'0','.',(vers mod 10)+'0',0
  188.  
  189.     lda    pass    ; get password
  190.     cpi    ' '    ; help?
  191.     jz    help
  192.     cpi    '/'
  193.     jnz    start1
  194.     lda    pass+1    ; get option
  195.     sta    cmnd    ; store command
  196.     cpi    'R'    ; reset?
  197.     jz    inpass
  198.     cpi    'S'    ; Set?
  199.     jz    inpass
  200. help:
  201.     call    print
  202.     db    cr,lf,'    WHEEL is used to Set and Reset (Clear) the Wheel'
  203.     db    cr,lf,'Byte in order to enable (Wheel Byte is Set) or disable'
  204.     db    cr,lf,'(Wheel Byte is Reset) certain commands within ZCPR2.'
  205.     db    cr,lf
  206.     db    cr,lf,'The forms of the WHEEL command are:'
  207.     db    cr,lf,'    WHEEL or WHEEL //    <-- Print Help'
  208.     db    cr,lf,'    WHEEL password SET    <-- Set Wheel Byte'
  209.     db    cr,lf,'    WHEEL password        <-- Set Wheel Byte'
  210.     db    cr,lf,'    WHEEL password RESET    <-- Reset (Clear) Wheel Byte'
  211.     db    cr,lf,'    WHEEL /S or WHEEL /R    <-- Set or Reset Wheel Byte'
  212.     db    cr,lf,'                    but allow user to type'
  213.     db    ' in password'
  214.     db    cr,lf,'                    without echo'
  215.     db    cr,lf,0
  216.     ret
  217.  
  218. ;
  219. ;  Input Password without echo and then process it
  220. ;
  221. inpass:
  222.     call    print
  223.     db    cr,lf,'Password? ',0
  224.     call    codend    ; pt to scratch area
  225.     xra    a    ; no echo
  226.     call    inline    ; get line from user
  227.     push    h    ; save ptr to first char
  228. inp1:
  229.     mov    a,m    ; capitalize input
  230.     call    caps
  231.     mov    m,a
  232.     inx    h    ; pt to next
  233.     ora    a    ; done?
  234.     jnz    inp1
  235.     pop    h    ; get ptr to first char
  236.     jmp    start2
  237. ;
  238. ;  Process Password
  239. ;
  240. start1:
  241.     lxi    h,pass    ; pt to user password
  242. start2:
  243.     lxi    d,ppass    ; pt to WHEEL password
  244.     mvi    b,8    ; 8 chars max
  245. passlp:
  246.     ldax    d    ; get WHEEL password
  247.     ora    a    ; done?
  248.     jz    passtst
  249.     call    caps    ; capitalize
  250.     cmp    m    ; match?
  251.     jnz    nopass
  252.     inx    h    ; pt to next
  253.     inx    d
  254.     dcr    b    ; count down
  255.     jnz    passlp
  256.     jmp    passit
  257. passtst:
  258.     mov    a,m    ; must be space or null
  259.     ora    a    ; null?
  260.     jz    passit
  261.     cpi    ' '
  262.     jnz    nopass
  263. passit:
  264.     lhld    whladr    ; get address of wheel byte
  265.     lda    cmnd    ; check command
  266.     cpi    'R'    ; reset?
  267.     jz    reset
  268.     mvi    m,0ffh    ; set wheel byte
  269.     call    print
  270.     db    cr,lf,'WHEEL Byte Set',0
  271.     ret
  272. reset:
  273.     mvi    m,0    ; reset wheel byte
  274.     call    print
  275.     db    cr,lf,'WHEEL Byte Reset',0
  276.     ret
  277. nopass:
  278.     call    print
  279.     db    cr,lf,'Invalid Password',0
  280.     ret
  281.  
  282.     end
  283.