?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. #ifndef __MEM
  2. #define __MEM
  3. #include "startup.h"
  4.  
  5. void put_mem(u8 pg, u16 addr, u8 data) __naked
  6. {
  7. //addr=32768+nn
  8. __asm
  9.         push    ix
  10.         ld      ix,#0
  11.         add     ix,sp
  12. //pg
  13. ld a,4 (ix)
  14. xor #0x7f
  15. ld bc,#0xbff7
  16. ld (_MEMSLOT2),a
  17. out (c),a
  18. //addr
  19. ld l,5 (ix)
  20. ld h,6 (ix)
  21. //data
  22. ld a,7 (ix)
  23. ld (hl),a
  24. ld a,#0x71
  25. out (c),a
  26.         pop ix
  27.         ret
  28. __endasm;
  29. }
  30.  
  31.  
  32. u8 get_mem(u8 pg, u16 addr) __naked
  33. {
  34. //addr=32768+nn
  35. __asm
  36.         push    ix
  37.         ld      ix,#0
  38.         add     ix,sp
  39. //pg
  40. ld a,4 (ix)
  41. xor #0x7f
  42. ld bc,#0xbff7
  43. ld (_MEMSLOT2),a
  44. out (c),a
  45. //addr
  46. ld l,5 (ix)
  47. ld h,6 (ix)
  48. //data
  49. ld l,(hl)
  50. ld a,#0x71
  51. out (c),a
  52.         pop ix
  53.         ret
  54. __endasm;
  55. }
  56.  
  57. void put_memw(u8 pg, u16 addr, u16 data) __naked
  58. {
  59. //addr=32768+nn
  60. __asm
  61.         push    ix
  62.         ld      ix,#0
  63.         add     ix,sp
  64. //pg
  65.         ld a,4 (ix)
  66.         xor #0x7f
  67.         ld bc,#0xbff7
  68.         ld (_MEMSLOT2),a
  69.         out (c),a
  70. //addr
  71.         ld l,5 (ix)
  72.         ld h,6 (ix)
  73. //data
  74.         ld a,7 (ix)
  75.         ld (hl),a
  76.         inc     hl
  77.         ld      a,8 (ix)
  78.         ld      (hl),a 
  79.         ld a,#0x71
  80.         out (c),a
  81.         pop ix
  82.         ret
  83. __endasm;
  84. }
  85.  
  86.  
  87. u16 get_memw(u8 pg, u16 addr) __naked
  88. {
  89. //addr=32768+nn
  90. __asm
  91.         push    ix
  92.         ld      ix,#0
  93.         add     ix,sp
  94. //pg
  95.         ld a,4 (ix)
  96.         xor #0x7f
  97.         ld bc,#0xbff7
  98.         ld (_MEMSLOT2),a
  99.         out (c),a
  100. //addr
  101.         ld l,5 (ix)
  102.         ld h,6 (ix)
  103. //data
  104.         ld      a,(hl)
  105.         inc     hl
  106.         ld h,(hl)
  107.         ld      l,a
  108.         ld a,#0x71
  109.         out (c),a
  110.         pop ix
  111.         ret
  112. __endasm;
  113. }
  114.  
  115.  
  116. void put_meml(u8 pg, u16 addr, u32 data) __naked
  117. {
  118. //addr=32768+nn
  119. __asm
  120. //pg
  121.         ld a,4 (ix)
  122.         xor #0x7f
  123.         ld bc,#0xbff7
  124.         ld (_MEMSLOT2),a
  125.         out (c),a
  126. //addr
  127.         ld l,5 (ix)
  128.         ld h,6 (ix)
  129. //data
  130.         ld a,7 (ix)
  131.         ld (hl),a
  132.         inc     hl
  133.         ld      a,8 (ix)
  134.         ld      (hl),a 
  135.         inc     hl
  136.         ld a,9 (ix)
  137.         ld (hl),a
  138.         inc     hl
  139.         ld a,10 (ix)
  140.         ld (hl),a
  141.         ld a,#0x71
  142.         out (c),a
  143. __endasm;
  144. }
  145.  
  146.  
  147. u32 get_meml(u8 pg, u16 addr) __naked
  148. {
  149. //addr=32768+nn
  150. __asm
  151. //pg
  152.         ld a,4 (ix)
  153.         xor #0x7f
  154.         ld bc,#0xbff7
  155.         ld (_MEMSLOT2),a
  156.         out (c),a
  157. //addr
  158.         ld l,5 (ix)
  159.         ld h,6 (ix)
  160. //data
  161.         ld      e,(hl)
  162.         inc     hl
  163.         ld      d,(hl)
  164.         inc     hl
  165.         ld      a,(hl)
  166.         inc     hl
  167.         ld      h,(hl)
  168.         ld      l,a
  169.         ld a,#0x71
  170.         out (c),a
  171. __endasm;
  172. }
  173.  
  174.  
  175. #endif