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 / ZSYS / SIMTEL20 / ZCPR3 / WHEEL.MAC < prev    next >
Text File  |  2000-06-30  |  4KB  |  218 lines

  1. ;
  2. ;  PROGRAM:  WHEEL
  3. ;  VERSION:  3.0
  4. ;  AUTHOR:  RICHARD CONN
  5. ;  DATE:  8 MAR 84
  6. ;  PREVIOUS VERSIONS:  1.1 (24 JAN 83), 1.0 (14 Jan 83)
  7. ;
  8. vers    equ    30
  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 //        <-- Print Help
  15. ;        WHEEL            <-- Print Wheel Status
  16. ;        WHEEL password SET    <-- Set Wheel Byte
  17. ;        WHEEL password        <-- Set Wheel Byte
  18. ;        WHEEL password RESET    <-- Reset (Clear) Wheel Byte
  19. ;        WHEEL /S or WHEEL /R    <-- Set or Reset Wheel Byte
  20. ;                        (Type Password Later Sans Echo)
  21. ;
  22.  
  23. ;
  24. ; CP/M Constants
  25. ;
  26. cpm    equ    0
  27. z3env    SET    0f400h    ; Environment Descriptor
  28. bdose    equ    cpm+5
  29. pass    equ    cpm+5dh    ; 1st FCB is password
  30. cmnd    equ    cpm+6dh    ; 2nd FCB is command
  31. tbuff    equ    cpm+80h
  32. ctrlz    equ    'Z'-'@'
  33. cr    equ    0dh
  34. lf    equ    0ah
  35.  
  36. ;
  37. ; SYSLIB Routines
  38. ;
  39.     ext    print,caps,codend,inline,z3init,getwhl,putwhl,qprint
  40.  
  41. ;
  42. ; Environment Definition
  43. ;
  44.     if    z3env ne 0
  45. ;
  46. ; External ZCPR3 Environment Descriptor
  47. ;
  48.     jmp    start
  49.     db    'Z3ENV'    ;This is a ZCPR3 Utility
  50.     db    1    ;External Environment Descriptor
  51. z3eadr:
  52.     dw    z3env
  53. start:
  54.     lhld    z3eadr    ;pt to ZCPR3 environment
  55. ;
  56.     else
  57. ;
  58. ; Internal ZCPR3 Environment Descriptor
  59. ;
  60.     MACLIB    Z3BASE.LIB
  61.     MACLIB    SYSENV.LIB
  62. z3eadr:
  63.     jmp    start
  64.     SYSENV
  65. start:
  66.     lxi    h,z3eadr    ;pt to ZCPR3 environment
  67.     endif
  68.  
  69. ;
  70. ; Start of Program -- Initialize ZCPR3 Environment
  71. ;
  72.     call    z3init    ;initialize the ZCPR3 Env and the VLIB Env
  73.     jmp    start0
  74. ;
  75. ; ** Wheel Password **
  76. ;
  77.     db    ctrlz        ;prevents reading via TYPE
  78. ppass:
  79.     db    'SYSTEM  '    ;Wheel Password (8 Chars)
  80. ;
  81. ; Print Banner
  82. ;
  83. start0:
  84.     call    qprint
  85.     db    'WHEEL, Version '
  86.     db    vers/10+'0','.',(vers mod 10)+'0',cr,lf,0
  87.  
  88. ;
  89. ; Begin Processing
  90. ;
  91.     lda    pass    ; get password
  92.     cpi    ' '    ; help?
  93.     jz    pwhlstat
  94.     cpi    '/'
  95.     jnz    start1
  96.     lda    pass+1    ; get option
  97.     sta    cmnd    ; store command
  98.     cpi    'R'    ; reset?
  99.     jz    inpass
  100.     cpi    'S'    ; Set?
  101.     jz    inpass
  102. ;
  103. ; Print Help Message
  104. ;
  105. help:
  106.     call    print
  107.     db    cr,lf,'    WHEEL is used to Set and Reset (Clear) the Wheel'
  108.     db    cr,lf,'Byte in order to enable (Wheel Byte is Set) or disable'
  109.     db    cr,lf,'(Wheel Byte is Reset) certain commands within ZCPR2.'
  110.     db    cr,lf
  111.     db    cr,lf,'The forms of the WHEEL command are:'
  112.     db    cr,lf,'    WHEEL //        <-- Print Help'
  113.     db    cr,lf,'    WHEEL            <-- Print Wheel Byte Setting'
  114.     db    cr,lf,'    WHEEL password SET    <-- Set Wheel Byte'
  115.     db    cr,lf,'    WHEEL password        <-- Set Wheel Byte'
  116.     db    cr,lf,'    WHEEL password RESET    <-- Reset (Clear) Wheel Byte'
  117.     db    cr,lf,'    WHEEL /S or WHEEL /R    <-- Set or Reset Wheel Byte'
  118.     db    cr,lf,'                    but allow user to type'
  119.     db    ' in password'
  120.     db    cr,lf,'                    without echo'
  121.     db    cr,lf,0
  122.     ret
  123.  
  124. ;
  125. ; Print Wheel Byte Setting
  126. ;
  127. pwhlstat:
  128.     call    print
  129.     db    ' Wheel Byte is ',0
  130.     call    getwhl    ;get wheel byte
  131. pronoff:
  132.     ora    a    ;0=off
  133.     jz    proff
  134.     call    print
  135.     db    'ON',0
  136.     ret
  137. proff:
  138.     call    print
  139.     db    'OFF',0
  140.     ret
  141.  
  142. ;
  143. ; Input Password without echo and then process it
  144. ;
  145. inpass:
  146.     call    print
  147.     db    ' Wheel Password? ',0
  148.     call    codend    ; pt to scratch area
  149.     xra    a    ; no echo
  150.     call    inline    ; get line from user
  151.     push    h    ; save ptr to first char
  152.     mvi    b,8    ; 8 chars
  153. inp1:
  154.     mov    a,m    ; capitalize input
  155.     call    caps
  156.     mov    m,a
  157.     inx    h    ; pt to next
  158.     ora    a    ; done?
  159.     jz    inp2
  160.     dcr    b    ;count down
  161.     jnz    inp1
  162.     jmp    inp4
  163. inp2:
  164.     dcx    h    ;pt to null
  165.     mvi    a,' '    ;space fill
  166. inp3:
  167.     mov    m,a    ;store space
  168.     inx    h
  169.     dcr    b
  170.     jnz    inp3
  171. inp4:
  172.     pop    h    ; get ptr to first char
  173.     jmp    start2
  174. ;
  175. ; Process Password
  176. ;
  177. start1:
  178.     lxi    h,pass    ; pt to user password
  179. start2:
  180.     lxi    d,ppass    ; pt to WHEEL password
  181.     mvi    b,8    ; 8 chars max
  182. passlp:
  183.     ldax    d    ; get WHEEL password
  184.     cmp    m    ; match?
  185.     jnz    nopass
  186.     inx    h    ; pt to next
  187.     inx    d
  188.     dcr    b    ; count down
  189.     jnz    passlp
  190. ;
  191. ; Password Approved
  192. ;
  193.     lda    cmnd    ; check command
  194.     cpi    'R'    ; reset?
  195.     jz    reset
  196. ;
  197. ; Set Wheel Byte
  198. ;
  199.     mvi    a,0ffh    ;set wheel byte
  200.     call    putwhl
  201.     jmp    pwhlstat    ;print status
  202. ;
  203. ; Reset Wheel Byte
  204. ;
  205. reset:
  206.     xra    a    ;reset wheel byte
  207.     call    putwhl
  208.     jmp    pwhlstat    ;print status
  209. ;
  210. ; Password Not Approved
  211. ;
  212. nopass:
  213.     call    print
  214.     db    cr,lf,' Invalid Password',0
  215.     ret
  216.  
  217.     end
  218.