?login_element?

Subversion Repositories NedoOS

Rev

Rev 1760 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. iscontrolregister
  2. ;a = register
  3. ;out: zf=1 if it's control register, zf=0 otherwise
  4.         cp 0x0e ;IO port
  5.         ret z
  6.         cp 0x0f ;IO port
  7.         ret z
  8.         cp 0x2d ;prescaler
  9.         ret z
  10.         cp 0x2e ;prescaler
  11.         ret z
  12.         cp 0x2f ;prescaler
  13.         ret
  14.  
  15. opnwritemusiconlyfm1
  16. ;skips writes to control registers
  17. ;e = register
  18. ;d = value
  19.         ld a,e
  20.         call iscontrolregister
  21.         ret z
  22.         cp 0x27 ;timers control
  23.         jp nz,opnwritefm1
  24.         ld a,d
  25.         ld (opntimerctrl),a
  26.         or %00001010 ;avoid altering timer B
  27.         ld d,a
  28.         jp opnwritefm1
  29.  
  30. opnwritemusiconlyfm2
  31. ;skips writes to control registers
  32. ;e = register
  33. ;d = value
  34.         ld a,e
  35.         call iscontrolregister
  36.         ret z
  37.         jp opnwritefm2
  38.  
  39. opninittimer60hz
  40. ;       ld de,0xc626
  41.         ld de,0xca26
  42.         call opnwritefm1
  43.         ld de,0x2a27
  44.         jp opnwritefm1
  45.  
  46. opnwaittimer60hz
  47.         ld bc,OPN_REG
  48.         ld a,%11111000
  49.         out (c),a
  50. .waitloop
  51.         in a,(c)
  52.         and 2
  53.         jr z,.waitloop
  54.         ld de,0x2a27
  55. opntimerctrl=$+1
  56.         ld a,0
  57.         or d
  58.         ld d,a
  59.         jp opnwritefm1
  60.