Advertisement
Eeems

Untitled

Jul 1st, 2011
190
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.  
  36.     out ($20),a     ;Set speed to slow
  37.  
  38.     push    af      ;Check interrupts
  39.  
  40.     pop af
  41.  
  42.     ld  a,i     ;pe if interrupt
  43.  
  44.     di
  45.  
  46.         ret pe      ;Return if interrupts on
  47.  
  48.     dec sp      ;Otherwise, robust test
  49.  
  50.     dec sp
  51.  
  52.     pop af
  53.  
  54.     or  a       ;Set nc (interrupts)
  55.  
  56.         ret nz      ;Return if interrupts on
  57.  
  58.     scf         ;Set c (no interrupts)
  59.  
  60.     ret         ;Return
  61. ; safely returns interrupts
  62. ; inputs    af = state flags
  63. SafeInterruptEI:
  64.     ret c
  65.     ei
  66.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement