Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. #include <evo.h>
  2. #include "startup.h"    //¤ЄюЄ Їрщы ухэхЁшЁєхЄё  ртЄюьрЄшўхёъш яЁш ъюьяшы Ўшш startup.asm
  3.  
  4.  
  5.  
  6. void memset(void* m,u8 b,u16 len) __naked
  7. {
  8. __asm
  9.         ld hl,#2
  10.         add hl,sp
  11.         ld e,(hl)
  12.         inc hl
  13.         ld d,(hl)
  14.         inc hl
  15.         ld a,(hl)
  16.         inc hl
  17.         ld c,(hl)
  18.         inc hl
  19.         ld b,(hl)
  20.  
  21.         ex de,hl
  22.         ld d,h
  23.         ld e,l
  24.         inc de
  25.         dec bc
  26.         ld (hl),a
  27.         jp _FAST_LDIR
  28. __endasm;
  29. }
  30.  
  31.  
  32.  
  33. void memcpy(void* d,void* s,u16 len) __naked
  34. {
  35. __asm
  36.         ld hl,#2
  37.         add hl,sp
  38.         ld e,(hl)
  39.         inc hl
  40.         ld d,(hl)
  41.         push de
  42.         inc hl
  43.         ld e,(hl)
  44.         inc hl
  45.         ld d,(hl)
  46.         inc hl
  47.         ld c,(hl)
  48.         inc hl
  49.         ld b,(hl)
  50.         ex de,hl
  51.         pop de
  52.         jp _FAST_LDIR
  53. __endasm;
  54. }
  55.  
  56.  
  57.  
  58. void border(u8 n) __naked
  59. {
  60. __asm
  61.         ld hl,#2
  62.         add hl,sp
  63.         ld a,(hl)
  64.         ld (_BORDERCOL),a
  65.         ld c,a
  66.         and #7
  67.         bit 3,c
  68.         jr nz,1$
  69.         out (0xfe),a
  70.         ret
  71. 1$:
  72.         out (0xf6),a
  73.         ret
  74. __endasm;
  75. }
  76.  
  77.  
  78.  
  79. void vsync(void) __naked
  80. {
  81. __asm
  82.         halt
  83.         ret
  84. __endasm;
  85. }
  86.  
  87.  
  88.  
  89. u8 joystick(void) __naked
  90. {
  91. __asm
  92.         jp _JOYSTICK
  93. __endasm;
  94. }
  95.  
  96.  
  97.  
  98. void keyboard(u8* keys) __naked
  99. {
  100. __asm
  101.         ld hl,#2
  102.         add hl,sp
  103.         ld e,(hl)
  104.         inc hl
  105.         ld d,(hl)
  106.         jp _KEYBOARD
  107. __endasm;
  108. }
  109.  
  110.  
  111.  
  112. u8 mouse_pos(u8* x,u8* y) __naked
  113. {
  114. __asm
  115.         ld hl,#2
  116.         add hl,sp
  117.         ld c,(hl)
  118.         inc hl
  119.         ld b,(hl)
  120.         inc hl
  121.         ld e,(hl)
  122.         inc hl
  123.         ld d,(hl)
  124.         ld a,(_MOUSE_X)
  125.         ld (bc),a
  126.         ld a,(_MOUSE_Y)
  127.         ld (de),a
  128.         ld a,(_MOUSE_BTN)
  129.         ld l,a
  130.         ret
  131. __endasm;
  132. }
  133.  
  134.  
  135.  
  136. void mouse_set(u8 x,u8 y) __naked
  137. {
  138. __asm
  139.         ld hl,#2
  140.         add hl,sp
  141.         ld a,(hl)
  142.         ld (_MOUSE_X),a
  143.         inc hl
  144.         ld a,(hl)
  145.         ld (_MOUSE_Y),a
  146.         jp _MOUSE_APPLY_CLIP
  147. __endasm;
  148. }
  149.  
  150.  
  151.  
  152. void mouse_clip(u8 xmin,u8 ymin,u8 xmax,u8 ymax) __naked
  153. {
  154. __asm
  155.         ld hl,#2
  156.         add hl,sp
  157.         ld a,(hl)
  158.         ld (_MOUSE_CX1),a
  159.         inc hl
  160.         ld a,(hl)
  161.         ld (_MOUSE_CY1),a
  162.         inc hl
  163.         ld a,(hl)
  164.         ld (_MOUSE_CX2),a
  165.         inc hl
  166.         ld a,(hl)
  167.         ld (_MOUSE_CY2),a
  168.         jp _MOUSE_APPLY_CLIP
  169. __endasm;
  170. }
  171.  
  172.  
  173.  
  174. u8 mouse_delta(i8* x,i8* y) __naked
  175. {
  176. __asm
  177.         ld hl,#2
  178.         add hl,sp
  179.         ld c,(hl)
  180.         inc hl
  181.         ld b,(hl)
  182.         inc hl
  183.         ld e,(hl)
  184.         inc hl
  185.         ld d,(hl)
  186.         ld a,(_MOUSE_DX)
  187.         ld (bc),a
  188.         ld a,(_MOUSE_DY)
  189.         ld (bc),a
  190.         ld a,(_MOUSE_BTN)
  191.         ld l,a
  192.         ret
  193. __endasm;
  194. }
  195.  
  196.  
  197.  
  198. void sfx_play(u8 sfx,i8 vol) __naked
  199. {
  200. __asm
  201.         ld hl,#2
  202.         add hl,sp
  203.         ld b,(hl)
  204.         inc hl
  205.         ld c,(hl)
  206.         jp _SFX_PLAY
  207. __endasm;
  208. }
  209.  
  210.  
  211.  
  212. void sfx_stop(void) __naked
  213. {
  214. __asm
  215.         jp _SFX_STOP
  216. __endasm;
  217. }
  218.  
  219.  
  220.  
  221. void music_play(u8 mus) __naked
  222. {
  223. __asm
  224.         ld hl,#2
  225.         add hl,sp
  226.         ld a,(hl)
  227.         jp _MUSIC_PLAY
  228. __endasm;
  229. }
  230.  
  231.  
  232.  
  233. void music_stop(void) __naked
  234. {
  235. __asm
  236.         jp _MUSIC_STOP
  237. __endasm;
  238. }
  239.  
  240.  
  241.  
  242. void sample_play(u8 sample) __naked
  243. {
  244. __asm
  245.         ld hl,#2
  246.         add hl,sp
  247.         ld l,(hl)
  248.         jp _SAMPLE_PLAY
  249. __endasm;
  250. }
  251.  
  252.  
  253.  
  254. u16 rand16(void) __naked
  255. {
  256. __asm
  257.         ld hl,(1$)
  258.         push hl
  259.         srl h
  260.         rr l
  261.         ex de,hl
  262.         ld hl,(2$)
  263.         add hl,de
  264.         ld (2$),hl
  265.         ld a,l
  266.         xor #15
  267.         ld l,a
  268.         ex de,hl
  269.         pop hl
  270.         sbc hl,de
  271.         ld (1$),hl
  272.         ret
  273.  
  274. 1$:     .dw 1
  275. 2$:     .dw 5
  276.  
  277. __endasm;
  278. }
  279.  
  280.  
  281.  
  282. void pal_clear(void) __naked
  283. {
  284. __asm
  285.         ld hl,#_PALETTE
  286.         ld bc,#0x1000
  287. 1$:
  288.         ld (hl),c
  289.         inc l
  290.         djnz 1$
  291.         ld a,h
  292.         ld (_PALCHANGE),a
  293.         ret
  294. __endasm;
  295. }
  296.  
  297.  
  298.  
  299. void pal_select(u8 id) __naked
  300. {
  301. __asm
  302.         ld hl,#2
  303.         add hl,sp
  304.         ld a,(hl)
  305.         jp _PAL_SELECT
  306. __endasm;
  307. }
  308.  
  309.  
  310.  
  311. void pal_bright(u8 bright) __naked
  312. {
  313. __asm
  314.         ld hl,#2
  315.         add hl,sp
  316.         ld a,(hl)
  317.         jp _PAL_BRIGHT
  318. __endasm;
  319. }
  320.  
  321.  
  322.  
  323. void pal_col(u8 id,u8 col) __naked
  324. {
  325. __asm
  326.         ld hl,#2
  327.         add hl,sp
  328.         ld a,(hl)
  329.         inc hl
  330.         ld c,(hl)
  331.         ld hl,#_PALETTE
  332.         add a,l
  333.         ld l,a
  334.         ld a,c
  335.         and #63
  336.         ld (hl),a
  337.         ld a,h
  338.         ld (_PALCHANGE),a
  339.         ret
  340. __endasm;
  341. }
  342.  
  343.  
  344.  
  345. void pal_copy(u8 id,u8* pal) __naked
  346. {
  347. __asm
  348.         ld hl,#2
  349.         add hl,sp
  350.         ld a,(hl)
  351.         inc hl
  352.         ld e,(hl)
  353.         inc hl
  354.         ld d,(hl)
  355.         jp _PAL_COPY
  356. __endasm;
  357. }
  358.  
  359.  
  360.  
  361. void pal_custom(u8* pal) __naked
  362. {
  363. __asm
  364.         ld hl,#2
  365.         add hl,sp
  366.         ld a,(hl)
  367.         inc hl
  368.         ld h,(hl)
  369.         ld l,a
  370.         ld de,#_PALETTE
  371.         ld b,#16
  372. 1$:
  373.         ld a,(hl)
  374.         and #63
  375.         ld (de),a
  376.         inc hl
  377.         inc e
  378.         djnz 1$
  379.         ld a,d
  380.         ld (_PALCHANGE),a
  381.         ret
  382. __endasm;
  383. }
  384.  
  385.  
  386.  
  387. void draw_tile(u8 x,u8 y,u16 tile) __naked
  388. {
  389. __asm
  390.         ld hl,#2
  391.         add hl,sp
  392.         ld c,(hl)
  393.         inc hl
  394.         ld b,(hl)
  395.         inc hl
  396.         ld e,(hl)
  397.         inc hl
  398.         ld d,(hl)
  399.         jp _DRAW_TILE
  400. __endasm;
  401. }
  402.  
  403.  
  404.  
  405. void draw_tile_key(u8 x,u8 y,u16 tile) __naked
  406. {
  407. __asm
  408.         ld hl,#2
  409.         add hl,sp
  410.         ld c,(hl)
  411.         inc hl
  412.         ld b,(hl)
  413.         inc hl
  414.         ld e,(hl)
  415.         inc hl
  416.         ld d,(hl)
  417.         jp _DRAW_TILE_KEY
  418. __endasm;
  419. }
  420.  
  421.  
  422.  
  423. void draw_image(u8 x,u8 y,u8 id) __naked
  424. {
  425. __asm
  426.  
  427.         ld hl,#2
  428.         add hl,sp
  429.        
  430.        
  431.         push    ix
  432.         ld      ix,#0
  433.         add     ix,sp
  434.        
  435.         ld a,(_MEMSLOT2)
  436.         push af
  437.  
  438.        
  439.        
  440.         ld c,(hl)
  441.         inc hl
  442.         ld b,(hl)
  443.         inc hl
  444.         ld a,(hl)
  445.        
  446.        
  447.         call _DRAW_IMAGE
  448.        
  449.        
  450.         pop af
  451.         LD      BC, #0xbff7
  452.     ld (_MEMSLOT2),a
  453.     out (c),a
  454.        
  455.         pop ix
  456.        
  457.         ret
  458. __endasm;
  459. }
  460.  
  461. void draw_image_extra(u8 x,u8 y,u8 id,u8 width,u8 begx) __naked
  462. {
  463. __asm
  464.         ld hl,#2
  465.         add hl,sp ;cy=0
  466.        
  467.         push    ix
  468.         ld      ix,#0
  469.         add     ix,sp
  470.        
  471.         ld a,(_MEMSLOT2)
  472.         push af
  473.        
  474.         ld c,(hl)
  475.         inc hl
  476.         ld b,(hl)
  477.         inc hl
  478.         ld a,(hl)
  479.         inc hl
  480.         ld e,(hl)
  481.         inc hl
  482.         ld d,(hl)
  483.         scf
  484.         call _DRAW_IMAGE
  485.        
  486.         pop af
  487.         LD      BC, #0xbff7
  488.     ld (_MEMSLOT2),a
  489.     out (c),a
  490.        
  491.         pop ix
  492.        
  493.        
  494.         ret
  495. __endasm;
  496. }
  497.  
  498.  
  499. void clear_screen(u8 color) __naked
  500. {
  501. __asm
  502.         ld hl,#2
  503.         add hl,sp
  504.         ld a,(hl)
  505.         jp _CLEAR_SCREEN
  506. __endasm;
  507. }
  508.  
  509.  
  510.  
  511. void swap_screen(void) __naked
  512. {
  513. __asm
  514.  
  515.        
  516.         jp _SWAP_SCREEN
  517.        
  518. __endasm;
  519. }
  520.  
  521.  
  522.  
  523. void select_image(u8 id) __naked
  524. {
  525. __asm
  526.         ld hl,#2
  527.         add hl,sp
  528.         ld l,(hl)
  529.         jp _SELECT_IMAGE
  530. __endasm;
  531. }
  532.  
  533.  
  534.  
  535. void color_key(u8 col) __naked
  536. {
  537. __asm
  538.         ld hl,#2
  539.         add hl,sp
  540.         ld c,(hl)
  541.         jp _COLOR_KEY
  542. __endasm;
  543. }
  544.  
  545.  
  546.  
  547. void set_sprite(u8 id,u8 x,u8 y,u16 spr) __naked
  548. {
  549. __asm
  550.         ld hl,#2
  551.         add hl,sp
  552.         ld a,(hl)       ;id
  553.         inc hl
  554.         ld c,(hl)       ;x
  555.         inc hl
  556.         ld b,(hl)       ;y
  557.         inc hl
  558.         ld e,(hl)       ;sprl
  559.         inc hl
  560.         ld d,(hl)       ;sprh
  561.        
  562.         add a,a
  563.         add a,a
  564.         ld l,a
  565.         ld h,#_SPRQUEUE/256
  566.  
  567.         ld a,d          ;яхЁхёў╕Є эюьхЁр ёяЁрщЄр
  568.         cp #255
  569.         jr z,1$
  570.         add a,a
  571.         add a,d
  572.         ld d,a
  573. 1$:
  574.         ld a,(_SCREENACTIVE)
  575.         and #2
  576.         jr nz,2$
  577.         inc h
  578. 2$:
  579.         ld (hl),d
  580.         inc l
  581.         ld (hl),e
  582.         inc l
  583.         ld (hl),b
  584.         inc l
  585.         ld (hl),c
  586.         ret
  587. __endasm;
  588. }
  589.  
  590.  
  591.  
  592. void sprites_start(void) __naked
  593. {
  594. __asm
  595.         jp _SPRITES_START
  596. __endasm;
  597. }
  598.  
  599.  
  600.  
  601. void sprites_stop(void) __naked
  602. {
  603. __asm
  604.         jp _SPRITES_STOP
  605. __endasm;
  606. }
  607.  
  608.  
  609.  
  610. u32 time(void) __naked
  611. {
  612. __asm
  613.         ld hl,#_TIME+3
  614.         ld d,(hl)
  615.         dec hl
  616.         ld e,(hl)
  617.         dec hl
  618.         ld a,(hl)
  619.         dec hl
  620.         ld l,(hl)
  621.         ld h,a
  622.         ret
  623. __endasm;
  624. }
  625.  
  626.  
  627.  
  628. void delay(u16 time) __naked
  629. {
  630. __asm
  631.        
  632.        
  633.         ld hl,#2
  634.         add hl,sp
  635.         ld c,(hl)
  636.         inc hl
  637.         ld b,(hl)
  638.         ld a,b
  639.         or c
  640.         ret z
  641. 1$:
  642.         halt
  643.         dec bc
  644.         ld a,b
  645.         or c
  646.         jr nz,1$
  647.        
  648.         ret
  649. __endasm;
  650. }