Advertisement
Eeems

Untitled

Jul 2nd, 2011
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ClearBuffer:
  2.     xor a
  3. FillBuffer:
  4.     push de
  5.     push bc
  6.         ld d,a
  7.         ld e,a
  8.         call SafeInterruptDI
  9.         push af
  10.         ld (saveSP),sp
  11.         ld sp,LCDBuffer+768
  12.         ld b,32
  13. _           push de
  14.             push de
  15.             push de
  16.             push de
  17.             push de
  18.             push de
  19.             push de
  20.             push de
  21.             push de
  22.             push de
  23.             push de
  24.             push de
  25.             djnz -_
  26.         ld sp,(saveSP)
  27.     pop af
  28.     pop bc
  29.     pop de
  30.         ret c
  31.     ei
  32.     ret
  33. SafeInterruptDI:
  34.     xor a       ;Set nc (interrupts)
  35.     out ($20),a     ;Set speed to slow
  36.     push    af      ;Check interrupts
  37.     pop af
  38.     ld  a,i     ;pe if interrupt
  39.     di
  40.         ret pe      ;Return if interrupts on
  41.     dec sp      ;Otherwise, robust test
  42.     dec sp
  43.     pop af
  44.     or  a       ;Set nc (interrupts)
  45.         ret nz      ;Return if interrupts on
  46.     scf         ;Set c (no interrupts)
  47.     ret         ;Return
  48. ; safely returns interrupt
  49. ; inputs    af = state flags
  50. SafeInterruptEI:
  51.     ret c
  52.     ei
  53.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement