home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug097.arc / SPEED.MAC < prev    next >
Text File  |  1979-12-31  |  2KB  |  125 lines

  1. ;
  2. ;
  3. ;    512k Operating system support program.
  4. ;    CPU speed switcher.
  5. ;
  6. ;
  7.  
  8. bdos        equ    5
  9. cr        equ    13
  10. lf        equ    10
  11. tab        equ    9
  12. bell        equ    7
  13. command_line    equ    80h
  14.  
  15. bios_start    equ    0E700h
  16. id        equ    218h
  17. id_val        equ    0AA55h
  18. speed_flag    equ    28Dh
  19. speed_port    equ    9
  20. speed_bit    equ    2
  21.  
  22.     aseg
  23.  
  24.     org    100h
  25.  
  26.     ld    de,start_mesg
  27.     ld    c,9
  28.     call    bdos
  29.  
  30.     ld    hl,(bios_start+id)
  31.     ld    de,id_val
  32.     or    a
  33.     sbc    hl,de
  34.     jr    nz,get_lost
  35.  
  36.     ld    de,use_mesg
  37.     ld    hl,command_line
  38.     ld    a,(hl)
  39.     or    a
  40.     jr    z,prt_ret
  41.     ld    b,a
  42. parse:
  43.     inc    hl
  44.     ld    a,(hl)
  45.     cp    '?'
  46.     jr    z,show_speed
  47.     or    'a'-'A'
  48.     cp    'f'
  49.     jr    z,set_fast
  50.     cp    's'
  51.     jr    z,set_slow
  52.     djnz    parse
  53.     jr    prt_ret
  54.  
  55. set_fast:
  56.     ld    hl,fast_mesg
  57.     ld    a,0FFh
  58.     jr    set_speed
  59.  
  60. set_slow:
  61.     ld    hl,slow_mesg
  62.     xor    a
  63.  
  64. set_speed:
  65.     ld    (bios_start+speed_flag),a
  66.     and    speed_bit
  67.     in    a,(speed_port)
  68.     ld    de,speed_mesg_loc
  69.     ld    bc,5
  70.     ldir
  71.     ld    de,speed_mesg
  72.     jr    prt_ret
  73.  
  74. show_speed:
  75.     ld    a,(bios_start+speed_flag)
  76.     ld    hl,fast_mesg
  77.     or    a
  78.     jr    nz,ss_1
  79.     ld    hl,slow_mesg
  80. ss_1:
  81.     ld    de,show_mesg_loc
  82.     ld    bc,5
  83.     ldir
  84.     ld    de,show_mesg
  85.     jr    prt_ret
  86.  
  87. get_lost:
  88.     ld    de,wb_mesg
  89. prt_ret:
  90.     ld    c,9
  91.     call    bdos
  92.     ret
  93.  
  94. start_mesg:
  95.     db    cr,lf,'Microbee 512k Enhanced Operating System v2.2,'
  96.     db    ' (c) 1987 Peter Broughton.',cr,lf
  97.     db    'SPEED : CPU speed switcher (requires hardware).',cr,lf,lf,'$'
  98.  
  99. wb_mesg:
  100.     db    bell,'Wrong operating system !!',cr,lf,lf,'$'
  101.  
  102. use_mesg:
  103.     db    'Use : SPEED F(ast)/S(low)/?(query).',cr,lf,lf,'$'
  104.  
  105. speed_mesg:
  106.     db    'CPU speed now set to '
  107. speed_mesg_loc:
  108.     db    '42.00 MHz.',cr,lf,lf,'$'
  109.  
  110. show_mesg:
  111.     db    'CPU speed currently '
  112. show_mesg_loc:
  113.     db    '42.00 MHz.',cr,lf,lf,'$'
  114.  
  115. fast_mesg:
  116.     db    '6.75',0
  117. slow_mesg:
  118.     db    '3.375'
  119.  
  120.     if    ($ and 7Fh) ne 0
  121.      ds    80h-($ and 7Fh)
  122.     endif
  123.  
  124.     end
  125.