Subversion Repositories NedoOS

Rev

Rev 40 | Rev 344 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;т√тюф сшЄь¤яр эр ¤ъЁрэ
  2.  
  3.         MACRO SHOWBITMAPLINELAYER02_25 ;т√тюф яшъёхыхщ ab..ef..
  4.         ld b,lx
  5. _=$
  6.         exx
  7.         ld c,(iy)
  8.         ld a,(bc)
  9.         ld l,(iy+4)
  10.         or (hl)
  11.         ld (de),a
  12.         set 5,d
  13.         ld c,(iy+16)
  14.         ld a,(bc)
  15.         ld l,(iy+20)
  16.         or (hl)
  17.         ld (de),a
  18.         res 5,d
  19.         inc de
  20.         exx
  21.         add iy,de ;32
  22.         djnz _
  23.         ENDM
  24.  
  25.         MACRO SHOWBITMAPLINELAYER02_50 ;т√тюф яшъёхыхщ ab..ef..
  26.         ld b,lx
  27. _=$
  28.         exx
  29.         ld c,(iy)
  30.         ld a,(bc)
  31.         ld l,(iy+2)
  32.         or (hl)
  33.         ld (de),a
  34.         set 5,d
  35.         ld c,(iy+8)
  36.         ld a,(bc)
  37.         ld l,(iy+10)
  38.         or (hl)
  39.         ld (de),a
  40.         res 5,d
  41.         inc de
  42.         exx
  43.         add iy,de ;16
  44.         djnz _
  45.         ENDM
  46.  
  47.         MACRO SHOWBITMAPLINELAYER02_100 ;т√тюф яшъёхыхщ ab..ef..
  48. ;180t/4pix (с√ыю 202)
  49.         ld b,lx
  50. _=$
  51.         exx
  52.         ld c,(iy)
  53.         ld a,(bc)
  54.         ld l,(iy+1)
  55.         or (hl)
  56.         ld (de),a
  57.         set 5,d
  58.         ld c,(iy+4)
  59.         ld a,(bc)
  60.         ld l,(iy+5)
  61.         or (hl)
  62.         ld (de),a
  63.         res 5,d
  64.         inc de
  65.         exx
  66.         add iy,de ;8
  67.         djnz _
  68.         ENDM
  69.  
  70.         MACRO SHOWBITMAPLINELAYER02_200 ;т√тюф яшъёхыхщ ab..ef..
  71. ;106t/ (ўхЁхч ёЄхъ ьюцэю 86)
  72.         ld hx,lx
  73. _=$
  74.         ld e,(hl)
  75.         inc hl
  76.         inc hl
  77.         ld a,(de)
  78.         ld (bc),a
  79.         set 5,b
  80.         ld e,(hl)
  81.         inc hl
  82.         inc hl
  83.         ld a,(de)
  84.         ld (bc),a
  85.         res 5,b
  86.         inc bc
  87.         dec hx
  88.         jp nz,_
  89.         ENDM
  90.  
  91.         MACRO SHOWBITMAPLINELAYER02_400 ;т√тюф яшъёхыхщ ab..ef..
  92.         ld hx,lx
  93. _=$
  94.         ld e,(hl)
  95.         inc hl
  96.         ld a,(de)
  97.         ld (bc),a
  98.         set 5,b
  99.         ld e,(hl)
  100.         inc hl
  101.         ld a,(de)
  102.         ld (bc),a
  103.         res 5,b
  104.         inc bc
  105.         dec hx
  106.         jp nz,_
  107.         ENDM
  108.  
  109. prbitmapbox
  110. ;hl=x т bitmap
  111. ;de=y т bitmap
  112. ;c=x/8 эр ¤ъЁрэх
  113. ;b=y эр ¤ъЁрэх
  114. ;hy=hgt
  115. ;lx=wid(chr)
  116.         push bc ;xy эр ¤ъЁрэх
  117.         push hl ;x т bitmap
  118.         call calcscr_from_xchr_y
  119.         pop bc ;x т bitmap
  120.         ld a,h
  121.         add a,+((scrbase16k-scrbase)/256)&#ff ;or scrbase16k/256 ;#c0
  122.         ld h,a
  123.         push hl ;scr (#c000+)
  124.         call calcbitmap_from_xy ;out: a=pg, hl=addr
  125.         pop de ;scr (#c000+)
  126.         ld bc,(curbitmapscale) ;1=25%, 2=50%, 3=100%, 4=200%, 5=400%
  127.         dec c
  128.         jp z,showbitmapbox_25_lines
  129.         dec c
  130.         jp z,showbitmapbox_50_lines
  131.         dec c
  132.         jp z,showbitmapbox_100_lines
  133.         dec c
  134.         jr z,showbitmapbox_200_lines
  135.         ;dec c
  136.         ;jp z,showbitmapbox_400_lines
  137.         ;pop bc
  138.         ;ret ;эшъюуфр
  139. showbitmapbox_400_lines
  140.         ld c,hy
  141.         inc c
  142.         srl c
  143.         inc c
  144.         srl c
  145.         ld hy,c ;/4 ё юъЁєуыхэшхь ттхЁї
  146.         push iy
  147. showbitmapbox_400_lines0
  148.         ld ly,4
  149. showbitmapbox_400_lines1
  150.         push de ;scr (#c000+)
  151.         push af ;pg
  152.         call setpg32k
  153.         push hl ;bitmap addr
  154.          push de ;scr (#c000+)
  155.          push hl ;bitmap addr
  156.         ld a,(setpgs_scr_low)
  157.         SETPG16K
  158.         ld b,d
  159.         ld c,e
  160.         ld d,tpixelrecode/256
  161.         SHOWBITMAPLINELAYER02_400 ;lx=wid(chr)
  162.          pop hl ;bitmap addr
  163.         ld a,(setpgs_scr_high)
  164.         SETPG16K
  165.          pop bc ;scr (#c000+)
  166.         SHOWBITMAPLINELAYER02_400 ;lx=wid(chr)
  167.         pop hl ;bitmap addr
  168.         pop af ;pg
  169.         pop de ;scr (#c000+)
  170.         call showbitmapbox_scrlinedown
  171.         dec ly
  172.         jp nz,showbitmapbox_400_lines1
  173.         call showbitmapbox_linedown
  174.         dec hy
  175.         jp nz,showbitmapbox_400_lines0
  176.         pop iy
  177.         ld a,hy
  178.         add a,a
  179.         jr addaa_hya_popbc_showbitmaprightbox
  180.         ;add a,a
  181.         ;ld hy,a ;hy=hgt эр ¤ъЁрэх
  182.         ;pop bc ;xy эр ¤ъЁрэх
  183. ;c=x/8 эр ¤ъЁрэх
  184. ;b=y эр ¤ъЁрэх
  185. ;hy=hgt
  186. ;lx=wid(chr)
  187.         ;jp showbitmaprightbox ;фхырхЄ setpgs_scr
  188.  
  189. showbitmapbox_200_lines
  190.         ld c,hy
  191.         inc c
  192.         srl c
  193.         ld hy,c ;/2 ё юъЁєуыхэшхь ттхЁї
  194.         push iy
  195. showbitmapbox_200_lines0
  196.         ld ly,2
  197. showbitmapbox_200_lines1
  198.         push de ;scr (#c000+)
  199.         push af ;pg
  200.         call setpg32k
  201.         push hl ;bitmap addr
  202.          push de ;scr (#c000+)
  203.          push hl ;bitmap addr
  204.         ld a,(setpgs_scr_low)
  205.         SETPG16K
  206.         ld b,d
  207.         ld c,e
  208.         ld d,tpixelrecode/256
  209.         SHOWBITMAPLINELAYER02_200 ;lx=wid(chr)
  210.          pop hl ;bitmap addr
  211.         ld a,(setpgs_scr_high)
  212.         SETPG16K
  213.          pop bc ;scr (#c000+)
  214.         inc hl
  215.         SHOWBITMAPLINELAYER02_200 ;lx=wid(chr)
  216.         pop hl ;bitmap addr
  217.         pop af ;pg
  218.         pop de ;scr (#c000+)
  219.         call showbitmapbox_scrlinedown
  220.         dec ly
  221.         jp nz,showbitmapbox_200_lines1
  222.         call showbitmapbox_linedown
  223.         dec hy
  224.         jp nz,showbitmapbox_200_lines0
  225.         pop iy
  226.         ld a,hy
  227. addaa_hya_popbc_showbitmaprightbox
  228.         add a,a
  229.         ld hy,a ;hy=hgt эр ¤ъЁрэх
  230.         pop bc ;xy эр ¤ъЁрэх
  231. ;c=x/8 эр ¤ъЁрэх
  232. ;b=y эр ¤ъЁрэх
  233. ;hy=hgt
  234. ;lx=wid(chr)
  235.         jp showbitmaprightbox ;фхырхЄ setpgs_scr
  236.  
  237. showbitmapbox_25_lines
  238.         push iy
  239.          exx
  240.          ld de,32
  241.          ld b,hy
  242.          ld l,b
  243. showbitmapbox_25_lines0
  244.         exx
  245.         push de ;scr (#c000+)
  246.         push af ;pg
  247.         call setpg32k
  248.         push hl ;bitmap addr
  249.          push de ;scr (#c000+)
  250.           push hl ;bitmap addr
  251.           pop iy
  252.          ld bc,8
  253.          add hl,bc
  254.          push hl ;bitmap addr+2
  255.         ld b,tpixelrecodeLEFT/256
  256.         ld h,tpixelrecodeRIGHT/256
  257.         exx
  258.         ld a,(setpgs_scr_low)
  259.         SETPG16K
  260.         SHOWBITMAPLINELAYER02_25 ;lx=wid(chr)
  261.          pop iy ;bitmap addr+2
  262.         exx
  263.          pop de ;scr (#c000+)
  264.         exx
  265.         ld a,(setpgs_scr_high)
  266.         SETPG16K
  267.         SHOWBITMAPLINELAYER02_25 ;lx=wid(chr)
  268.         exx
  269.         pop hl ;bitmap addr
  270.         pop af ;pg
  271.         pop de ;scr (#c000+)
  272.         call showbitmapbox_scrlinedown
  273.         call showbitmapbox_linedown2
  274.         call showbitmapbox_linedown2
  275.         exx
  276.         dec l
  277.         jp nz,showbitmapbox_25_lines0
  278.         jp popiy_popbc_showbitmaprightbox
  279.         ;pop iy ;hy=hgt эр ¤ъЁрэх
  280.         ;pop bc ;xy эр ¤ъЁрэх
  281. ;c=x/8 эр ¤ъЁрэх
  282. ;b=y эр ¤ъЁрэх
  283. ;hy=hgt
  284. ;lx=wid(chr)
  285.         ;jp showbitmaprightbox ;фхырхЄ setpgs_scr
  286.  
  287. showbitmapbox_50_lines
  288.         push iy
  289.          exx
  290.          ld de,16
  291.          ld b,hy
  292.          ld l,b
  293. showbitmapbox_50_lines0
  294.         exx
  295.         push de ;scr (#c000+)
  296.         push af ;pg
  297.         call setpg32k
  298.         push hl ;bitmap addr
  299.          push de ;scr (#c000+)
  300.           push hl ;bitmap addr
  301.           pop iy
  302.          ld bc,4
  303.          add hl,bc
  304.          push hl ;bitmap addr+2
  305.         ld b,tpixelrecodeLEFT/256
  306.         ld h,tpixelrecodeRIGHT/256
  307.         exx
  308.         ld a,(setpgs_scr_low)
  309.         SETPG16K
  310.         SHOWBITMAPLINELAYER02_50 ;lx=wid(chr)
  311.          pop iy ;bitmap addr+2
  312.         exx
  313.          pop de ;scr (#c000+)
  314.         exx
  315.         ld a,(setpgs_scr_high)
  316.         SETPG16K
  317.         SHOWBITMAPLINELAYER02_50 ;lx=wid(chr)
  318.         exx
  319.         pop hl ;bitmap addr
  320.         pop af ;pg
  321.         pop de ;scr (#c000+)
  322.         call showbitmapbox_scrlinedown
  323.         call showbitmapbox_linedown2
  324.         exx
  325.         dec l
  326.         jp nz,showbitmapbox_50_lines0
  327.         jp popiy_popbc_showbitmaprightbox
  328.         ;pop iy ;hy=hgt эр ¤ъЁрэх
  329.         ;pop bc ;xy эр ¤ъЁрэх
  330. ;c=x/8 эр ¤ъЁрэх
  331. ;b=y эр ¤ъЁрэх
  332. ;hy=hgt
  333. ;lx=wid(chr)
  334.         ;jp showbitmaprightbox ;фхырхЄ setpgs_scr
  335.  
  336. showbitmapbox_100_lines
  337. ;hy=hgt
  338. ;lx=wid(chr)
  339. ;hl=gfxaddr
  340. ;a=pg
  341.         push iy
  342.          exx
  343.          ld de,8
  344.          ld b,hy
  345.          ld l,b
  346. showbitmapbox_100_lines0
  347.          exx
  348.         push de ;scr (#c000+)
  349.         push af ;pg
  350.         call setpg32k
  351.         push hl ;bitmap addr
  352.          push de ;scr (#c000+)
  353.           push hl ;bitmap addr
  354.           pop iy
  355.          inc hl
  356.          inc hl
  357.          push hl ;bitmap addr+2
  358.         ld b,tpixelrecodeLEFT/256
  359.         ld h,tpixelrecodeRIGHT/256
  360.         exx
  361.         ld a,(setpgs_scr_low)
  362.         SETPG16K
  363.         SHOWBITMAPLINELAYER02_100 ;lx=wid(chr)
  364.          pop iy ;bitmap addr+2
  365.         exx
  366.          pop de ;scr (#c000+)
  367.         exx
  368.         ld a,(setpgs_scr_high)
  369.         SETPG16K
  370.         SHOWBITMAPLINELAYER02_100 ;lx=wid(chr)
  371.         exx
  372.         pop hl ;bitmap addr
  373.         pop af ;pg
  374.         pop de ;scr (#c000+)
  375.         call showbitmapbox_scrlinedown
  376.         call showbitmapbox_linedown
  377.          exx
  378.         dec l
  379.         jp nz,showbitmapbox_100_lines0
  380. popiy_popbc_showbitmaprightbox
  381.         pop iy ;hy=hgt эр ¤ъЁрэх
  382.         pop bc ;xy эр ¤ъЁрэх
  383. ;c=x/8 эр ¤ъЁрэх
  384. ;b=y эр ¤ъЁрэх
  385. ;hy=hgt
  386. ;lx=wid(chr)
  387.         ;jp showbitmaprightbox ;фхырхЄ setpgs_scr
  388.  
  389. showbitmaprightbox
  390. ;c=x/8 эр ¤ъЁрэх
  391. ;b=y эр ¤ъЁрэх
  392. ;hy=hgt
  393. ;lx=wid(chr)
  394.         push bc ;xy
  395.         call setpgs_scr
  396.  
  397.         ld hl,(curbitmapwid_edit)
  398.         ld de,(curbitmapxscroll)
  399.         or a
  400.         sbc hl,de
  401.         call scalebitmapcoords
  402.         pop bc ;xy
  403.        
  404.         ld de,workzonewid8*8
  405.         or a
  406.         sbc hl,de ;т√ўыш °шЁшэє Ёрсюўхщ чюэ√
  407.         ret nc ;тэх ¤ъЁрэр
  408.         ;hl=ьшэєё ьръёшьры№эр  °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх (!=0)
  409.        
  410.         push hl
  411.         add hl,de
  412.         ld de,workzonex8*8
  413.         add hl,de ;hl=x эр ¤ъЁрэх яЁртющ уЁрэшЎ√ сшЄь¤яр
  414.         ex de,hl ;de=x эр ¤ъЁрэх яЁртющ уЁрэшЎ√ сшЄь¤яр
  415.         pop hl ;hl=ьшэєё ьръёшьры№эр  °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх
  416.         ;xor a
  417.         ;sub l
  418.         ;ld l,a
  419.         ;sbc a,h
  420.         ;sub l
  421.         ;ld h,a
  422.         call neghl ;hl=ьръёшьры№эр  °шЁшэр сюъёр яю ¤Єющ x-ъююЁфшэрЄх (!=0)
  423.         push de ;x
  424.         ld de,7 ;ьръёшьєь ёЄюы№ъю яшъёхыхщ фюсрты хЄё  фы  юъЁєуыхэш 
  425.         or a
  426.         sbc hl,de
  427.         add hl,de
  428.         jr c,$+3
  429.         ex de,hl ;тч ыш эршьхэ№°хх шч 7 ш ьръёшьры№эющ °шЁшэ√ сюъёр яю ¤Єющ x-ъююЁфшэрЄх
  430.         ;hl=wid (яюёыхфэшщ яшъёхы№ = x+wid-1)
  431.         pop de ;x
  432.        
  433.         ld a,c ;x/8
  434.         add a,lx ;wid(chr)
  435.         dec a
  436.         ld c,a ;x/8 ёрьюую яЁртюую юЄЁшёютрээюую срщЄр
  437.         push de
  438.         ld a,e
  439.         srl d
  440.         rra
  441.         srl d
  442.         rra
  443.         srl d
  444.         rra
  445.         pop de
  446.         cp c
  447.         ret nz ;эх Ёшёєхь эр яЁртющ уЁрэшЎх
  448.        
  449.         call setpgshapes
  450.        
  451.         ld c,b;30 ;c=y
  452.         ;ld de,50 ;de=x
  453.         ld b,hy;10 ;b=hgt (яюёыхфэшщ яшъёхы№ = y+hgt-1)
  454.         ld lx,backcolor ;lx=color
  455.         jp shapes_prpixelbox
  456.  
  457. showbitmapbox_scrlinedown
  458.         ex de,hl
  459.         ld bc,40
  460.         add hl,bc
  461.         ex de,hl ;scr (#c000+)
  462.         ret
  463.  
  464. showbitmapbox_linedown2
  465.         call showbitmapbox_linedown
  466. showbitmapbox_linedown
  467.         ld bc,(curbitmapwid_view)
  468.         add hl,bc
  469.         bit 6,h
  470.         res 6,h
  471.         ret z
  472.         inc a ;pg
  473.         ret
  474.