?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.         device pentagon1024
  2.  
  3.         include "target.asm"
  4.  
  5.         ifdef EVO
  6.  
  7.         display "EVO version"
  8.  
  9. MEM_SLOT0=#37f7
  10. MEM_SLOT1=#77f7
  11. MEM_SLOT2=#b7f7
  12. MEM_SLOT3=#f7f7
  13.  
  14. INVMASK=#ff
  15.  
  16.         else
  17.  
  18.         display "ATM version"
  19.  
  20. MEM_SLOT0=#3ff7
  21. MEM_SLOT1=#7ff7
  22. MEM_SLOT2=#bff7
  23. MEM_SLOT3=#fff7
  24.  
  25. INVMASK=#7f
  26.  
  27.         endif
  28.  
  29.         ifdef DOS
  30.         display "DOS support"
  31.         endif
  32.  
  33.  
  34. SCR_PAGE1=(1^INVMASK)
  35. SCR_PAGE3=(3^INVMASK)
  36. SCR_PAGE5=(5^INVMASK)
  37. SCR_PAGE7=(7^INVMASK)
  38.  
  39. SPBUF_PAGE0=(8^INVMASK)
  40. SPBUF_PAGE1=(9^INVMASK)
  41. SPBUF_PAGE2=(10^INVMASK)
  42. SPBUF_PAGE3=(11^INVMASK)
  43.  
  44. SPTBL_PAGE=(6^INVMASK)
  45.  
  46. CC_PAGE0=(12^INVMASK)
  47. CC_PAGE1=(13^INVMASK)
  48. CC_PAGE2=(14^INVMASK)
  49.  
  50. SND_PAGE=(0^INVMASK)
  51. PAL_PAGE=(4^INVMASK)
  52. GFX_PAGE=(16^INVMASK)
  53.  
  54.  
  55. IMG_LIST =#1000
  56.  
  57. ;ёьх∙хэш  т SND_PAGE
  58.  
  59. AFX_INIT =#4000
  60. AFX_PLAY =#4003
  61. AFX_FRAME=#4006
  62. PT3_INIT =#4009
  63. PT3_FRAME=#400c
  64. PT3_MUTE =#400f ;NEW for TFM
  65. TURBOFMON=#4012 ;NEW for TFM
  66.  
  67. MUS_COUNT=#49fe
  68. SMP_COUNT=#49ff
  69. SFX_COUNT=#5000
  70.  
  71. MUS_LIST =#4a00
  72. SMP_LIST =#4d00
  73. SFX_DATA =#5100
  74.  
  75.  
  76.  
  77.         macro MDebug color
  78.  
  79.         push af
  80.         ld a,color
  81.         out (#fe),a
  82.         pop af
  83.  
  84.         endm
  85.  
  86.         macro MSetShadowScreen
  87.  
  88.         ld a,(_screenActive)
  89.  
  90.         ld bc,MEM_SLOT1
  91.         ld (_memSlot1),a
  92.         out (c),a
  93.  
  94.         ld b,high MEM_SLOT2
  95.         sub 4
  96.         ld (_memSlot2),a
  97.         out (c),a
  98.  
  99.         endm
  100.  
  101.         macro MRestoreMemMap012
  102.  
  103.         ld bc,MEM_SLOT0
  104.         ld a,CC_PAGE0
  105.         out (c),a
  106.  
  107.         ld b,high MEM_SLOT1
  108.         ld a,CC_PAGE1
  109.         ld (_memSlot1),a
  110.         out (c),a
  111.  
  112.         ld b,high MEM_SLOT2
  113.         ld a,CC_PAGE2
  114.         ld (_memSlot2),a
  115.         out (c),a
  116.  
  117.         endm
  118.  
  119.         macro MRestoreMemMap12
  120.  
  121.         ld bc,MEM_SLOT1
  122.         ld a,CC_PAGE1
  123.         ld (_memSlot1),a
  124.         out (c),a
  125.  
  126.         ld b,high MEM_SLOT2
  127.         ld a,CC_PAGE2
  128.         ld (_memSlot2),a
  129.         out (c),a
  130.  
  131.         endm
  132.  
  133.  
  134.  
  135.         org #e000
  136.  
  137. begin
  138.         di
  139.         ld sp,begin-1
  140.  
  141.         ifdef DOS
  142.         call DOS_swapsys
  143.         endif ;DOS
  144.  
  145.  
  146.         ifdef TFM
  147.         ;юўшёЄър ¤ъЁрэр
  148.  
  149.         ld a,SCR_PAGE1
  150.         call clearPage
  151.         ld a,SCR_PAGE3
  152.         call clearPage
  153.         ld a,SCR_PAGE5
  154.         call clearPage
  155.         ld a,SCR_PAGE7
  156.         call clearPage
  157.  
  158.         ld a,SND_PAGE
  159.         ld bc,MEM_SLOT1
  160.         out (c),a
  161.         ;юяЁхфхыхэшх TFM
  162.         LD BC,#FFFD
  163.         LD A,%11111000
  164.         OUT (C),A
  165.         ld d,b
  166.                 dec d
  167.                 jr nz,$-1
  168.         XOR A
  169.         OUT (C),A
  170.                 dec d
  171.                 jr nz,$-1
  172.         LD B,#BF
  173.         OUT (C),B
  174.                 dec d
  175.                 jr nz,$-1
  176.         inc a
  177.         LD B,#FF
  178.         INF
  179.         JP P,tfmpresent ;a!=0
  180.         ld a,#c9 ;ret
  181.         ld (libstartup_waitstatus),a
  182.         xor a
  183. tfmpresent
  184.         ld (TURBOFMON),a
  185.         else ;~tfm
  186.         ;юяЁхфхыхэшх TS
  187.         ld bc,#fffd     ;ўшя 0
  188.         out (c),b
  189.         xor a           ;ЁхушёЄЁ 0
  190.         out (c),a
  191.         ld b,#bf        ;чэрўхэшх #bf
  192.         out (c),b
  193.         ld b,#ff        ;ўшя 1
  194.         ld a,#fe
  195.         out (c),a
  196.         xor a           ;ЁхушёЄЁ 0
  197.         out (c),a
  198.         ld b,#bf        ;чэрўхэшх 0
  199.         out (c),a
  200.         ld b,#ff        ;ўшя 0
  201.         out (c),b
  202.         xor a           ;ЁхушёЄЁ 0
  203.         out (c),a
  204.         in a,(c)
  205.         ld (turboSound),a
  206.         endif
  207.  
  208.         ;шэшЎшрышчрЎш  чтєъют√ї ¤ЇЇхъЄют, хёыш юэш хёЄ№
  209.  
  210.         ld a,SND_PAGE
  211.         call setSlot1
  212.         ;яюўхьє-Єю эх т√ёЄрты хЄё  ъюышўхёЄтю ¤ЇЇхъЄют
  213.         ;ld a,(SFX_COUNT)
  214.         ;or a
  215.         ;jr z,.noSfx
  216.         ld hl,SFX_DATA
  217.         call AFX_INIT
  218. .noSfx
  219.         ;ifndef TFM
  220.         xor a
  221.         call reset_ay_ay
  222.         inc a
  223.         call reset_ay_ay
  224.         ;endif
  225.  
  226.         ;єёЄрэютър яхЁхьхээ√ї
  227.  
  228.         ld a,SCR_PAGE1
  229.         ld (_screenActive),a
  230.  
  231.         call poll_mouse_delta
  232.  
  233.         ;єёЄрэютър юсЁрсюЄўшър яЁхЁ√трэшщ
  234.  
  235.         ld a,im2vector/256
  236.         ld i,a
  237.         im 2
  238.         ei
  239.  
  240.         ifndef TFM
  241.  
  242.         ;ур°хэшх ¤ъЁрэр
  243.  
  244.         halt
  245.         LD A,%10101011  ;ЁрчЁх°хэшх ярышЄЁ√
  246.         ld bc,#bd77
  247.         out (c),a
  248.  
  249.         ld a,2
  250. .fade0
  251.         halt
  252.         halt
  253.         push af
  254.         call _pal_bright
  255.         pop af
  256.         dec a
  257.         cp 255
  258.         jr nz,.fade0
  259.  
  260.         ;юўшёЄър ¤ъЁрэр
  261.  
  262.         ld a,SCR_PAGE1
  263.         call clearPage
  264.         ld a,SCR_PAGE3
  265.         call clearPage
  266.         ld a,SCR_PAGE5
  267.         call clearPage
  268.         ld a,SCR_PAGE7
  269.         call clearPage
  270.  
  271.         endif
  272.  
  273.         ;Ёхцшь EGA ё ярышЄЁющ
  274.  
  275.         halt
  276.         LD A,%10101000
  277.         ld bc,#bd77
  278.         out (c),a
  279.  
  280.         call _swap_screen
  281.  
  282.        
  283.         ;єёЄрэютър эюЁьры№эющ  ЁъюёЄш
  284.  
  285.         ld hl,3<<6
  286.         ld (_palBright),hl
  287.         ld a,1
  288.         ld (_palChange),a
  289.         halt
  290.  
  291.         ;єёЄрэютър ърЁЄ√ ярь Єш фы  т√яюыэхэш  ъюфр
  292.         ;ёЄЁрэшЎр т тхЁїэхь юъэх эх ьхэ хЄё , тёхуфр 11
  293.  
  294.         ld a,CC_PAGE0
  295.         call setSlot0
  296.         ld a,CC_PAGE1
  297.         call setSlot1
  298.         ld a,CC_PAGE2
  299.         call setSlot2
  300.  
  301.         jp 0
  302.  
  303. _dos_3D13
  304.         ifdef DOS
  305. DOS_3D13
  306.        
  307. ;a,bc,de,hl=parameters for #3D13
  308. ;a'=page for slot 2
  309.         ;----------------
  310.         ld a,(_memSlot2)
  311.         push af
  312.         ;----------------
  313.         ;a,bc,de,hl=parameters for #3D13
  314. ;a'=page for slot 2
  315.         push af
  316.         push bc
  317.         push de
  318.         push hl
  319.         ld bc,#bd77
  320.         ld a,%10101011 ;6912
  321.         out (c),a ;shadow ports on
  322.         ld a,#7f-#05
  323.         call setSlot1
  324.         call DOS_swapsys
  325.         di
  326.         im 1
  327.         ld a,#83 ;48K switchable to DOS
  328.         call setSlot0
  329.         ex af,af'
  330.         call setSlot2
  331.         ex af,af'
  332.         ld bc,#ff77
  333.         ld a,%10101011 ;6912
  334.         out (c),a ;shadow ports off
  335.         ei ;im 1
  336.         pop hl
  337.         pop de
  338.         pop bc
  339.         pop af
  340.         ld (dos_sp),sp
  341.         ld sp,#6000
  342.         ld iy,23610
  343.         call #3d13
  344. dos_sp  equ $+1
  345.         ld sp,0
  346.         push af
  347.         push bc
  348.         push de
  349.         push hl
  350.         ld bc,#bd77
  351.         ld a,%10101011 ;6912
  352.         call DOS_outshad ;shadow ports on
  353.         di
  354.         ld a,CC_PAGE0
  355.         call setSlot0
  356.         call DOS_swapsys
  357.         ld a,CC_PAGE2
  358.         call setSlot2
  359.         ld a,CC_PAGE1
  360.         call setSlot1
  361.         ld bc,#bd77
  362.         ld a,%10101000 ;EGA
  363.         out (c),a ;shadow ports on
  364.         im 2
  365.         ei
  366.         pop hl
  367.         pop de
  368.         pop bc
  369.         pop af
  370.         ;----------------
  371.         pop af
  372.     ld (_memSlot2),a
  373.         ld bc,MEM_SLOT2
  374.     out (c),a
  375.         ;----------------
  376.         ret
  377.  
  378. DOS_outshad
  379.         ld hl,#2a53
  380.         push hl
  381.         jp #3d2f
  382.        
  383. DOS_swapsys
  384.         ld bc,MEM_SLOT2
  385.         ld a,PAL_PAGE
  386.         out (c),a
  387.         ld hl,#5c00
  388.         ld de,#bc00
  389.         ld b,4
  390. DOS_swap0
  391.         ld c,(hl)
  392.         ld a,(de)
  393.         ld (hl),a
  394.         ld a,c
  395.         ld (de),a
  396.         inc de
  397.         inc l
  398.         jr nz,DOS_swap0
  399.         inc h
  400.         djnz DOS_swap0
  401.         ret
  402.         endif ;DOS
  403.  
  404.  
  405. setActiveScreen
  406.         ld a,(_screenActive)
  407.         xor 2
  408.  
  409.         ld bc,MEM_SLOT1
  410.         ld (_memSlot1),a
  411.         out (c),a
  412.  
  413.         ld b,high MEM_SLOT2
  414.         sub 4
  415.         ld (_memSlot2),a
  416.         out (c),a
  417.  
  418.         ret
  419.  
  420.  
  421.  
  422. setShadowScreen
  423.         MSetShadowScreen
  424.        
  425.        
  426.        
  427.         ret
  428.  
  429.  
  430.  
  431. ;сюыхх с√ёЄЁр  тхЁёш  ldir, ¤ЇЇхъЄштэр яЁш bc>12
  432. ;шч ёЄрЄ№ш эр MSX Assembly Page
  433. ;т юЄышўшх юЄ эюЁьры№эюую ldir яюЁЄшЄ A ш Їыруш
  434.  
  435. _fast_ldir
  436.         ifdef DOS
  437.  
  438.         ldir
  439.         ret
  440.  
  441.         else
  442.  
  443.         xor a
  444.         sub c
  445.         and 63
  446.         add a,a
  447.         ld (.jump),a
  448. .jump=$+1
  449.         jr nz,.loop
  450. .loop
  451.         dup 64
  452.         ldi
  453.         edup
  454.         jp pe,.loop
  455.         ret
  456.  
  457.         endif ;~TFM
  458.  
  459.  
  460. _clear_screen
  461.         ;-------------------------
  462.         ld e,a
  463.         ld a,(_memSlot2)
  464.     push af
  465.         ld a,e
  466.         ;-------------------------
  467.         and 15
  468.         ld l,a
  469.         ld h,high colorMaskTable
  470.         ld e,(hl)
  471.         call setShadowScreen
  472.         ld hl,#4000
  473.         ld (hl),e
  474.         ld de,#4001
  475.         ld bc,#7fff
  476.         call _fast_ldir
  477.         MRestoreMemMap12
  478.         ;----------------
  479.         pop af
  480.     ld (_memSlot2),a
  481.         ld bc,MEM_SLOT2
  482.     out (c),a
  483.         ;----------------
  484.         ret
  485.  
  486.  
  487.        
  488. _swap_screen   
  489.         push ix
  490.         push iy
  491.  
  492.         ld a,(_memSlot2)
  493.         push af
  494.        
  495.         ld a,(spritesActive)
  496.         or a
  497.         push af
  498.         jr z,.noSpr0
  499.         call setShadowScreen
  500.         call updateTilesToBuffer
  501.         call prspr
  502. .noSpr0
  503.  
  504.         halt
  505.  
  506.         ld a,(_screenActive)
  507.         xor 2
  508.         ld (_screenActive),a
  509.         ld e,a
  510.  
  511.         ld a,#10
  512.         bit 1,e
  513.         jr z,$+4
  514.         or #08
  515.         ld bc,#7ffd
  516.         out (c),a
  517.  
  518.         pop af
  519.         jr z,.noSpr1
  520.  
  521.         call setShadowScreen
  522.         call respr
  523.         call updateTilesFromBuffer
  524.         MRestoreMemMap012
  525. .noSpr1
  526.  
  527.         pop af
  528.     ld (_memSlot2),a
  529.         ld bc,MEM_SLOT2
  530.     out (c),a
  531.  
  532.         pop iy
  533.         pop ix 
  534.         ret
  535.  
  536.  
  537.  
  538. pal_get_address
  539.         ld h,0
  540.         ld l,a
  541.         add hl,hl
  542.         add hl,hl
  543.         add hl,hl
  544.         add hl,hl
  545.  
  546.         ld bc,MEM_SLOT0
  547.         ld a,PAL_PAGE
  548.         out (c),a
  549.         ret
  550.  
  551.  
  552.  
  553.  
  554.  
  555. _pal_select
  556.         ;-------------------------
  557.         ld e,a
  558.         ld a,(_memSlot2)
  559.     push af
  560.         ld a,e
  561.         ;-------------------------
  562.         call pal_get_address
  563.  
  564.         ld de,_palette
  565.         ld bc,16
  566.         ldir
  567.  
  568.         ld a,d
  569.         ld (_palChange),a
  570.  
  571.         ld bc,MEM_SLOT0
  572.         ld a,CC_PAGE0
  573.         out (c),a
  574.        
  575.         ;----------------
  576.         pop af
  577.     ld (_memSlot2),a
  578.         ld bc,MEM_SLOT2
  579.     out (c),a
  580.         ;----------------
  581.         ret
  582.  
  583.  
  584.  
  585. _pal_bright
  586.         cp 7
  587.         jr c,.l1
  588.         ld a,6
  589. .l1
  590.         ld h,a
  591.         ld l,0
  592.         srl h
  593.         rr l
  594.         srl h
  595.         rr l
  596.         ld (_palBright),hl
  597.         ld a,1
  598.         ld (_palChange),a
  599.         ret
  600.  
  601.  
  602.  
  603. _pal_copy
  604.         push de
  605.         call pal_get_address
  606.  
  607.         ld de,palTemp
  608.         ld bc,16
  609.         ldir
  610.  
  611.         ld bc,MEM_SLOT0
  612.         ld a,CC_PAGE0
  613.         out (c),a
  614.  
  615.         pop de
  616.         ld hl,palTemp
  617.         ld bc,16
  618.         ldir
  619.  
  620.         ret
  621.  
  622.  
  623.  
  624.         include "lib_input.asm"
  625.         include "lib_sound.asm"
  626.         include "lib_tiles.asm"
  627.         include "lib_sprites.asm"
  628.  
  629.  
  630.  
  631. im2handler
  632.         push af
  633.         push bc
  634.         push de
  635.         push hl
  636.         push ix
  637.         push iy
  638.         exa
  639.         exx
  640.         push af
  641.         push bc
  642.         push de
  643.         push hl
  644.  
  645.  
  646.         ld a,(_palChange)
  647.         or a
  648.         jp z,.noPalette
  649.  
  650.         ;шчьхэхэшх ярышЄЁ√
  651.  
  652.         ld de,(_palBright)
  653.         ld a,d
  654.         add a,high palBrightTable
  655.         ld b,a
  656.  
  657.         ld hl,_palette
  658.  
  659. .colId=0
  660.         dup 8
  661.         ld a,.colId
  662.         out (#fe),a
  663.         ld a,(hl)
  664.         add a,e
  665.         ld c,a
  666.         ld a,(bc)
  667.         out (#ff),a
  668.         inc l
  669. .colId=.colId+1
  670.         edup
  671. .colId=0
  672.         dup 8
  673.         ld a,.colId
  674.         out (#f6),a
  675.         ld a,(hl)
  676.         add a,e
  677.         ld c,a
  678.         ld a,(bc)
  679.         out (#ff),a
  680.         inc l
  681. .colId=.colId+1
  682.         edup
  683.  
  684.         ;тюёёЄрэютыхэшх ЎтхЄр сюЁф■Ёр
  685.  
  686.         ld a,(_borderCol)
  687.         ld c,a
  688.         and 7
  689.         bit 3,c
  690.         jr nz,.bright
  691.         out (#fe),a
  692.         jr .palSet
  693. .bright
  694.         out (#f6),a
  695. .palSet
  696.         xor a
  697.         ld (_palChange),a
  698.  
  699. .noPalette
  700.  
  701.         ld a,SND_PAGE
  702.         ld bc,MEM_SLOT1
  703.         out (c),a
  704.  
  705.         ifdef TFM
  706.         call turbo_off
  707.         endif
  708.  
  709.         ld a,(musicPage)
  710.         or a
  711.         jr z,.noMusic
  712.         ld bc,MEM_SLOT2
  713.         out (c),a
  714.         ld bc,#fffd
  715.  
  716.         ifdef TFM
  717.         ld a,%11111000          ;тЄюЁющ ўшя Turbo FM
  718.         else
  719.         ld a,#fe                ;тЄюЁющ ўшя Turbo Sound
  720.         endif
  721.                 ;хёыш Turbo Sound эхЄ, чтєъш ш ьєч√ър
  722.         out (c),a               ;шуЁр■Є эр юфэюь ўшях, шэрўх эр Ёрчэ√ї
  723.  
  724.         ifdef TFM
  725.         ld a,(TURBOFMON)
  726.         or a
  727.         call nz,PT3_FRAME
  728.         else
  729.         call PT3_FRAME
  730.         endif
  731.  
  732.         ifdef TFM
  733.         ;jr .sfx ;wrong TS detection on TFM?
  734.         else
  735.         ld a,(turboSound)
  736.         or a
  737.         jr z,.sfx
  738.         endif
  739.  
  740. .noMusic
  741.         ifdef TFM
  742.         ;ld a,(TURBOFMON)
  743.         ;or a
  744.         ;call nz,PT3_MUTE ;reset_ay
  745.         ld a,1
  746.         call reset_ay_ay
  747.         else
  748.         ld a,1
  749.         call reset_ay
  750.         endif
  751. .sfx
  752.  
  753.         ifdef TFM
  754.         ld bc,#fffd
  755.         ld a,%11111001          ;1-щ ўшя Turbo FM
  756.         ;ld a,%11111011         ;1-щ ўшя Turbo FM, no wait sync
  757.         out (c),a
  758.         else
  759.         ld bc,#fffd             ;яхЁт√щ ўшя
  760.         out (c),b
  761.         endif
  762.  
  763.         call AFX_FRAME
  764.  
  765.         ifdef TFM
  766.         call turbo_on
  767.         endif
  768.  
  769.         poll_mouse
  770.         ;call poll_joystick ;эхы№ч  т яЁхЁ√трэшш, Є.ъ. эєцэю чэрЄ№ ёюфхЁцшьюх MEM_SLOT0
  771.  
  772.         ld a,(_memSlot1)
  773.         ld bc,MEM_SLOT1
  774.         out (c),a
  775.         ld a,(_memSlot2)
  776.         ld bc,MEM_SLOT2
  777.         out (c),a
  778.  
  779.         ;ёў╕Єўшъ ърфЁют
  780.  
  781.         ld hl,_time
  782.         ld b,4
  783. .time1
  784.         inc (hl)
  785.         jr nz,.time2
  786.         inc hl
  787.         djnz .time1
  788. .time2
  789.  
  790.         pop hl
  791.         pop de
  792.         pop bc
  793.         pop     af
  794.         exx
  795.         exa
  796.         pop iy
  797.         pop ix
  798.         pop hl
  799.         pop de
  800.         pop bc
  801.         pop af
  802.         ei
  803.         ret
  804.  
  805.         ifdef TFM
  806. libstartup_waitstatus
  807. ;bc=#fffd
  808.         IN F,(C)
  809.         JP M,$-2
  810.                 ret
  811.         endif
  812.  
  813.  
  814. ;ЄрсышЎ√
  815.  
  816.         align 256
  817. palBrightTable
  818.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff      ;bright 0
  819.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  820.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  821.         db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff
  822.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f      ;bright 1
  823.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  824.         db #ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#ff,#ff,#ff,#bf,#7f,#7f,#7f,#3f
  825.         db #df,#df,#df,#9f,#df,#df,#df,#9f,#df,#df,#df,#9f,#5f,#5f,#5f,#1f
  826.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed      ;bright 2
  827.         db #ff,#ff,#bf,#fd,#ff,#ff,#bf,#fd,#7f,#7f,#3f,#7d,#ef,#ef,#af,#ed
  828.         db #df,#df,#9f,#dd,#df,#df,#9f,#dd,#5f,#5f,#1f,#5d,#cf,#cf,#8f,#cd
  829.         db #fe,#fe,#be,#fc,#fe,#fe,#be,#fc,#7e,#7e,#3e,#7c,#ee,#ee,#ae,#ec
  830.         db #ff,#bf,#fd,#bd,#7f,#3f,#7d,#3d,#ef,#af,#ed,#ad,#6f,#2f,#6d,#2d      ;bright 3
  831.         db #df,#9f,#dd,#9d,#5f,#1f,#5d,#1d,#cf,#8f,#cd,#8d,#4f,#0f,#4d,#0d
  832.         db #fe,#be,#fc,#bc,#7e,#3e,#7c,#3c,#ee,#ae,#ec,#ac,#6e,#2e,#6c,#2c
  833.         db #de,#9e,#dc,#9c,#5e,#1e,#5c,#1c,#ce,#8e,#cc,#8c,#4e,#0e,#4c,#0c
  834.         db #1f,#5d,#1d,#1d,#8f,#cd,#8d,#8d,#0f,#4d,#0d,#0d,#0f,#4d,#0d,#0d      ;bright 4
  835.         db #3e,#7c,#3c,#3c,#ae,#ec,#ac,#ac,#2e,#6c,#2c,#2c,#2e,#6c,#2c,#2c
  836.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  837.         db #1e,#5c,#1c,#1c,#8e,#cc,#8c,#8c,#0e,#4c,#0c,#0c,#0e,#4c,#0c,#0c
  838.         db #ec,#ac,#ac,#ac,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c,#6c,#2c,#2c,#2c      ;bright 5
  839.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  840.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  841.         db #cc,#8c,#8c,#8c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c,#4c,#0c,#0c,#0c
  842.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c      ;bright 6
  843.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  844.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  845.         db #0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c,#0c
  846.  
  847.         align 256       ;#nn00
  848. scrTable
  849. adr=#4000
  850.         dup 25
  851.         db low adr
  852. adr=adr+(40*8)
  853.         edup
  854.         align 32        ;#nn20
  855. adr=#4000
  856.         dup 25
  857.         db high adr
  858. adr=adr+(40*8)
  859.         edup
  860.  
  861.  
  862.  
  863. ;эюьхЁ ёЄЁрэшЎ√ шэтхЁЄшЁютрэ
  864.  
  865. setSlot0
  866.         ld (_memSlot0),a
  867.         ld bc,MEM_SLOT0
  868.         out (c),a
  869.         ret
  870.  
  871. setSlot1
  872.         ld (_memSlot1),a
  873.         ld bc,MEM_SLOT1
  874.         out (c),a
  875.         ret
  876.  
  877. setSlot2
  878.         ld (_memSlot2),a
  879.         ld bc,MEM_SLOT2
  880.         out (c),a
  881.         ret
  882.  
  883.  
  884.  
  885. clearPage
  886.         call setSlot1
  887.         ld hl,#4000
  888.         ld de,#4001
  889.         ld bc,#3fff
  890.         ld (hl),l
  891.         jp _fast_ldir
  892.  
  893.  
  894.  
  895.         align 256       ;#nn00
  896. tileUpdateXTable
  897.         dup 8
  898.         db #01,#02,#04,#08,#10,#20,#40,#80
  899.         edup
  900. .x=0
  901.         dup 64
  902.         db .x>>3
  903. .x=.x+1
  904.         edup
  905.  
  906.  
  907.         align 256       ;#nn00
  908. colorMaskTable
  909.         db #00,#09,#12,#1b,#24,#2d,#36,#3f      ;фы  фтєї яшъёхыхщ
  910.         db #c0,#c9,#d2,#db,#e4,#ed,#f6,#ff
  911.         db #00,#01,#02,#03,#04,#05,#06,#07      ;фы  ink
  912.         db #40,#41,#42,#43,#44,#45,#46,#47
  913.         ds 16,0
  914.         db #00,#08,#10,#18,#20,#28,#30,#38      ;фы  paper
  915.         db #80,#88,#90,#98,#a0,#a8,#b0,#b8
  916.  
  917.  
  918.         align 256
  919. _sprqueue
  920. _sprqueue0      ;ЇюЁьрЄ 4 срщЄр эр ёяЁрщЄ, idh,idl,y,x (idh=255 ъюэхЎ ёяшёър)
  921.         ds 256,255
  922. _sprqueue1
  923.         ds 256,255
  924.  
  925.  
  926.         display "Top ",/h,$," (should be <=0xFD00)"
  927.  
  928.  
  929.         org #fd00
  930. tileUpdateMap   ;сшЄютр  ърЁЄр юсэютшт°шїё  чэръюьхёЄ, 64x25 сшЄ
  931.         ds 8*25,0
  932.  
  933.         org #fdfd
  934.         jp im2handler
  935.  
  936.         org #fe00
  937. im2vector
  938.         ds 257,#fd
  939.  
  940. ;яхЁхьхээ√х
  941.  
  942. musicPage               db 0
  943. tileOffset              dw 0
  944. spritesActive   db 0    ;1 хёыш т√тюф ёяЁрщЄют ЁрчЁх°╕э
  945. tileUpdate              db 0    ;1 хёыш т√тюфшышё№ Єрщы√, фы  ёшёЄхь√ юсэютыхэш  Їюэр яюф ёяЁрщЄрьш
  946. palTemp                 ds 16,0
  947. keysPrevState   ds 40,0
  948.         ifdef TFM
  949. ;turboFM                        db 0    ;!=0 хёыш хёЄ№ TFM
  950.         else
  951. turboSound              db 0    ;!=0 хёыш хёЄ№ TS
  952.         endif
  953.  
  954. ;¤ъёяюЁЄшЁєхь√х яхЁхьхээ√х
  955.  
  956.         macro rgb222 b2,g2,r2
  957.         db (((r2&3)<<4)|((g2&3)<<2)|(b2&3))
  958.         endm
  959.  
  960.         align 16
  961. _palette
  962.         rgb222(0,0,0)
  963.         rgb222(0,0,2)
  964.         rgb222(2,0,0)
  965.         rgb222(2,0,2)
  966.         rgb222(0,2,0)
  967.         rgb222(0,2,2)
  968.         rgb222(2,2,0)
  969.         rgb222(2,2,2)
  970.         rgb222(0,0,0)
  971.         rgb222(0,0,3)
  972.         rgb222(3,0,0)
  973.         rgb222(3,0,3)
  974.         rgb222(0,3,0)
  975.         rgb222(0,3,3)
  976.         rgb222(3,3,0)
  977.         rgb222(3,3,3)
  978.  
  979. _memSlot0       db 0
  980. _memSlot1       db 0
  981. _memSlot2       db 0
  982. _borderCol      db 0
  983. _palBright      dw 3<<6
  984. _palChange      db 1
  985. _screenActive   db 0    ;~1 шыш ~3
  986. _mouse_dx       db 0
  987. _mouse_dy       db 0
  988. _mouse_x        db 80
  989. _mouse_y        db 100
  990. _mouse_cx1      db 0
  991. _mouse_cx2      db 160
  992. _mouse_cy1      db 0
  993. _mouse_cy2      db 200
  994. _mouse_btn      db 0
  995. _mouse_prev_dx  db 0
  996. _mouse_prev_dy  db 0
  997. _time           dd 0
  998.  
  999.         export _palette
  1000.         export _memSlot0
  1001.         export _memSlot1
  1002.         export _memSlot2
  1003.         export _dos_3D13
  1004.         export _borderCol
  1005.         export _palBright
  1006.         export _palChange
  1007.         export _sprqueue
  1008.         export _screenActive
  1009.         export _mouse_dx
  1010.         export _mouse_dy
  1011.         export _mouse_x
  1012.         export _mouse_y
  1013.         export _mouse_cx1
  1014.         export _mouse_cx2
  1015.         export _mouse_cy1
  1016.         export _mouse_cy2
  1017.         export _mouse_btn
  1018.         export _time
  1019.  
  1020. ;¤ъёяюЁЄшЁєхь√х ЇєэъЎшш
  1021.  
  1022.         export _pal_select
  1023.         export _pal_copy
  1024.         export _pal_bright
  1025.         export _swap_screen
  1026.         export _clear_screen
  1027.         export _fast_ldir
  1028.         export  setTileUpdateMapF
  1029.         export  setTileUpdateMap
  1030.  
  1031. end
  1032.  
  1033.         display "Size ",/d,end-begin," bytes"
  1034.  
  1035.         savebin "startup.bin",begin,end-begin