?login_element?

Subversion Repositories NedoOS

Rev

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

  1. clear_screen:
  2.         ld e,0
  3.         OS_CLS
  4.         ret
  5.  
  6. setpal_proc
  7. ;       call makefadepixel
  8. ;       call makewhitepixel
  9. ;       call makefonttable
  10. ;       ld de,(fadecolor)
  11. ;       OS_SETBORDER
  12.         ld de,pal
  13.         OS_SETPAL
  14.         xor a
  15.         ld (setpalflag),a
  16.         ret        
  17.  
  18.  
  19. anim_wait:
  20.         ret
  21.  
  22.  
  23. print_hl
  24.         ld a,(hl)
  25.         or a
  26.         ret z
  27.         push hl
  28.         PRCHAR
  29.         pop hl
  30.         inc hl
  31.         jp print_hl
  32.         ret
  33. ;---------------------------------------
  34. ;for 320x200
  35. _immed_big:
  36.         ld a,1
  37.         ld (setpalflag),a
  38.         call store8000c000
  39.  
  40.         halt
  41.         ld a,(load_buf1)
  42.         SETPG8000
  43.         ld a,(user_scr0_low)
  44.         SETPGC000
  45.  
  46.  
  47.         ld hl,0x8000
  48.         ld de,0xc000
  49.         ld bc,8000
  50.         ldir
  51.  
  52.  
  53.         halt
  54.         ld a,(load_buf2)
  55.         SETPG8000
  56.         ld a,(user_scr0_high)
  57.         SETPGC000
  58.  
  59.  
  60.         ld hl,0x8000
  61.         ld de,0xc000
  62.         ld bc,8000
  63.         ldir
  64.  
  65.         halt
  66.         ld a,(load_buf1)
  67.         SETPG8000
  68.         ld a,(user_scr0_low)
  69.         SETPGC000
  70.  
  71.  
  72.         ld hl,0xa000
  73.         ld de,0xe000
  74.         ld bc,8000
  75.         ldir
  76.  
  77.  
  78.         halt
  79.         ld a,(load_buf2)
  80.         SETPG8000
  81.         ld a,(user_scr0_high)
  82.         SETPGC000
  83.  
  84.  
  85.         ld hl,0xa000
  86.         ld de,0xe000
  87.         ld bc,8000
  88.         ldir
  89.  
  90.         jp restore8000c000
  91. ;-------------
  92. ;draw load buf over scr0 . color 0x08 is transparent
  93. _immed_overlay_big:
  94.         call store8000c000
  95.  
  96.         ld a,(load_buf1)
  97.         SETPG8000
  98.         ld a,(user_scr0_low)
  99.         SETPGC000        
  100.  
  101.         ld hl,0xc000
  102.         ld de,0x8000
  103.         ld bc,16384
  104.  
  105.         call _iob
  106.  
  107.         ld a,(load_buf2)
  108.         SETPG8000
  109.         ld a,(user_scr0_high)
  110.         SETPGC000  
  111.  
  112.         ld hl,0xc000 ;dest
  113.         ld de,0x8000 ;src
  114.         ld bc,16384
  115.  
  116.         call _iob
  117.  
  118.         jp restore8000c000        
  119. ;------------------------------------------------------------------        
  120. ;copy image to screen by mask (9 color in palette is mask)
  121. _iob_byte:
  122.         ld a,(de)
  123.         cp 0b11000000   ;double transparent bytes
  124.         jr z,_iob_next_b
  125.         push af
  126.         and 0b10111000
  127.         cp  0b10000000
  128.         jr z,_iob_left_transparent
  129.         pop  af
  130.         push af
  131.         and 0b01000111
  132.         cp  0b01000000
  133.         jr z,_iob_right_transparent
  134.         pop af
  135.         ld (hl),a; all solid. copy
  136. _iob_next_b
  137.         ret        
  138.  
  139. _iob
  140. _iob_loop        
  141.         call _iob_byte
  142.         inc de
  143.         inc hl
  144.         dec bc
  145.         ld a,b
  146.         or c
  147.         jr nz,_iob_loop
  148.         ret
  149. _iob_left_transparent
  150.         ld a,0b10111000 ;
  151.         and (hl)
  152.         ld (hl),a
  153.         pop af
  154.         and 0b01000111
  155.         or (hl)
  156.         ld (hl),a
  157.         jr _iob_next_b
  158. _iob_right_transparent
  159.         ld a,0b01000111
  160.         and (hl)
  161.         ld (hl),a
  162.         pop af
  163.         and 0b10111000
  164.         or (hl)
  165.         ld (hl),a
  166.         jr _iob_next_b        
  167. ;------------------------------------------------------------------        
  168. ;_immed  32  (50) ьюьхэЄры№эю
  169. ;_sidas  36 54 юЄ ъЁр╕т ъ ЎхэЄЁє яЁ ьюєуюы№эшъюь
  170. ;_jaluzi 37  55 яю ёяшЁрыш юЄ ъЁр  ъ ЎхэЄЁє т фтр їюфр.
  171. ;_sidas  38  56 шч ЎхэЄЁр тю тёх ёЄюЁюэ√ яЁ ьюєуюы№эшъюь
  172. ;_cntsds 39 -57 юЄ ЎхэЄЁр ¤ъЁрэр тыхтю ш тяЁртю юфэютЁхьхээю.
  173. ;_dn_up  3A -58 юЄ ЎхэЄЁр ¤ъЁрэр ттхЁї ш тэшч юфэютЁхьхээю.
  174. ;_ud_nd  3B -59 яЁю тыхэшх юсЁрЄэ√ь ЁрёЄтюЁхэшхь.
  175. ;_jaluzi 3C -60 цры■чш. ётхЁїє тэшч ш ёэшчє ттхЁї юфэютЁхьхээю ўхЁхч ёЄЁюъє
  176. ;_lftrgt 3D - 61 ёыхтр эряЁртю. (тхЄхЁ)
  177. mask_mode db 0
  178. _memory_output_mask:
  179.         ld a,1
  180.         jr _memory_output_o
  181. _memory_output:
  182.         xor a
  183. _memory_output_o:        
  184.         ld (mask_mode),a
  185.  
  186.         ld a,(mem_buf1)
  187.         ld (src_buf1),a
  188.         ld a,(mem_buf2)
  189.         ld (src_buf2),a
  190.  
  191.         ld hl,mempal
  192.         ld de,pal
  193.         ld bc,32
  194.         ldir            ;copy palette for image in membuf
  195.  
  196.         jr _mb_output
  197. _2ndscreen_output:
  198.         xor a
  199.         ld (mask_mode),a
  200.         ld a,(user_scr1_low)
  201.         ld (src_buf1),a
  202.         ld a,(user_scr1_high)
  203.         ld (src_buf2),a
  204.         jr _mb_output
  205. _buffer_output_mask:
  206.         ld a,1
  207.         jr _buffer_output_o
  208. _buffer_output
  209.         xor a
  210. _buffer_output_o:        
  211.         ld (mask_mode),a        
  212.         ld a,(load_buf1)
  213.         ld (src_buf1),a
  214.         ld a,(load_buf2)
  215.         ld (src_buf2),a
  216. _mb_output:
  217.         ld a,0
  218. outtyp equ $-1
  219.         cp 0x32
  220.         jp z,_immed
  221.         cp 0x36
  222.         jp z,_sidas
  223.         cp 0x37
  224.         jp z,_jaluzi
  225.         cp 0x38
  226.         jp z,_sidas
  227.         cp 0x39
  228.         jp z,_cntsds
  229.         cp 0x3a
  230.         jp z,_dn_up
  231.         cp 0x3b
  232.         jp z,_ud_nd
  233.         cp 0x3c
  234.         jp z,_jaluzi
  235.         cp 0x3d
  236.         jp z,_lftrgt
  237.         jp _jaluzi
  238. ;------------------------------------------------------------------        
  239. ; 256x160
  240. ;mode 0x32
  241. _immed:
  242.         ld a,1
  243.         ld (setpalflag),a
  244.         call store8000c000
  245.  
  246.  
  247.         halt
  248.         ld a,(src_buf1)
  249.         SETPG8000
  250.         ld a,(user_scr0_low)
  251.         SETPGC000
  252.  
  253.         ld hl,0x8004
  254.         ld b,160
  255. _immed_v1:
  256.         push bc
  257.         push hl
  258.         pop de
  259.         set 6,d
  260.  
  261.         call _ldi_32
  262.         ld bc,8
  263.         add hl,bc
  264.         pop bc
  265.         djnz _immed_v1
  266.  
  267.  
  268.  
  269.         halt
  270.         ld a,(src_buf2)
  271.         SETPG8000
  272.         ld a,(user_scr0_high)
  273.         SETPGC000
  274.  
  275.         ld hl,0x8004
  276.         ld b,160
  277. _immed_v2:
  278.         push bc
  279.         push hl
  280.         pop de
  281.         set 6,d
  282.  
  283.         call _ldi_32
  284.         ld bc,8
  285.         add hl,bc
  286.         pop bc
  287.         djnz _immed_v2
  288.  
  289.         halt
  290.         ld a,(src_buf1)
  291.         SETPG8000
  292.         ld a,(user_scr0_low)
  293.         SETPGC000
  294.  
  295.         ld hl,0xa004
  296.         ld b,160
  297. _immed_v3:
  298.         push bc
  299.         push hl
  300.         pop de
  301.         set 6,d
  302.  
  303.         call _ldi_32
  304.         ld bc,8
  305.         add hl,bc
  306.         pop bc
  307.         djnz _immed_v3
  308.  
  309.         halt
  310.         ld a,(src_buf2)
  311.         SETPG8000
  312.         ld a,(user_scr0_high)
  313.         SETPGC000        
  314.  
  315.         ld hl,0xa004
  316.         ld b,160
  317. _immed_v4:
  318.         push bc
  319.         push hl
  320.         pop de
  321.         set 6,d
  322.  
  323.         call _ldi_32
  324.         ld bc,8
  325.         add hl,bc
  326.         pop bc
  327.         djnz _immed_v4
  328.         jp restore8000c000
  329.  
  330. ;------------------------------------------------------------------        
  331. _ldi_32
  332.         ld a,(mask_mode)
  333.         and a
  334.         jr nz,_ldi_32_iob
  335.         dup 32
  336.         ldi
  337.         edup
  338.         ret
  339. _ldi_32_iob
  340.         ex de,hl
  341.         dup 32
  342.         call _iob_byte
  343.         inc hl
  344.         inc de
  345.         edup
  346.         ex de,hl
  347.         ret
  348. ;----
  349. ;hl-src de-dest b,counter
  350. _down_cpy:
  351.         ld a,(mask_mode)
  352.         and a
  353.         jr nz,_down_cpy_iob
  354.  
  355.         push bc
  356.         ld a,(hl)
  357.         ld (de),a
  358.         call DHL
  359.         ex de,hl
  360.         call DHL
  361.         ex de,hl
  362.         pop bc
  363.         djnz _down_cpy
  364.         ret
  365. _down_cpy_iob:
  366.         push bc
  367.  
  368.         ex de,hl
  369.         call _iob_byte
  370.         ex de,hl
  371.  
  372.         call DHL
  373.         ex de,hl
  374.         call DHL
  375.         ex de,hl
  376.         pop bc
  377.         djnz _down_cpy
  378.         ret
  379. ;------------------------------------------------------------------        
  380. ; 256x160
  381. ;left to right
  382. ;mode  ????? ;0x3d
  383. _lftrgt:
  384.         ld a,1
  385.         ld (setpalflag),a
  386.         call store8000c000
  387.  
  388.  
  389.         ld hl,0x8004
  390.  
  391.         ld b,32
  392. _lftrgt_loop        
  393.         push bc
  394.  
  395.         push hl
  396.         pop de
  397.         set 6,D
  398.  
  399.  
  400.         push hl
  401.         push de
  402.  
  403.         halt
  404.         ld a,(src_buf1)
  405.         SETPG8000
  406.         ld a,(user_scr0_low)
  407.         SETPGC000
  408.  
  409.  
  410.         ld b,160
  411.         call _down_cpy
  412.  
  413.         pop de
  414.         pop hl
  415.         push hl
  416.         push de
  417.  
  418.         halt
  419.         ld a,(src_buf2)
  420.         SETPG8000
  421.         ld a,(user_scr0_high)
  422.         SETPGC000
  423.  
  424.         ld b,160
  425.         call _down_cpy
  426.  
  427.  
  428.         pop de
  429.         pop hl
  430.  
  431.         set 5,H
  432.         set 5,D
  433.  
  434.         push hl
  435.         push de
  436.  
  437.         halt
  438.         ld a,(src_buf1)
  439.         SETPG8000
  440.         ld a,(user_scr0_low)
  441.         SETPGC000
  442.  
  443.  
  444.         ld b,160
  445.         call _down_cpy
  446.  
  447.         pop de
  448.         pop hl
  449.         push hl
  450.         push de
  451.  
  452.         halt
  453.         ld a,(src_buf2)
  454.         SETPG8000
  455.         ld a,(user_scr0_high)
  456.         SETPGC000
  457.  
  458.         ld b,160
  459.         call _down_cpy
  460.  
  461.         pop de
  462.         pop hl
  463.         res 5,h
  464.         inc hl
  465.  
  466.  
  467.         pop bc
  468.         dec b
  469.         jp nz,_lftrgt_loop
  470.  
  471.         jp restore8000c000
  472. ;------------------------------------------------------------------        
  473. ; 256x160
  474. ;left to right and right to left same time (interleave)
  475. ;mode  ????
  476. _sidas:
  477.         ld a,1
  478.         ld (setpalflag),a
  479.         call store8000c000
  480.  
  481.  
  482.         ld hl,0x8004
  483.         ld (sidas_l),hl
  484.         ld hl,0x8004+31
  485.         ld (sidas_r),hl
  486.  
  487.         ld b,32
  488. _sidas_loop        
  489.         push bc
  490.  
  491.  
  492.         ld a,(src_buf1)
  493.         SETPG8000
  494.         ld a,(user_scr0_low)
  495.         SETPGC000
  496.  
  497.  
  498.         halt
  499.  
  500.         ld hl,0
  501. sidas_l equ $-2        
  502.         push hl
  503.         pop de
  504.         set 6,D
  505.  
  506.         push hl
  507.         push de
  508.  
  509.         ld b,160
  510.         call _down_cpy
  511.  
  512.         pop de
  513.         pop hl
  514.         push hl
  515.  
  516.         set 5,H
  517.         set 5,D
  518.  
  519.         ld b,160
  520.         call _down_cpy
  521.  
  522.         pop  hl
  523.         inc hl
  524.         ld (sidas_l),hl
  525.  
  526.  
  527.         ld a,(src_buf2)
  528.         SETPG8000
  529.         ld a,(user_scr0_high)
  530.         SETPGC000
  531.  
  532.         ld hl,0
  533. sidas_r equ $-2        
  534.         push hl
  535.         pop de
  536.         set 6,D
  537.  
  538.         set 5,H
  539.         set 5,D
  540.  
  541.         push hl
  542.         push de
  543.  
  544.         ld b,160
  545.         call _down_cpy
  546.  
  547.         pop de
  548.         pop hl
  549.         push hl
  550.  
  551.         res 5,H
  552.         res 5,D
  553.  
  554.         ld b,160
  555.         call _down_cpy
  556.  
  557.         pop  hl
  558.         dec hl
  559.         ld (sidas_r),hl
  560.  
  561.  
  562.         pop bc
  563.         dec b
  564.         jp nz,_sidas_loop
  565.  
  566.         jp restore8000c000
  567. ;------------------------------------------------------------------        
  568. ; 256x160
  569. ;top to middle and bottom to middle same time
  570. ;mode ???
  571. _ud_nd:
  572.         ld a,1
  573.         ld (setpalflag),a
  574.         call store8000c000
  575.  
  576.  
  577.         ld hl,0x8004
  578.         ld (_ud_nd_top),hl
  579.         ld hl,0x8004+(159*40)
  580.         ld (_ud_nd_btm),hl
  581.  
  582.  
  583.         ld b,80 ;160/2
  584. _ud_nd_loop:        
  585.         halt
  586.         push bc
  587.  
  588.  
  589.  
  590.         ld a,(src_buf1)
  591.         SETPG8000
  592.         ld a,(user_scr0_low)
  593.         SETPGC000
  594.  
  595.  
  596.         ld hl,0
  597. _ud_nd_top: equ $-2
  598.  
  599.         push hl
  600.         pop de        
  601.         set 6,D
  602.  
  603.         push hl
  604.         push de
  605.  
  606.         call _ldi_32
  607.  
  608.         pop de
  609.         pop hl
  610.  
  611.  
  612.         set 5,h
  613.         set 5,d
  614.  
  615.         call _ldi_32
  616.  
  617.         ld hl,0
  618. _ud_nd_btm: equ $-2
  619.  
  620.         push hl
  621.         pop de        
  622.         set 6,D
  623.  
  624.         push hl
  625.         push de
  626.  
  627.         call _ldi_32
  628.  
  629.         pop de
  630.         pop hl
  631.  
  632.  
  633.         set 5,h
  634.         set 5,d
  635.  
  636.         call _ldi_32
  637.  
  638.         ld a,(src_buf2)
  639.         SETPG8000
  640.         ld a,(user_scr0_high)
  641.         SETPGC000
  642.  
  643.  
  644.         ld hl,(_ud_nd_top)
  645.  
  646.         push hl
  647.         pop de        
  648.         set 6,D
  649.  
  650.         push hl
  651.         push de
  652.  
  653.         call _ldi_32
  654.  
  655.         pop de
  656.         pop hl
  657.         push hl
  658.  
  659.         set 5,h
  660.         set 5,d
  661.  
  662.         call _ldi_32
  663.  
  664.         pop hl
  665.         call DHL
  666.         ld (_ud_nd_top),hl
  667.  
  668.         ld hl,(_ud_nd_btm)
  669.  
  670.         push hl
  671.         pop de        
  672.         set 6,D
  673.  
  674.         push hl
  675.         push de
  676.  
  677.         call _ldi_32
  678.  
  679.         pop de
  680.         pop hl
  681.  
  682.         push hl
  683.         set 5,h
  684.         set 5,d
  685.  
  686.         call _ldi_32
  687.  
  688.         pop hl
  689.         call UPHL
  690.         ld (_ud_nd_btm),hl
  691.  
  692.  
  693.         pop bc
  694.         dec b
  695.         jp nz,_ud_nd_loop
  696.  
  697.         jp restore8000c000
  698. ;------------------------------------------------------------------              
  699. ; 256x160
  700. ;from center up and down same time
  701. ;mode 0x3a
  702. _dn_up:
  703.         ld a,1
  704.         ld (setpalflag),a
  705.         call store8000c000
  706.  
  707.  
  708.         ld hl,0x8004+(80*40)
  709.         ld (_dn_up_top),hl
  710.         ld hl,0x8004+(79*40)
  711.         ld (_dn_up_btm),hl
  712.  
  713.  
  714.         ld b,80 ;160/2
  715. _dn_up_loop:        
  716.         halt
  717.         push bc
  718.  
  719.  
  720.  
  721.         ld a,(src_buf1)
  722.         SETPG8000
  723.         ld a,(user_scr0_low)
  724.         SETPGC000
  725.  
  726.  
  727.         ld hl,0
  728. _dn_up_top: equ $-2
  729.  
  730.         push hl
  731.         pop de        
  732.         set 6,D
  733.  
  734.         push hl
  735.         push de
  736.  
  737.         call _ldi_32
  738.  
  739.         pop de
  740.         pop hl
  741.  
  742.  
  743.         set 5,h
  744.         set 5,d
  745.  
  746.         call _ldi_32
  747.  
  748.         ld hl,0
  749. _dn_up_btm: equ $-2
  750.  
  751.         push hl
  752.         pop de        
  753.         set 6,D
  754.  
  755.         push hl
  756.         push de
  757.  
  758.         call _ldi_32
  759.  
  760.         pop de
  761.         pop hl
  762.  
  763.  
  764.         set 5,h
  765.         set 5,d
  766.  
  767.         call _ldi_32
  768.  
  769.         ld a,(src_buf2)
  770.         SETPG8000
  771.         ld a,(user_scr0_high)
  772.         SETPGC000
  773.  
  774.  
  775.         ld hl,(_dn_up_top)
  776.  
  777.         push hl
  778.         pop de        
  779.         set 6,D
  780.  
  781.         push hl
  782.         push de
  783.  
  784.         call _ldi_32
  785.  
  786.         pop de
  787.         pop hl
  788.         push hl
  789.  
  790.         set 5,h
  791.         set 5,d
  792.  
  793.         call _ldi_32
  794.  
  795.         pop hl
  796.         call DHL
  797.         ld (_dn_up_top),hl
  798.  
  799.         ld hl,(_dn_up_btm)
  800.  
  801.         push hl
  802.         pop de        
  803.         set 6,D
  804.  
  805.         push hl
  806.         push de
  807.  
  808.         call _ldi_32
  809.  
  810.         pop de
  811.         pop hl
  812.  
  813.         push hl
  814.         set 5,h
  815.         set 5,d
  816.  
  817.         call _ldi_32
  818.  
  819.         pop hl
  820.         call UPHL
  821.         ld (_dn_up_btm),hl
  822.  
  823.  
  824.         pop bc
  825.         dec b
  826.         jp nz,_dn_up_loop
  827.  
  828.         jp restore8000c000
  829. ;------------------------------------------------------------------        
  830. ; 256x160
  831. ;jaluzi top to bottom and bottom to top same tome interleave
  832. ;mode 0x3c
  833. _jaluzi:
  834.         ld a,1
  835.         ld (setpalflag),a
  836.         call store8000c000
  837.  
  838.  
  839.  
  840.         ld hl,0x8004
  841.         ld (_jaluzi_top),hl
  842.         ld hl,0x8004+(159*40)
  843.         ld (_jaluzi_btm),hl
  844.  
  845.  
  846.         ld b,80 ;160/2
  847. _jaluzi_loop:
  848.         halt
  849.         push bc
  850.  
  851.         ld a,(src_buf1)
  852.         SETPG8000
  853.         ld a,(user_scr0_low)
  854.         SETPGC000
  855.  
  856.  
  857.         ld hl,0
  858. _jaluzi_top: equ $-2
  859.  
  860.         push hl
  861.         pop de        
  862.         set 6,D
  863.  
  864.         push hl
  865.         push de
  866.  
  867.         call _ldi_32
  868.  
  869.         pop de
  870.         pop hl
  871.  
  872.  
  873.         set 5,h
  874.         set 5,d
  875.  
  876.         call _ldi_32
  877.  
  878.         ld hl,0
  879. _jaluzi_btm: equ $-2
  880.  
  881.         push hl
  882.         pop de        
  883.         set 6,D
  884.  
  885.         push hl
  886.         push de
  887.  
  888.         call _ldi_32
  889.  
  890.         pop de
  891.         pop hl
  892.  
  893.  
  894.         set 5,h
  895.         set 5,d
  896.  
  897.         call _ldi_32
  898.  
  899.         ld a,(src_buf2)
  900.         SETPG8000
  901.         ld a,(user_scr0_high)
  902.         SETPGC000
  903.  
  904.  
  905.         ld hl,(_jaluzi_top)
  906.  
  907.         push hl
  908.         pop de        
  909.         set 6,D
  910.  
  911.         push hl
  912.         push de
  913.  
  914.         call _ldi_32
  915.  
  916.         pop de
  917.         pop hl
  918.         push hl
  919.  
  920.         set 5,h
  921.         set 5,d
  922.  
  923.         call _ldi_32
  924.  
  925.         pop hl
  926.         call DHL1
  927.         ld (_jaluzi_top),hl
  928.  
  929.         ld hl,(_jaluzi_btm)
  930.  
  931.         push hl
  932.         pop de        
  933.         set 6,D
  934.  
  935.         push hl
  936.         push de
  937.  
  938.         call _ldi_32
  939.  
  940.         pop de
  941.         pop hl
  942.  
  943.         push hl
  944.         set 5,h
  945.         set 5,d
  946.  
  947.         call _ldi_32
  948.  
  949.         pop hl
  950.         call UPHL1
  951.         ld (_jaluzi_btm),hl
  952.  
  953.         pop bc
  954.         dec b
  955.         jp nz,_jaluzi_loop
  956.  
  957.         jp restore8000c000
  958. ;------------------------------------------------------------------        
  959. ; 256x160
  960. ;from center to sides left and right same time
  961. ;mode 0x39
  962. _cntsds:
  963.         ld a,1
  964.         ld (setpalflag),a
  965.         call store8000c000
  966.  
  967.  
  968.         ld hl,0x8004+15  ;to left
  969.         ld (_cntsds_lft),hl
  970.  
  971.         ld hl,0x8004+16 ;to right
  972.         ld (_cntsds_rgt),hl
  973.  
  974.         xor a
  975.         ld (_cntsds_fsa),a
  976.  
  977.  
  978.         ld b,64  ; 256 /2 /2
  979. _cntsds_loop:
  980.         halt
  981.         push bc
  982.  
  983.         ld hl,_cntsds_loop_end
  984.         push hl
  985.  
  986.  
  987.         ld a,0
  988. _cntsds_fsa: equ $-1
  989.         and a
  990.         jp z,_cntsds_f0
  991.         cp 1
  992.         jp z,_cntsds_f1
  993.         cp 2
  994.         jp z,_cntsds_f2
  995.         cp 3
  996.         jp z,_cntsds_f3
  997.  
  998.  
  999. _cntsds_loop_end:
  1000.         ld a,(_cntsds_fsa)
  1001.         inc a
  1002.         and 3
  1003.         ld (_cntsds_fsa),a
  1004.         pop bc
  1005.         dec b
  1006.         jp nz,_cntsds_loop
  1007.  
  1008.  
  1009.         jp restore8000c000
  1010.  
  1011. ;----
  1012. _cntsds_f0:
  1013.         ld a,(src_buf2)
  1014.         SETPG8000
  1015.         ld a,(user_scr0_high)
  1016.         SETPGC000
  1017.  
  1018.         ld hl,0
  1019. _cntsds_lft: equ $-2
  1020.         push hl
  1021.         pop de
  1022.         set 6,d
  1023.  
  1024.         set 5,h
  1025.         set 5,d
  1026.  
  1027.         ld b,160
  1028.         call _down_cpy
  1029.  
  1030.         ld a,(src_buf1)
  1031.         SETPG8000
  1032.         ld a,(user_scr0_low)
  1033.         SETPGC000
  1034.  
  1035.         ld hl,0
  1036. _cntsds_rgt: equ $-2
  1037.         push hl
  1038.         pop de
  1039.         set 6,d
  1040.  
  1041.         ld b,160
  1042.         jp _down_cpy
  1043.  
  1044.  
  1045. ;----
  1046. _cntsds_f2:
  1047.         ld a,(src_buf2)
  1048.         SETPG8000
  1049.         ld a,(user_scr0_high)
  1050.         SETPGC000
  1051.  
  1052.         ld hl,(_cntsds_lft)
  1053.         push hl
  1054.         pop de
  1055.         set 6,d
  1056.  
  1057.         ld b,160
  1058.         call _down_cpy
  1059.  
  1060.         ld a,(src_buf1)
  1061.         SETPG8000
  1062.         ld a,(user_scr0_low)
  1063.         SETPGC000
  1064.  
  1065.         ld hl,(_cntsds_rgt)
  1066.         push hl
  1067.         pop de
  1068.         set 6,d
  1069.  
  1070.         set 5,h
  1071.         set 5,d
  1072.  
  1073.         ld b,160
  1074.         jp _down_cpy
  1075.  
  1076.  
  1077. ;----
  1078. _cntsds_f1:
  1079.         ld a,(src_buf1)
  1080.         SETPG8000
  1081.         ld a,(user_scr0_low)
  1082.         SETPGC000
  1083.  
  1084.         ld hl,(_cntsds_lft)
  1085.         push hl
  1086.         pop de
  1087.         set 6,d
  1088.  
  1089.         set 5,h
  1090.         set 5,d
  1091.  
  1092.         ld b,160
  1093.         call _down_cpy
  1094.  
  1095.         ld a,(src_buf2)
  1096.         SETPG8000
  1097.         ld a,(user_scr0_high)
  1098.         SETPGC000
  1099.  
  1100.         ld hl,(_cntsds_rgt)
  1101.         push hl
  1102.         pop de
  1103.         set 6,d
  1104.  
  1105.         ld b,160
  1106.         jp _down_cpy
  1107. ;----
  1108. _cntsds_f3:
  1109.         ld a,(src_buf1)
  1110.         SETPG8000
  1111.         ld a,(user_scr0_low)
  1112.         SETPGC000
  1113.  
  1114.         ld hl,(_cntsds_lft)
  1115.         push hl
  1116.         push hl
  1117.         pop de
  1118.         set 6,d
  1119.  
  1120.         ld b,160
  1121.         call _down_cpy
  1122.  
  1123.         pop hl
  1124.         dec hl
  1125.         ld (_cntsds_lft),hl
  1126.  
  1127.         ld a,(src_buf2)
  1128.         SETPG8000
  1129.         ld a,(user_scr0_high)
  1130.         SETPGC000
  1131.  
  1132.         ld hl,(_cntsds_rgt)
  1133.         push hl
  1134.         push hl
  1135.         pop de
  1136.         set 6,d
  1137.  
  1138.         set 5,h
  1139.         set 5,d
  1140.  
  1141.  
  1142.         ld b,160
  1143.         call _down_cpy
  1144.  
  1145.         pop hl
  1146.         inc hl
  1147.         ld (_cntsds_rgt),hl
  1148.         ret
  1149. ;------------------------------------------------------------------  
  1150. ;in B - y C-x
  1151. ;out   set coordinates for TYPE
  1152.  
  1153. _pradd
  1154.         LD (CORDS),BC
  1155.         SRL     C
  1156.         SBC     A
  1157.         AND %00100000
  1158.         LD      (M111),A
  1159.  
  1160.         PUSH HL
  1161.         LD H,#C0
  1162.         LD A,H
  1163.         OR 0
  1164. M111    EQU $-1
  1165.         LD H,A
  1166.  
  1167.         LD A,C
  1168.         ADD A,4
  1169.         LD L,A
  1170.  
  1171.         LD DE,320
  1172. pradd_l:        
  1173.         ADD HL,DE
  1174.         DJNZ pradd_l
  1175.         LD (COORDS),HL
  1176.         POP HL
  1177.         RET        
  1178. ;---------------        
  1179. ;in A - char to print
  1180. _type
  1181.         ld de,0
  1182. COORDS  equ $-2        
  1183.         ld h,0
  1184.         ld l,a
  1185. M10:
  1186.         ld bc,FONT
  1187.         add hl,hl
  1188.         add hl,hl
  1189.         add hl,hl
  1190.         add hl,hl
  1191.         add hl,bc ;hl addr in FONT
  1192.  
  1193.         ex de,hl
  1194.  
  1195.         push hl
  1196.         ld a,(user_scr0_low)
  1197.         SETPGC000
  1198.         ld b,8
  1199. _ppnz2:
  1200.         push bc
  1201.         ld a,(de)
  1202.         ld (hl),a
  1203.         inc de
  1204.         ld bc,40
  1205.         add hl,bc
  1206.         pop bc
  1207.         djnz _ppnz2
  1208.         pop hl
  1209.  
  1210.         push hl
  1211.         ld a,(user_scr0_high)
  1212.         SETPGC000
  1213.         ld b,8
  1214. _ppnz3:
  1215.         push bc
  1216.         ld a,(de)
  1217.         ld (hl),a
  1218.         inc de
  1219.         ld bc,40
  1220.         add hl,bc
  1221.         pop bc
  1222.         djnz _ppnz3
  1223.         pop hl
  1224.  
  1225.         ld a,h
  1226.         xor 0x20
  1227.         bit 5,h
  1228.         ld h,a
  1229.         jr z,_ppnz4:
  1230.         inc hl
  1231.  
  1232. _ppnz4:        
  1233.         ld (COORDS),hl
  1234.         ld bc,(CORDS)
  1235.         inc c
  1236.         ld (CORDS),bc
  1237.         ld a,c
  1238.         cp 64
  1239.         ret c
  1240.  
  1241.         inc b
  1242.         ld c,0
  1243.         jp _pradd
  1244.  
  1245. UPHL1   CALL UPHL
  1246. UPHL
  1247.         PUSH BC
  1248.         LD BC,40
  1249.         AND A
  1250.         SBC HL,BC
  1251.         POP BC
  1252.         RET
  1253.  
  1254.  
  1255. DHL1    CALL DHL
  1256. DHL
  1257.         PUSH BC
  1258.         LD BC,40
  1259.         ADD HL,BC
  1260.         POP BC
  1261.         RET
  1262. ;;;;;;;;;;;;;;;;;;;;;;;
  1263. clear_whole_screen:
  1264.         call storec000
  1265.         ld a,(user_scr0_high)
  1266.         SETPGC000
  1267.         LD HL,#C000
  1268.         LD DE,#C001
  1269.         LD BC,16383
  1270.         LD [HL],L
  1271.         LDIR
  1272.         ld a,(user_scr0_low)
  1273.         SETPGC000
  1274.         LD HL,#C000
  1275.         LD DE,#C001
  1276.         LD BC,16383
  1277.         LD [HL],L
  1278.         LDIR
  1279.         jp restorec000
  1280. ;;;;;;;;;;;;;;;;;;;;;;;;
  1281. _clear_textbox:
  1282.         call storec000
  1283.  
  1284.         ld a,(user_scr0_high)
  1285.         SETPGC000
  1286. CLEARER_ LD HL,0xda44      ;D080
  1287. CLEARER1 LD B,32
  1288.         XOR A
  1289. 25      PUSH HL
  1290.         LD C,32
  1291.         LD (HL),A
  1292.         INC HL
  1293.         DEC C
  1294.         JR NZ,$-3
  1295.         POP HL
  1296.         LD DE,40
  1297.         ADD HL,DE
  1298.         DJNZ 25B
  1299.  
  1300. CLEARER2 LD HL,0xfa44   ;F080
  1301. CLEARER3 LD B,32
  1302.         XOR A
  1303. 25      PUSH HL
  1304.         LD C,32
  1305.         LD (HL),A
  1306.         INC HL
  1307.         DEC C
  1308.         JR NZ,$-3
  1309.         POP HL
  1310.         LD DE,40
  1311.         ADD HL,DE
  1312.         DJNZ 25B
  1313.  
  1314.         ld a,(user_scr0_low)
  1315.         SETPGC000
  1316. CLEARER_A LD HL,0xda44
  1317. CLEARER1A LD B,32
  1318.         XOR A
  1319. 25      PUSH HL
  1320.         LD C,32
  1321.         LD (HL),A
  1322.         INC HL
  1323.         DEC C
  1324.         JR NZ,$-3
  1325.         POP HL
  1326.         LD DE,40
  1327.         ADD HL,DE
  1328.         DJNZ 25B
  1329. CLEARER2A LD HL,0xfa44
  1330. CLEARER3A LD B,32
  1331.          XOR A
  1332. 25         PUSH HL
  1333.          LD C,32
  1334.          LD (HL),A
  1335.          INC HL
  1336.          DEC C
  1337.          JR NZ,$-3
  1338.          POP HL
  1339.         LD DE,40
  1340.         ADD HL,DE
  1341.          DJNZ 25B
  1342.        
  1343.          jp restorec000
  1344.  
  1345. ;----------------------------------------------------
  1346. _pre_setup
  1347.         ; ld a,(hl);string length
  1348.         ld a,(hl)
  1349.         ld (_line_lenght),a
  1350.         inc hl
  1351.  
  1352.         ld a,(hl)
  1353.         ld (DOWN_LIMIT),a
  1354.         inc hl
  1355.         push hl
  1356.         xor a
  1357.         ld (CUR_POS),a
  1358.         LD HL,#121A
  1359.         LD (_mnpos),HL
  1360.         pop hl
  1361.         ret
  1362. ;----------------------------------------------------
  1363. _prt_menu
  1364.         ld bc,0
  1365. _mnpos: equ $-2        
  1366.         call _pradd
  1367. prt_m1:
  1368.         ld a,(hl)
  1369.         inc hl
  1370.         and a
  1371.         RET Z
  1372.         cp 1
  1373.         JR Z,PRT_M2
  1374.         cp 128
  1375.         call nc,change_cp
  1376.         CP "#"
  1377.         call z,change_cp1
  1378.         CP "@"
  1379.         call z,change_cp2        
  1380.         SUB 32
  1381.         PUSH HL
  1382.         CALL _type
  1383.         POP HL
  1384.         JR prt_m1
  1385. PRT_M2: LD A,(_mnpos+1)
  1386.         INC A
  1387.         LD (_mnpos+1),A
  1388.         JR _prt_menu
  1389.  
  1390. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1391. _sel_menu:
  1392.         ld hl,0xD691   ;- left top corner of menus
  1393.         ld a,0
  1394. CUR_POS EQU $-1
  1395.         and a
  1396.         jr z,_sel_m_skip_c
  1397.  
  1398.         ld bc,320
  1399. _sel_menu_clc:
  1400.         add hl,bc
  1401.         dec a
  1402.         jr nz,_sel_menu_clc
  1403.  
  1404. _sel_m_skip_c:
  1405.         ld (SEL_S),hl
  1406.  
  1407.         call _highlight_selected
  1408. _sel_wait_loop:
  1409.         call waitkey
  1410.  
  1411.         cp key_up
  1412.         jr z,_sel_move_up
  1413.         cp key_down
  1414.         jr z,_sel_move_down
  1415.         cp key_enter
  1416.         jr z,_sel_sel_key
  1417.         cp ' '
  1418.         jr z,_sel_sel_key
  1419.         cp key_esc
  1420.         jr z,_sel_esc_key
  1421.         jr _sel_wait_loop
  1422.  
  1423. _sel_move_down
  1424.         ld hl,0
  1425. SEL_S   EQU $-2
  1426.         call _highlight_selected        
  1427.         ld hl,CUR_POS
  1428.         ld a,(hl)
  1429.         cp 0
  1430. DOWN_LIMIT EQU $-1        
  1431.         jp nc,_sel_menu
  1432.         inc (hl)
  1433.         jp _sel_menu
  1434.  
  1435. _sel_move_up
  1436.         ld hl,(SEL_S)
  1437.         call _highlight_selected        
  1438.         ld hl,CUR_POS
  1439.         ld a,(hl)
  1440.         and a
  1441.         jp z,_sel_menu
  1442.         dec (HL)
  1443.         jp _sel_menu
  1444. _sel_sel_key:
  1445.         ld hl,(SEL_S)
  1446.         call _highlight_selected
  1447.         ld a,(CUR_POS)
  1448.         ret
  1449.  
  1450. _sel_esc_key:
  1451. SEL_L  
  1452.         ld hl,(SEL_S)
  1453.         call _highlight_selected
  1454.         ld a,0xff
  1455.         ret
  1456.  
  1457. ;--------------------------------------
  1458. ;in hl adress in screen
  1459. _highlight_selected
  1460. ;LINE1
  1461.         push de
  1462.         push hl
  1463.         call storec000
  1464.         pop hl
  1465.  
  1466.         LD A,0
  1467. _line_lenght equ $-1
  1468.         LD [LINELEN],A
  1469.         LD [LINELEN0],A
  1470.         LD [LINELEN1],A
  1471.         LD [LINELEN2],A
  1472.  
  1473.          LD [LINE1_1],HL
  1474.          set 5,h
  1475.          LD [LINE1_2],HL
  1476.  
  1477.          ld a,(user_scr0_high)
  1478.          SETPGC000
  1479.  
  1480.          LD HL,0
  1481. LINE1_1  EQU $-2
  1482.          LD B,8
  1483. 0        PUSH BC,HL
  1484.          LD B,6
  1485. LINELEN EQU $-1
  1486. 1        LD A,(HL)
  1487.          XOR %00010010
  1488.          LD (HL),A
  1489.          INC HL
  1490.          DJNZ 1B
  1491.          POP HL
  1492.          CALL DHL
  1493.          POP BC
  1494.          DJNZ 0B
  1495.          LD HL,0
  1496. LINE1_2  EQU $-2
  1497.          LD B,8
  1498. 0        PUSH BC,HL
  1499.          LD B,6
  1500. LINELEN0 EQU $-1
  1501. 1        LD A,(HL)
  1502.          XOR %00010010
  1503.          LD (HL),A
  1504.          INC HL
  1505.          DJNZ 1B
  1506.          POP HL
  1507.          CALL DHL
  1508.          POP BC
  1509.          DJNZ 0B
  1510.  
  1511.          ld a,(user_scr0_low)
  1512.          SETPGC000
  1513.  
  1514.          LD HL,(LINE1_1)
  1515.          LD B,8
  1516. 0        PUSH BC,HL
  1517.          LD B,6
  1518. LINELEN1 EQU $-1
  1519. 1        LD A,(HL)
  1520.          XOR %00010010
  1521.          LD (HL),A
  1522.          INC HL
  1523.          DJNZ 1B
  1524.          POP HL
  1525.          CALL DHL
  1526.          POP BC
  1527.          DJNZ 0B
  1528.  
  1529.          LD HL,[LINE1_2]
  1530.          LD B,8
  1531. 0        PUSH BC,HL
  1532.          LD B,6
  1533. LINELEN2 EQU $-1
  1534. 1        LD A,(HL)
  1535.          XOR %00010010
  1536.          LD (HL),A
  1537.          INC HL
  1538.          DJNZ 1B
  1539.          POP HL
  1540.          CALL DHL
  1541.          POP BC
  1542.          DJNZ 0B
  1543.  
  1544.          call restorec000
  1545.          pop de
  1546.          ret
  1547. ;;;;;;;;;;;;;;;;;;;;;;
  1548. _pre_menu_store_bgnd:
  1549.         push af
  1550.         push hl
  1551.         ;#d680
  1552.         call store8000c000
  1553.  
  1554.         ld a,(src_buf1)
  1555.         SETPG8000
  1556.  
  1557.         ld a,(user_scr0_low)
  1558.         SETPGC000
  1559.  
  1560.         ld hl,0xd680
  1561.         ld de,0x8000
  1562.         ld bc,320*7
  1563.         ldir
  1564.  
  1565.         ld hl,0xf680
  1566.         ld bc,320*7
  1567.         ldir
  1568.  
  1569.  
  1570.         ld a,(user_scr0_high)
  1571.         SETPGC000
  1572.         ld hl,0xd680
  1573.         ld bc,320*7
  1574.         ldir
  1575.  
  1576.         ld hl,0xf680
  1577.         ld bc,320*7
  1578.         ldir
  1579.  
  1580.         call restore8000c000
  1581.         pop hl
  1582.         pop af
  1583.         ret
  1584. _pre_menu_restore_bgnd:
  1585.         push af
  1586.         push hl
  1587.         ;#d680
  1588.         call store8000c000
  1589.  
  1590.         ld a,(src_buf1)
  1591.         SETPG8000
  1592.  
  1593.         ld a,(user_scr0_low)
  1594.         SETPGC000
  1595.  
  1596.         ld hl,0x8000
  1597.         ld de,0xd680
  1598.         ld bc,320*7
  1599.         ldir
  1600.  
  1601.         ld de,0xf680
  1602.         ld bc,320*7
  1603.         ldir
  1604.  
  1605.         ld a,(user_scr0_high)
  1606.         SETPGC000
  1607.         ld de,0xd680
  1608.         ld bc,320*7
  1609.         ldir
  1610.  
  1611.         ld de,0xf680
  1612.         ld bc,320*7
  1613.         ldir
  1614.         call restore8000c000        
  1615.         pop hl
  1616.         pop af
  1617.         ret
  1618. ;---------------------------
  1619. store_scr0_mem_buf:
  1620.         call store8000c000
  1621.  
  1622.         ld a,(mem_buf1)
  1623.         SETPG8000
  1624.  
  1625.         ld a,(user_scr0_low)
  1626.         SETPGC000
  1627.  
  1628.         ld hl,0xc000
  1629.         ld de,0x8000
  1630.         ld bc,16384
  1631.         ldir
  1632.  
  1633.         ld a,(mem_buf2)
  1634.         SETPG8000
  1635.         ld a,(user_scr0_high)
  1636.         SETPGC000
  1637.         ld hl,0xc000
  1638.         ld de,0x8000
  1639.         ld bc,16384
  1640.         ldir
  1641.  
  1642.         ld hl,pal
  1643.         ld de,0xbfff-32
  1644.         ld bc,32
  1645.         ldir        
  1646.         jp restore8000c000
  1647.  
  1648. restore_scr0_mem_buf:
  1649.         call store8000c000
  1650.  
  1651.         ld a,(mem_buf2)
  1652.         SETPG8000
  1653.  
  1654.         ld a,(user_scr0_high)
  1655.         SETPGC000
  1656.  
  1657.         ld de,pal
  1658.         ld hl,0xbfff-32
  1659.         ld bc,32
  1660.         ldir
  1661.  
  1662.         ld a,1
  1663.         ld (setpalflag),a
  1664.  
  1665.         ld de,0xc000
  1666.         ld hl,0x8000
  1667.         ld bc,16384
  1668.         ldir
  1669.  
  1670.         ld a,(mem_buf1)
  1671.         SETPG8000
  1672.         ld a,(user_scr0_low)
  1673.         SETPGC000
  1674.         ld de,0xc000
  1675.         ld hl,0x8000
  1676.         ld bc,16384
  1677.         ldir
  1678.  
  1679.         jp restore8000c000        
  1680. ;---------------------------
  1681. EXITDARK
  1682.        CALL clear_whole_screen
  1683.        JP begin
  1684.  
  1685. ;;;;;;=====
  1686. FLASH
  1687.         ld b,(hl)
  1688.         inc hl
  1689.         push hl
  1690.  
  1691.         push bc
  1692.  
  1693.         ld hl,pal
  1694.         ld de,temppal
  1695.         ld bc,32
  1696.         ldir
  1697.  
  1698.         pop bc
  1699.  
  1700. FLASH_LP:
  1701.         push bc
  1702.  
  1703.         ld hl,whitepal
  1704.         ld de,pal
  1705.         ld bc,32
  1706.         ldir
  1707.  
  1708.         ld a,1
  1709.         ld (setpalflag),a
  1710.  
  1711.         halt
  1712.         halt
  1713.         halt
  1714.         halt
  1715.         halt
  1716.  
  1717.  
  1718.         ld hl,temppal
  1719.         ld de,pal
  1720.         ld bc,32
  1721.         ldir
  1722.  
  1723.         ld a,1
  1724.         ld (setpalflag),a
  1725.  
  1726.         halt
  1727.         halt
  1728.         halt
  1729.         halt
  1730.         halt
  1731.  
  1732.         pop bc
  1733.         djnz FLASH_LP
  1734.         pop hl
  1735.         jp _print
  1736.  
  1737.  
  1738. SHAKE:
  1739.         ld b,(hl)
  1740.         inc hl
  1741.  
  1742.         push hl
  1743.         push bc
  1744.  
  1745.         call store8000c000
  1746.  
  1747.         ld a,(user_scr0_low)
  1748.         SETPG8000
  1749.         ld a,(user_scr1_low)
  1750.         SETPGC000
  1751.  
  1752.         ld hl,0x8000+320
  1753.         ld de,0xc000
  1754.         ld bc,8000-320
  1755.         ldir
  1756.         ;ld hl,0x8000
  1757.         ;ld bc,320
  1758.         ;ldir
  1759.  
  1760.         ld hl,0xa000+320
  1761.         ld de,0xe000
  1762.         ld bc,8000-320
  1763.         ldir
  1764.         ;ld hl,0xa000
  1765.         ;ld bc,320
  1766.         ;ldir
  1767.  
  1768.  
  1769.         ld a,(user_scr0_high)
  1770.         SETPG8000
  1771.         ld a,(user_scr1_high)
  1772.         SETPGC000
  1773.  
  1774.         ld hl,0x8000+320
  1775.         ld de,0xc000
  1776.         ld bc,8000-320
  1777.         ldir
  1778.         ;ld hl,0x8000
  1779.         ;ld bc,320
  1780.         ;ldir
  1781.  
  1782.         ld hl,0xa000+320
  1783.         ld de,0xe000
  1784.         ld bc,8000-320
  1785.         ldir
  1786.         ;ld hl,0xa000
  1787.         ;ld bc,320
  1788.         ;ldir
  1789.  
  1790.  
  1791.         pop bc
  1792. SHAKE_LP:
  1793.         push bc
  1794.  
  1795.         ld e,1
  1796.         OS_SETSCREEN
  1797.  
  1798.         halt
  1799.         halt
  1800.         halt
  1801.         halt
  1802.         halt
  1803.  
  1804.         ld e,0
  1805.         OS_SETSCREEN
  1806.  
  1807.         halt
  1808.         halt
  1809.         halt
  1810.         halt
  1811.         halt
  1812.  
  1813.         pop bc
  1814.         djnz SHAKE_LP
  1815.  
  1816.         call restore8000c000
  1817.         pop hl
  1818.         jp _print
  1819. ;;;;;;;;;;;;;;;;;;;;;;
  1820. ; ╨╚╤╙═╬╩ ╚╟ ╧└╠▀╥╚ ┬ ┴╙╘┼╨ ┬█┬╬─└
  1821. RESTOREBGND
  1822.        PUSH HL
  1823.  
  1824.        call store8000c000
  1825.  
  1826.        ld a,(mem_buf1)
  1827.        SETPG8000
  1828.        ld a,(load_buf1)
  1829.        SETPGC000
  1830.  
  1831.        ld hl,0x8000
  1832.        ld de,0xc000
  1833.        ld bc,16384
  1834.        ldir
  1835.  
  1836.        ld a,(mem_buf2)
  1837.        SETPG8000
  1838.        ld a,(load_buf2)
  1839.        SETPGC000
  1840.  
  1841.        ld hl,0x8000
  1842.        ld de,0xc000
  1843.        ld bc,16384
  1844.        ldir
  1845.  
  1846.        ld hl,mempal
  1847.        ld de,pal
  1848.        ld bc,32
  1849.        ldir
  1850.  
  1851.        call restore8000c000
  1852.        POP HL
  1853.        JP _print
  1854.  
  1855. ;-----
  1856. ;┬ ╥┼╬╨╚╚ ─╬╦╞═╬ ┴█╥▄ ╟└╩╚─█┬└═╚┼ ▌╩╨└═└ ┬ "PAGEMEM"
  1857. ;╤┼╔╫└╤ ╤─┼╦└╦ ╟└╩╚─█┬└═╚┼ "PAGEBUF"  ┬  "PAGEMEM"
  1858. STOREBGND
  1859.        PUSH HL
  1860.        call store8000c000
  1861.  
  1862.        ld a,(mem_buf1)
  1863.        SETPG8000
  1864.        ld a,(load_buf1)
  1865.        SETPGC000
  1866.  
  1867.        ld hl,0xc000
  1868.        ld de,0x8000
  1869.        ld bc,16384
  1870.        ldir
  1871.  
  1872.        ld a,(mem_buf2)
  1873.        SETPG8000
  1874.        ld a,(load_buf2)
  1875.        SETPGC000
  1876.  
  1877.        ld hl,0xc000
  1878.        ld de,0x8000
  1879.        ld bc,16384
  1880.        ldir
  1881.  
  1882.        ld hl,pal
  1883.        ld de,mempal
  1884.        ld bc,32
  1885.        ldir
  1886.  
  1887.        call restore8000c000
  1888.        POP HL
  1889.        JP _print      
  1890.  
  1891. ;-------GROUP15 TEMINATORS-----
  1892. ALLANIMOFF
  1893. CLRANIM JP _print
  1894. ANIMON  INC HL
  1895.         JR CLRANIM
  1896. LOADANIM
  1897.           LD DE,4
  1898.           ADD HL,DE
  1899. LOADANIM0 LD A,(HL)
  1900.           AND A
  1901.           JR Z,LOADANIM1
  1902.           INC HL
  1903.           JR LOADANIM0
  1904. LOADANIM1 INC HL
  1905.           JP _print
  1906.  
  1907. ;-----------------------------
  1908. CLRSCREEN LD A,(HL)
  1909.           LD (outtyp),A
  1910.           INC HL
  1911.           PUSH HL
  1912.  
  1913.           call store8000c000
  1914.           ld a,(user_scr1_low)
  1915.           SETPG8000
  1916.  
  1917.           ld hl,0x8000
  1918.           ld de,0x8001
  1919.           ld bc,16383
  1920.           ld (hl),0
  1921.           ldir
  1922.  
  1923.           ld a,(user_scr1_high)
  1924.           SETPG8000
  1925.  
  1926.           ld hl,0x8000
  1927.           ld de,0x8001
  1928.           ld bc,16383
  1929.           ld (hl),0
  1930.           ldir
  1931.  
  1932.           call restore8000c000
  1933.           call _2ndscreen_output
  1934.           pop hl
  1935.           jp _print
  1936.  
  1937. ;======================
  1938. load_tb008:
  1939.         inc hl
  1940.         LD A,(HL)
  1941.         LD (DELAY),A
  1942.         inc hl
  1943.         push hl
  1944.         call load_gfx_to_load_buf_nopal
  1945.         pop hl
  1946.        ld de,buf
  1947.         call copystr_hlde
  1948.         inc hl
  1949.         JP _print        
  1950.  
  1951. ;======================
  1952. SPRITELOAD1:
  1953.         ld a,(hl)
  1954.         cp 07
  1955.         jr z,load_tb008
  1956.         INC HL
  1957.         LD A,(HL)
  1958.         LD (DELAY),A
  1959.         INC HL
  1960.         LD A,(HL)
  1961.         CP #0D
  1962.         JP Z,NORMALSPR
  1963.  
  1964. ;----------------------------------------------------------------------------------------
  1965. ;┬╬╟╠╬╞═╬ ┬╤┼╥└╩╚ ╥╙╥ ═└─╬ ╟└╩╚─█┬└═╚┼ ▌╩╨└═└ ┬ "PAGEBUF"
  1966.  
  1967.         ;чфхё№ уЁєчшЄё  tb_008 !!!!!
  1968.  
  1969.         LD DE,7
  1970.         ADD HL,DE
  1971.         JP _print
  1972.  
  1973.  
  1974. NORMALSPR
  1975.         INC HL
  1976.         LD A,(HL)
  1977.         LD (XPOS),A
  1978.         INC HL,HL
  1979.  
  1980.         PUSH HL
  1981.         call load_gfx_to_scr_buf
  1982.         pop hl
  1983.  
  1984.         ld de,buf
  1985.         call copystr_hlde
  1986.         inc hl
  1987.  
  1988.         push hl
  1989.         CALL DECR_SPR
  1990.         POP HL
  1991.         JP _print
  1992.  
  1993.  
  1994. decrspr_offset dw 0 ;offset to draw sprite
  1995. dcrspr_len dw 0      ; cutted length
  1996. DECR_SPR:
  1997.  
  1998.         ld a,0
  1999. XPOS    EQU $-1
  2000.         SRL A
  2001.         jr nc,xpos1
  2002.         inc a
  2003. xpos1:        
  2004.         ld c,a
  2005.         ld b,0
  2006.  
  2007. ;         LD BC,0
  2008. ;XPOS     EQU $-2
  2009. ;        LD HL,ZONEADR
  2010. ;        ADD HL,BC
  2011. ;        LD C,(HL)
  2012. ;        ld b,0
  2013.  
  2014.         ld (decrspr_offset),bc
  2015.  
  2016.         and a
  2017.         ld hl,32
  2018.         SBC hl,bc
  2019.         ld (dcrspr_len),hl
  2020.  
  2021.         call store8000c000
  2022.  
  2023.         ld a,(scr_buf1)
  2024.         SETPG8000
  2025.         ld a,(load_buf1)
  2026.         SETPGC000
  2027.  
  2028.         ld bc,(decrspr_offset)
  2029.         ld hl,0xc004
  2030.         add hl,bc
  2031.         ld de,0x8004
  2032.  
  2033.         ld b,160
  2034. decr_spr_lp1:
  2035.         push bc
  2036.  
  2037.         push hl
  2038.         push de
  2039.  
  2040.         ld bc,(dcrspr_len)
  2041.         call _iob
  2042.  
  2043.         pop hl ; (de)
  2044.         call DHL
  2045.         ex de,hl
  2046.         pop hl
  2047.         call DHL
  2048.  
  2049.         pop bc
  2050.         djnz decr_spr_lp1
  2051.  
  2052.  
  2053.         ld bc,(decrspr_offset)
  2054.         ld hl,0xe004
  2055.         add hl,bc
  2056.         ld de,0xa004
  2057.  
  2058.         ld b,160
  2059. decr_spr_lp2:
  2060.         push bc
  2061.  
  2062.         push hl
  2063.         push de
  2064.  
  2065.         ld bc,(dcrspr_len)
  2066.         call _iob
  2067.  
  2068.         pop hl ; (de)
  2069.         call DHL
  2070.         ex de,hl
  2071.         pop hl
  2072.         call DHL
  2073.  
  2074.         pop bc
  2075.         djnz decr_spr_lp2
  2076.  
  2077.  
  2078.         ld a,(scr_buf2)
  2079.         SETPG8000
  2080.         ld a,(load_buf2)
  2081.         SETPGC000
  2082.  
  2083.         ld bc,(decrspr_offset)
  2084.         ld hl,0xc004
  2085.         add hl,bc
  2086.         ld de,0x8004
  2087.  
  2088.         ld b,160
  2089. decr_spr_lp3:
  2090.         push bc
  2091.  
  2092.         push hl
  2093.         push de
  2094.  
  2095.         ld bc,(dcrspr_len)
  2096.         call _iob
  2097.  
  2098.         pop hl ; (de)
  2099.         call DHL
  2100.         ex de,hl
  2101.         pop hl
  2102.         call DHL
  2103.  
  2104.         pop bc
  2105.         djnz decr_spr_lp3
  2106.  
  2107.  
  2108.         ld bc,(decrspr_offset)
  2109.         ld hl,0xe004
  2110.         add hl,bc
  2111.         ld de,0xa004
  2112.  
  2113.         ld b,160
  2114. decr_spr_lp4:
  2115.         push bc
  2116.  
  2117.         push hl
  2118.         push de
  2119.  
  2120.         ld bc,(dcrspr_len)
  2121.         call _iob
  2122.  
  2123.         pop hl ; (de)
  2124.         call DHL
  2125.         ex de,hl
  2126.         pop hl
  2127.         call DHL
  2128.  
  2129.         pop bc
  2130.         djnz decr_spr_lp4
  2131.  
  2132.         jp restore8000c000
  2133. ;-----------------------
  2134. _prt_ingame_menu:
  2135.         ld bc,0
  2136. _ingame_m_mnpos: equ $-2
  2137.         call _pradd
  2138. prt_ingame_m1:
  2139.         ld a,(hl)
  2140.         inc hl
  2141.         and a
  2142.         RET Z
  2143.         cp 1
  2144.         JR Z,prt_ingame_m2
  2145.         cp 128
  2146.         call nc,change_cp
  2147.         CP "#"
  2148.         call z,change_cp1
  2149.         CP "@"
  2150.         call z,change_cp2        
  2151.         SUB 32
  2152.         PUSH HL
  2153.         CALL _type
  2154.         POP HL
  2155.         JR prt_ingame_m1
  2156. prt_ingame_m2:
  2157.         LD A,(_ingame_m_mnpos) ;x-coord
  2158.         add a,16
  2159.         ld (_ingame_m_mnpos),a
  2160.         cp 64
  2161.         jr c,_prt_ingame_menu
  2162.         and 0x3f
  2163.         LD (_ingame_m_mnpos),A
  2164.         ld a,(_ingame_m_mnpos+1)
  2165.         inc a
  2166.         ld (_ingame_m_mnpos+1),a
  2167.         JR _prt_ingame_menu
  2168. ;------------------------------------
  2169.  
  2170. _sel_ingame_menu:
  2171.         ld a,0
  2172. _ingame_m_curpos equ $-1
  2173.         ld hl,MENUCURHELPER
  2174.         call sel_word
  2175.         ld (_sel_ingame_SELS4),hl
  2176.         call _highlight_selected
  2177. _sel_ingame_SELS3:        
  2178.         call waitkey
  2179.  
  2180.         cp key_esc
  2181.         jp z,_sel_ingame_esc
  2182.  
  2183.         cp key_left
  2184.         jr z,_sel_ingame_SELS_keyleft
  2185.         cp key_right
  2186.         jr z,_sel_ingame_SELS_keyright
  2187.  
  2188.         cp key_up
  2189.         jr z,_sel_ingame_SELS_keyup
  2190.         cp key_down
  2191.         jr z,_sel_ingame_SELS_keydown
  2192.                
  2193.         cp key_enter
  2194.         jr z,_sel_ingame_SELECTED
  2195.         cp ' '
  2196.         jr z,_sel_ingame_SELECTED
  2197.         jr _sel_ingame_SELS3        
  2198. _sel_ingame_esc:
  2199.         ld hl,0
  2200. _sel_ingame_SELS4: equ $-2
  2201.         call _highlight_selected
  2202.         ld a,0xff
  2203.         ret
  2204. _sel_ingame_SELS_keyleft:
  2205.         ld hl,(_sel_ingame_SELS4)
  2206.         call _highlight_selected
  2207.  
  2208.         ld hl,_ingame_m_curpos
  2209.         ld a,(hl)
  2210.         and a
  2211.         jp z,_sel_ingame_menu
  2212.         dec (HL)
  2213.         jp _sel_ingame_menu
  2214.  
  2215. _sel_ingame_SELS_keyright:
  2216.         ld hl,(_sel_ingame_SELS4)
  2217.         call _highlight_selected
  2218.         ld hl,_ingame_m_curpos
  2219.         ld a,(hl)
  2220.         cp 0
  2221. _ingame_m_downlimit EQU $-1        
  2222.         jp nc,_sel_ingame_menu
  2223.         inc (hl)
  2224.         jp _sel_ingame_menu
  2225. _sel_ingame_SELECTED:
  2226.         ld hl,(_sel_ingame_SELS4)
  2227.         call _highlight_selected
  2228.         ld a,(_ingame_m_curpos)
  2229.         ret
  2230.  
  2231. _sel_ingame_SELS_keyup:
  2232.         ld hl,(_sel_ingame_SELS4)
  2233.         call _highlight_selected
  2234.  
  2235.  
  2236.         ld hl,_ingame_m_curpos
  2237.         ld a,(hl)
  2238.         sub 4
  2239.         jp m,_sel_ingame_menu        
  2240.         ld (hl),a
  2241.         jp _sel_ingame_menu
  2242.  
  2243. _sel_ingame_SELS_keydown:
  2244.         ld hl,(_sel_ingame_SELS4)
  2245.         call _highlight_selected
  2246.  
  2247.         ld a,(_ingame_m_downlimit)
  2248.         inc a
  2249.         ld b,a
  2250.  
  2251.         ld hl,_ingame_m_curpos
  2252.         ld a,(hl)
  2253.         add a,4
  2254.         sub b      
  2255.         jp p,_sel_ingame_menu        
  2256.         add a,b
  2257.         ld (hl),a
  2258.  
  2259.         jp _sel_ingame_menu