?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         DEVICE ZXSPECTRUM128
  2.         include "../../_sdk/sys_h.asm"
  3.  
  4. BINADDR=0x4000
  5.  
  6. scrbase=0x4000
  7. sprmaxwid=32
  8. sprmaxhgt=32
  9. scrwid=160 ;double pixels
  10. scrhgt=200
  11. clswid=40 ;*8
  12. clshgt=200
  13.  
  14. STACK=0x4000
  15. tempsp=0x3f06 ;6 bytes for prspr
  16. INTSTACK=0x3f00
  17.  
  18. SND_PAGE=0;(0^INVMASK)
  19. SPTBL_PAGE=1;(6^INVMASK)
  20. PAL_PAGE=2;(4^INVMASK)
  21.  
  22. SPBUF_PAGE0=3;(8^INVMASK)
  23. SPBUF_PAGE1=4;(9^INVMASK)
  24. SPBUF_PAGE2=5;(10^INVMASK)
  25. SPBUF_PAGE3=6;(11^INVMASK)
  26.  
  27. CC_PAGE1=7;(13^INVMASK)
  28. CC_PAGE2=8;(14^INVMASK)
  29. CC_PAGE3=9;(12^INVMASK)
  30.  
  31. GFX_PAGE=10;(16^INVMASK) ;и далее
  32.  
  33. IMG_LIST =0xd000;#1000
  34.  
  35. ;смещения в SND_PAGE
  36.  
  37. AFX_INIT =#4000
  38. AFX_PLAY =#4003
  39. AFX_FRAME=#4006
  40. PT3_INIT =#4009
  41. PT3_FRAME=#400c
  42. PT3_MUTE =#400f ;NEW for TFM
  43. TURBOFMON=#4012 ;NEW for TFM
  44.  
  45. MUS_COUNT=#49fe
  46. SMP_COUNT=#49ff
  47. SFX_COUNT=#5000
  48.  
  49. MUS_LIST =#4a00
  50. SMP_LIST =#4d00
  51. SFX_DATA =#5100
  52.  
  53.         macro MDebug color
  54.         push af
  55.         ld a,color
  56.         out (#fe),a
  57.         pop af
  58.         endm
  59.  
  60.         macro MSetShadowScreen
  61.         call setpgsscr40008000
  62.         endm
  63.  
  64.         macro MRestoreMemMap012
  65. ;TODO переделать на (pgmain4000) и т.п. (сейчас с пересчётом по таблице)
  66.         ld a,CC_PAGE3
  67.         call setpgc000;SETPG32KHIGH
  68.         ld a,CC_PAGE1
  69.         call setpg4000;SETPG16K
  70.         ld a,CC_PAGE2
  71.         call setpg8000;SETPG32KLOW
  72.         endm
  73.  
  74.         macro MRestoreMemMap12
  75.         ld a,CC_PAGE1
  76.         call setpg4000;SETPG16K
  77.         ld a,CC_PAGE2
  78.         call setpg8000;SETPG32KLOW
  79.         endm
  80.  
  81.         org PROGSTART
  82. begin
  83.         ld sp,STACK
  84.         OS_HIDEFROMPARENT
  85.  
  86. ;        ld b,25
  87. ;waitcls0
  88. ;        push bc
  89. ;        YIELD
  90. ;        pop bc
  91. ;        djnz waitcls0 ;чтобы nv не перехватил фокус при вызове через комстроку
  92.  
  93.         ld e,0+128 ;+128=keep
  94.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  95.         ld e,0
  96.         OS_SETSCREEN
  97.         ld e,0 ;color byte
  98.         OS_CLS
  99.         ld e,1
  100.         OS_SETSCREEN
  101.         ld e,0 ;color byte
  102.         OS_CLS
  103.        
  104.         OS_GETMAINPAGES
  105. ;dehl=номера страниц в 0000,4000,8000,c000
  106.         ld a,e
  107.         LD (pgmain4000),A
  108.         ld (tpages+CC_PAGE1),a
  109.         ld a,h
  110.         LD (pgmain8000),A
  111.         ld (tpages+CC_PAGE2),a
  112.         ld a,l
  113.         ld (tpages+CC_PAGE3),a
  114.         call setpgsmain40008000 ;записать в curpg...
  115.  
  116.         ld de,res_path
  117.         OS_CHDIR
  118.  
  119.         ld de,fnaddr
  120.         OS_OPENHANDLE
  121.         push bc
  122.         ld de,jpaddr ;addr
  123.         ld hl,2 ;size
  124.         OS_READHANDLE
  125.         pop bc
  126.         OS_CLOSEHANDLE
  127.  
  128.         ld hl,sndfilename
  129.         call loadpage ;CY=error
  130.         ld (tpages+0),a
  131.         ld hl,sprtblfilename
  132.         call loadpage ;CY=error
  133.         ld (tpages+1),a
  134.         ld hl,palfilename
  135.         call loadpage ;CY=error
  136.         ld (tpages+2),a
  137.  
  138.         ld de,tpages+GFX_PAGE
  139.  
  140.         ;ld b,NUMBER_OF_PAGES
  141. loadloop0
  142.         ;push bc
  143.         push de
  144.         ld hl,texfilename
  145.         call loadpage ;CY=error
  146.         pop de
  147.        jr c,loadloop0q
  148.         ld (de),a
  149.         inc e
  150.         ld hl,texfilename_pgnumend
  151. loadloop_nextdigit0
  152.         dec hl
  153.         ld a,(hl)
  154.         inc a
  155.         cp "0"+10
  156.         ld (hl),"0"
  157.         jr z,loadloop_nextdigit0
  158.         ld (hl),a
  159.         jr loadloop0
  160.         ;pop bc
  161.         ;djnz loadloop0
  162. loadloop0q
  163.        
  164.         ld hl,tpages+SPBUF_PAGE0
  165.         ld b,4
  166. mkpages0
  167.         push bc
  168.         push hl
  169.         OS_NEWPAGE
  170.         pop hl
  171.         ld (hl),e
  172.         inc l
  173.         pop bc
  174.         djnz mkpages0
  175.  
  176.         call initsfx
  177.  
  178.         call swapimer
  179.  
  180.         call setpgsmain40008000
  181.         call RestoreMemMap3
  182.         ld de,fnbin
  183.         ld hl,0x4000
  184.         call loadbinpg
  185.         ld de,fnbin2
  186.         ld hl,0x8000
  187.         call loadbinpg
  188.         ld de,fnbin3
  189.         ld hl,0xc000
  190.         call loadbinpg
  191.        
  192.         ld de,CURPAL
  193.         OS_SETPAL
  194.  
  195.         call _swap_screen
  196. jpaddr=$+1
  197.         call 0
  198.  
  199. quit ;TODO
  200.         call swapimer
  201.         call _music_stop
  202.         halt
  203.         QUIT
  204.  
  205.         ds 0x0200-$
  206. tpages
  207.         ds 256 ;pages
  208.  
  209. loadbinpg
  210.         push hl
  211.         OS_OPENHANDLE
  212.         pop de ;addr
  213.         push bc
  214.         ld hl,-BINADDR ;size
  215.         OS_READHANDLE
  216.         pop bc
  217.         OS_CLOSEHANDLE                
  218.         ret
  219.  
  220. loadpage
  221. ;заказывает страничку и грузит туда файл (имя файла в hl)
  222. ;out: hl=после имени файла, a=pg
  223. ;or else CY
  224.         push hl
  225.         ex de,hl
  226.         OS_OPENHANDLE
  227.         pop hl
  228.         or a
  229.         scf
  230.         ret nz
  231.         push hl
  232.        push bc
  233.         OS_NEWPAGE
  234.        pop bc
  235.         pop hl
  236.         ld a,e
  237.         push af ;pg
  238.        push bc
  239.         SETPGC000
  240.        pop bc
  241.         push hl
  242.         ex de,hl
  243.         ;OS_OPENHANDLE
  244.         push bc
  245.         ld de,0xc000 ;addr
  246.         ld hl,0x4000 ;size
  247.         OS_READHANDLE
  248.         pop bc
  249.         OS_CLOSEHANDLE                
  250.         pop hl
  251.         ld b,1
  252.         xor a
  253.         cpir ;after 0
  254.         pop af ;pg
  255.         or a ;CY=0
  256.         ret
  257.  
  258. CURPAL
  259. ;DDp palette: %grbG11RB(low),%grbG11RB(high), инверсные
  260.         STANDARDPAL
  261.  
  262. sndfilename
  263.         db "page_0.bin",0
  264. sprtblfilename
  265.         db "page_1.bin",0
  266. palfilename
  267.         db "page_2.bin",0
  268.  
  269. texfilename
  270. texfilename_pgnumend=$+7;8
  271.         db "page_10.bin",0
  272.  
  273.  
  274.  
  275.  
  276. setpgsmain40008000
  277. pgmain4000=$+1
  278.         ld a,0
  279.         SETPG4000
  280. pgmain8000=$+1
  281.         ld a,0
  282.         SETPG8000
  283.         ret
  284.  
  285. setpgsscr40008000_current
  286.         call getuser_scr_low_cur
  287.         SETPG4000
  288.         call getuser_scr_high_cur
  289.         SETPG8000
  290.         ret
  291.  
  292. setpgsscr40008000
  293.         call getuser_scr_low
  294.         SETPG4000
  295.         call getuser_scr_high
  296.         SETPG8000
  297.         ret
  298.  
  299. setpgscrlow4000
  300.         call getuser_scr_low
  301.         SETPG4000
  302.         ret
  303.  
  304. setpgscrhigh4000
  305.         call getuser_scr_high
  306.         SETPG4000
  307.         ret
  308.  
  309. getuser_scr_low
  310. getuser_scr_low_patch=$+1
  311. getuser_scr_low_patchN=0xff&(user_scr0_low^user_scr1_low)
  312.         ld a,(user_scr1_low) ;ok
  313.         ret
  314.  
  315. getuser_scr_high
  316. getuser_scr_high_patch=$+1
  317. getuser_scr_high_patchN=0xff&(user_scr0_high^user_scr1_high)
  318.         ld a,(user_scr1_high) ;ok
  319.         ret
  320.  
  321. getuser_scr_low_cur
  322. getuser_scr_low_cur_patch=$+1
  323. getuser_scr_low_cur_patchN=0xff&(user_scr0_low^user_scr1_low)
  324.         ld a,(user_scr0_low) ;ok
  325.         ret
  326.  
  327. getuser_scr_high_cur
  328. getuser_scr_high_cur_patch=$+1
  329. getuser_scr_high_cur_patchN=0xff&(user_scr0_high^user_scr1_high)
  330.         ld a,(user_scr0_high) ;ok
  331.         ret
  332.  
  333. changescrpg_current
  334.         ld hl,getuser_scr_low_patch
  335.         ld a,(hl)
  336.         xor getuser_scr_low_patchN
  337.         ld (hl),a
  338.         ld hl,getuser_scr_high_patch
  339.         ld a,(hl)
  340.         xor getuser_scr_high_patchN
  341.         ld (hl),a
  342.         ld hl,getuser_scr_low_cur_patch
  343.         ld a,(hl)
  344.         xor getuser_scr_low_cur_patchN
  345.         ld (hl),a
  346.         ld hl,getuser_scr_high_cur_patch
  347.         ld a,(hl)
  348.         xor getuser_scr_high_cur_patchN
  349.         ld (hl),a
  350.  
  351.         ld a,1
  352. curscrnum=$+1
  353.         xor 0
  354.         ld ($-1),a
  355.         ret
  356.        
  357. changescrpg
  358. ;TODO убрать
  359.         call changescrpg_current
  360.         ld e,a
  361.         OS_SETSCREEN
  362.         ret
  363.  
  364. setpg4000
  365.         ld b,tpages/256
  366.         ld c,a
  367.         ld a,(bc)
  368.         SETPG16K
  369.         ret
  370.  
  371. setpg8000
  372.         ld b,tpages/256
  373.         ld c,a
  374.         ld a,(bc)
  375.         SETPG32KLOW
  376.         ret
  377.  
  378. setpgc000
  379.         ld b,tpages/256
  380.         ld c,a
  381.         ld a,(bc)
  382.         SETPG32KHIGH
  383.         ret
  384.  
  385. setShadowScreen
  386.         MSetShadowScreen
  387.         ret
  388.  
  389. _clear_screen
  390.         and 15
  391.         ld l,a
  392.         ld h,high colorMaskTable
  393.         ld e,(hl)
  394.         call setShadowScreen
  395.         ld hl,#4000
  396.         ld (hl),e
  397.         ld de,#4001
  398.         ld bc,#7fff
  399.         call _fast_ldir
  400. RestoreMemMap12
  401.         MRestoreMemMap12
  402.         ret
  403.  
  404. _swap_screen
  405.         push ix
  406.         ;push iy
  407.  
  408.         ld a,(spritesActive)
  409.         or a
  410.         push af
  411.         jr z,.noSpr0
  412.         call setShadowScreen
  413.         call updateTilesToBuffer
  414.         call prspr
  415. .noSpr0
  416.  
  417.         halt
  418.  
  419.         ld a,(_screenActive)
  420.         xor 2
  421.         ld (_screenActive),a ;for select sprqueue
  422.         call changescrpg
  423.  
  424.         pop af
  425.         jr z,.noSpr1
  426.  
  427.         call setShadowScreen
  428.         call respr
  429.         call updateTilesFromBuffer
  430.         call RestoreMemMap3;0
  431.         call RestoreMemMap12
  432. .noSpr1
  433.         ;pop iy
  434.         pop ix
  435.         ret
  436.  
  437. pal_get_address
  438.         ld h,0
  439.         ld l,a
  440.         add hl,hl
  441.         add hl,hl
  442.         add hl,hl
  443.         add hl,hl
  444.          set 7,h
  445.          set 6,h
  446.  
  447.         ld a,PAL_PAGE
  448.         jp setpgc000;SETPG32KHIGH
  449.  
  450.  
  451. _pal_select
  452.         call pal_get_address
  453.  
  454.         ld de,_palette
  455.         ld bc,16
  456.         ldir
  457.  
  458.         ld a,d
  459.         ld (_palChange),a
  460. RestoreMemMap3;0
  461.         ld a,CC_PAGE3;0
  462.         jp setpgc000;SETPG32KHIGH
  463.  
  464.  
  465.  
  466. _pal_bright
  467.         cp 7
  468.         jr c,.l1
  469.         ld a,6
  470. .l1
  471.         ld h,a
  472.         ld l,0
  473.         srl h
  474.         rr l
  475.         srl h
  476.         rr l
  477.         ld (_palBright),hl
  478.         ld a,1
  479.         ld (_palChange),a
  480.         ret
  481.  
  482.  
  483.  
  484. _pal_copy
  485.         push de
  486.         call pal_get_address
  487.  
  488.         ld de,palTemp
  489.         ld bc,16
  490.         ldir
  491.  
  492.         ld a,CC_PAGE3;0
  493.         call setpgc000;SETPG32KHIGH
  494.  
  495.         pop de
  496.         ld hl,palTemp
  497.         ld bc,16
  498.         ldir
  499.         ret
  500.  
  501. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;add function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  502.  
  503. ; mouse ;;;;;;;;;;;;;;;;;;;;;;;;;;
  504. _poll_mouse_delta
  505.         ld a,(_mouse_prev_dx)
  506.         ld e,a
  507.         ld bc,#fbdf     ;дельта x
  508.         in a,(c)
  509.         ld d,a
  510.         sub e
  511.         ld (_mouse_dx),a
  512.         ld a,d
  513.         ld (_mouse_prev_dx),a
  514.  
  515.         ld a,(_mouse_prev_dy)
  516.         ld b,#ff        ;дельта y
  517.         in e,(c)
  518.         sub e
  519.         ld (_mouse_dy),a
  520.         ld a,e
  521.         ld (_mouse_prev_dy),a
  522.         ret
  523.  
  524. _mouse_pos
  525.         call _poll_mouse_delta
  526.         ld b,#fa        ;кнопки мыши
  527.         in a,(c)
  528.         cpl
  529.         and #7
  530.         ld (_mouse_btn),a
  531.  
  532.         ld a,(_mouse_cx1)
  533.         ld e,a
  534.         ld a,(_mouse_cx2)
  535.         ld d,a
  536.  
  537.         ld a,(_mouse_dx)
  538.         ld c,a
  539.         srl a
  540.         bit 7,c
  541.         jr z,$+4
  542.         or #80
  543.         ld c,a
  544.         ld a,(_mouse_x)
  545.         add a,c
  546.         rl c
  547.         jp nc,.clipRight
  548. .clipLeft
  549.         cp d
  550.         jr c,$+3
  551.         ld a,e
  552.         cp e
  553.         jr nc,.clipHDone
  554.         ld a,e
  555.         jp .clipHDone
  556. .clipRight
  557.         cp d
  558.         jr c,.clipHDone
  559.         ld a,d
  560. .clipHDone
  561.         ld (_mouse_x),a
  562.  
  563.         ld a,(_mouse_cy1)
  564.         ld e,a
  565.         ld a,(_mouse_cy2)
  566.         ld d,a
  567.  
  568.         ld a,(_mouse_dy)
  569.         ld c,a
  570.         ld a,(_mouse_y)
  571.         add a,c
  572.         rl c
  573.         jp nc,.clipDown
  574. .clipUp
  575.         cp d
  576.         jr c,$+3
  577.         ld a,e
  578.         cp e
  579.         jr nc,.clipVDone
  580.         ld a,e
  581.         jp .clipVDone
  582. .clipDown
  583.         cp d
  584.         jr c,.clipVDone
  585.         ld a,d
  586. .clipVDone
  587.         ld (_mouse_y),a
  588.         ret
  589.  
  590.  
  591. ; save load ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  592.  
  593. _load_from_file
  594.        
  595.         ;file name > de
  596.         ld iy,#2
  597.         add iy,sp
  598.         ld e,(iy)
  599.         inc iy
  600.         ld d,(iy)
  601.        
  602.         OS_OPENHANDLE
  603.         or a
  604.         jp nz,err_exit
  605.         push bc
  606.         ld de,_save_load_buf ;addr
  607.         ld hl,80 ;size
  608.         OS_READHANDLE
  609.         pop bc
  610.         OS_CLOSEHANDLE
  611.         ret
  612. err_exit
  613.         ;file name > de
  614.         ld iy,#2
  615.         add iy,sp
  616.         ld e,(iy)
  617.         inc iy
  618.         ld d,(iy)
  619.        
  620.         OS_CREATEHANDLE
  621.         push bc
  622.         push ix
  623.         ld de,_save_load_buf ;addr
  624.         ld hl,80 ;size
  625.         OS_WRITEHANDLE
  626.         pop ix
  627.         pop bc
  628.         OS_CLOSEHANDLE
  629.         ret
  630.  
  631.  
  632.  
  633. _save_to_file
  634.         ;file name > de
  635.         ld iy,#2
  636.         add iy,sp
  637.         ld e,(iy)
  638.         inc iy
  639.         ld d,(iy)
  640.        
  641.         OS_OPENHANDLE
  642.         push bc
  643.         push ix
  644.         ld de,_save_load_buf ;addr
  645.         ld hl,80 ;size
  646.         OS_WRITEHANDLE
  647.         pop ix
  648.         pop bc
  649.         OS_CLOSEHANDLE
  650.         ret
  651.        
  652.        
  653. ; QUIT to nedoos
  654. _exit_to_os
  655.         ld hl,0
  656.         QUIT
  657.  
  658. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;end add function;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  659.  
  660.  
  661. ;более быстрая версия ldir, эффективна при bc>12
  662. ;из статьи на MSX Assembly Page
  663. ;в отличие от нормального ldir портит A и флаги
  664. _fast_ldir
  665.         xor a
  666.         sub c
  667.         and 63
  668.         add a,a
  669.         ld (.jump),a
  670. .jump=$+1
  671.         jr nz,.loop
  672. .loop
  673.         dup 64
  674.         ldi
  675.         edup
  676.         jp pe,.loop
  677.         ret
  678.  
  679.         align 256       ;#nn00
  680. tileUpdateXTable
  681.         dup 8
  682.         db #01,#02,#04,#08,#10,#20,#40,#80
  683.         edup
  684. .x=0
  685.         dup 64
  686.         db .x>>3
  687. .x=.x+1
  688.         edup
  689.  
  690.  
  691.         align 256       ;#nn00
  692. colorMaskTable
  693.         db #00,#09,#12,#1b,#24,#2d,#36,#3f      ;для двух пикселей
  694.         db #c0,#c9,#d2,#db,#e4,#ed,#f6,#ff
  695.         db #00,#01,#02,#03,#04,#05,#06,#07      ;для ink
  696.         db #40,#41,#42,#43,#44,#45,#46,#47
  697.         ds 16,0
  698.         db #00,#08,#10,#18,#20,#28,#30,#38      ;для paper
  699.         db #80,#88,#90,#98,#a0,#a8,#b0,#b8
  700.  
  701.  
  702.         align 256
  703. _sprqueue
  704. _sprqueue0      ;формат 4 байта на спрайт, idh,idl,y,x (idh=255 конец списка)
  705.         ds 256,255
  706. _sprqueue1
  707.         ds 256,255
  708.  
  709.         align 256
  710. palBrightTable
  711.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff      ;bright 0
  712.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  713.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  714.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  715.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f      ;bright 1
  716.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  717.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  718.         db #df,#df,#df,#9f,#df,#df,#df,#9f,#df,#df,#df,#9f,#5f,#5f,#5f,#1f
  719.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed      ;bright 2
  720.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed
  721.         db #df,#df,#9f,#dd,#df,#df,#9f,#dd,#5f,#5f,#1f,#5d,#cf,#cf,#8f,#cd
  722.         db #fe,#fe,#be,#fc,#fe,#fe,#be,#fc,#7e,#7e,#3e,#7c,#ee,#ee,#ae,#ec
  723.         db #ff,#bf,#fd,#bd,#7f,#3f,#7d,#3d,#ef,#af,#ed,#ad,#6f,#2f,#6d,#2d      ;bright 3
  724.         db #df,#9f,#dd,#9d,#5f,#1f,#5d,#1d,#cf,#8f,#cd,#8d,#4f,#0f,#4d,#0d
  725.         db #fe,#be,#fc,#bc,#7e,#3e,#7c,#3c,#ee,#ae,#ec,#ac,#6e,#2e,#6c,#2c
  726.         db #de,#9e,#dc,#9c,#5e,#1e,#5c,#1c,#ce,#8e,#cc,#8c,#4e,#0e,#4c,#0c
  727.         db #1f,#5d,#1d,#1d,#8f,#cd,#8d,#8d,#0f,#4d,#0d,#0d,#0f,#4d,#0d,#0d      ;bright 4
  728.         db #3e,#7c,#3c,#3c,#ae,#ec,#ac,#ac,#2e,#6c,#2c,#2c,#2e,#6c,#2c,#2c
  729.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  730.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  731.         db #ec,#ac,#ac,#ac,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c      ;bright 5
  732.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  733.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  734.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  735.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c      ;bright 6
  736.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  737.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  738.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  739.  
  740.         align 256       ;#nn00
  741. scrTable
  742. adr=#4000
  743.         dup 25
  744.         db low adr
  745. adr=adr+(40*8)
  746.         edup
  747.         align 32        ;#nn20
  748. adr=#4000
  749.         dup 25
  750.         db high adr
  751. adr=adr+(40*8)
  752.         edup
  753.  
  754.         align 256       ;#nn00
  755. tileUpdateMap   ;битовая карта обновившихся знакомест, 64x25 бит
  756.         ds 8*25,0
  757.  
  758.         export _pal_select
  759.         export _pal_copy
  760.         export _pal_bright
  761.         export _swap_screen
  762.         export _clear_screen
  763.         export _fast_ldir
  764.        
  765.         ;add func;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  766.        
  767.         export _mouse_pos
  768.         export _load_from_file
  769.         export _save_to_file
  770.         export _exit_to_os
  771.        
  772.         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  773.    
  774.                 include "../_sdk/lib_int.asm"
  775.         include "../_sdk/lib_tiles.asm"
  776.         export _draw_tile
  777.         export _draw_image
  778.         export _select_image
  779.         export _draw_tile_key
  780.         export _color_key
  781.  
  782.         include "../_sdk/lib_sprites.asm"
  783.         export _sprites_start
  784.         export _sprites_stop
  785.  
  786.         include "../_sdk/lib_input.asm"
  787.         export _joystick
  788.         export _keyboard
  789.  
  790.  
  791.                 include "../_sdk/lib_sound.asm"
  792.         export _music_play
  793.         export _music_stop
  794.         export _sample_play
  795.         export _sfx_play
  796.         export _sfx_stop
  797.  
  798. ;переменные
  799.  
  800. musicPage       db 0
  801. tileOffset      dw 0
  802. spritesActive   db 0    ;1 если вывод спрайтов разрешён
  803. tileUpdate      db 0    ;1 если выводились тайлы, для системы обновления фона под спрайтами
  804. palTemp         ds 16,0
  805. keysPrevState   ds 40,0
  806.         ifdef TFM
  807. ;turboFM        db 0    ;!=0 если есть TFM
  808.         else
  809. turboSound      db 0    ;!=0 если есть TS
  810.         endif
  811.  
  812. ;экспортируемые переменные
  813.  
  814.         macro rgb222 b2,g2,r2
  815.         db (((r2&3)<<4)|((g2&3)<<2)|(b2&3))
  816.         endm
  817.  
  818.         align 16
  819. _palette
  820.         rgb222(0,0,0)
  821.         rgb222(0,0,2)
  822.         rgb222(2,0,0)
  823.         rgb222(2,0,2)
  824.         rgb222(0,2,0)
  825.         rgb222(0,2,2)
  826.         rgb222(2,2,0)
  827.         rgb222(2,2,2)
  828.         rgb222(0,0,0)
  829.         rgb222(0,0,3)
  830.         rgb222(3,0,0)
  831.         rgb222(3,0,3)
  832.         rgb222(0,3,0)
  833.         rgb222(0,3,3)
  834.         rgb222(3,3,0)
  835.         rgb222(3,3,3)
  836.  
  837. _borderCol      db 0
  838. _palBright      dw 3<<6
  839. _palChange      db 1
  840. _screenActive   db 0    ;~1 или ~3
  841. _mouse_dx       db 0
  842. _mouse_dy       db 0
  843. _mouse_x        db 80
  844. _mouse_y        db 100
  845. _mouse_cx1      db 0
  846. _mouse_cx2      db 160
  847. _mouse_cy1      db 0
  848. _mouse_cy2      db 200
  849. _mouse_btn      db 0
  850. _mouse_prev_dx  db 0
  851. _mouse_prev_dy  db 0
  852. _time           dd 0
  853.  
  854. _save_load_buf  ds 80,0
  855.  
  856.         export _save_load_buf
  857.        
  858.         export _borderCol
  859.         export _palBright
  860.         export _palChange
  861.         export _sprqueue
  862.         export _screenActive
  863.         export _mouse_dx
  864.         export _mouse_dy
  865.         export _mouse_x
  866.         export _mouse_y
  867.         export _mouse_cx1
  868.         export _mouse_cx2
  869.         export _mouse_cy1
  870.         export _mouse_cy2
  871.         export _mouse_btn
  872.         export _time
  873.     export _palette
  874.  
  875.        
  876. res_path
  877. ;в этом относительном пути будут лежать все загружаемые данные игры
  878.         ;db "nedoload"
  879.         include "_temp_/sets.asm"
  880.         db 0
  881. fnbin
  882.         db "page_101.bin",0
  883. fnbin2
  884.         db "page_102.bin",0
  885. fnbin3
  886.         db "page_103.bin",0
  887. fnaddr
  888.         db "addr.bin",0
  889.                
  890.  
  891.                
  892. end
  893.         savebin "nedoload.com",begin,end-begin
  894.         LABELSLIST "..\..\..\us\user.l"
  895.