Subversion Repositories NedoOS

Rev

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

  1. ;font48 = 256 aligned vertical 2K
  2.  
  3.         SHAPESPROC shapes_prtext_num
  4. ;яхўрЄрхЄ эр ¤ъЁрэх hl ЄхъёЄ (de), яюЄюь ўшёыю bc, яхЁхтюфшЄ рфЁхё ¤ъЁрэр эр 8 ёЄЁюъ тэшч, de эр ёыхфє■∙шщ ЄхъёЄ (яюёых ЄхЁьшэрЄюЁр)
  5.         push hl
  6.         push bc
  7.         call shapes_prtext48ega_oncolor
  8.         ex de,hl
  9.         ex (sp),hl
  10.         call shapes_prnum
  11.         pop de
  12.         inc de ;яЁюяєёърхь ЄхЁьшэрЄюЁ ёЄЁюъш
  13.         pop hl
  14.         ld bc,40*8
  15.         add hl,bc ;next screen chr line
  16.         ret
  17.  
  18.         SHAPESPROC shapes_prnumdword        
  19. ;de=scr
  20. ;hl'hl=num
  21.         ld a,' '
  22.         ld (prnumdword_zero),a
  23.         exx
  24.         ld bc,1000000000/65536
  25.         exx
  26.         ld bc,1000000000&#ffff
  27.         call prnumdword0
  28.         exx
  29.         ld bc,100000000/65536
  30.         exx
  31.         ld bc,100000000&#ffff
  32.         call prnumdword0
  33.         exx
  34.         ld bc,10000000/65536
  35.         exx
  36.         ld bc,10000000&#ffff
  37.         call prnumdword0
  38.         exx
  39.         ld bc,1000000/65536
  40.         exx
  41.         ld bc,1000000&#ffff
  42.         call prnumdword0
  43.         exx
  44.         ld bc,100000/65536
  45.         exx
  46.         ld bc,100000&#ffff
  47.         call prnumdword0
  48.         exx
  49.         ld bc,0
  50.         exx
  51.         ld bc,10000
  52.         call prnumdword0
  53.         ld bc,1000
  54.         call prnumdword0
  55.         ld bc,100
  56.         call prnumdword0
  57.         ld bc,10
  58.         call prnumdword0
  59.         ld a,'0'
  60.         ld (prnumdword_zero),a
  61.         ld bc,1
  62. prnumdword0
  63. ;bc=digit
  64.         ld a,'0'-1
  65. prnumdword1
  66.         inc a
  67.         or a
  68.         sbc hl,bc
  69.         exx
  70.         sbc hl,bc
  71.         exx
  72.         jr nc,prnumdword1
  73.         add hl,bc
  74.         exx
  75.         adc hl,bc
  76.         exx
  77.         ex de,hl
  78.         cp '0'
  79.         jr nz,prnumdword_nozero
  80. prnumdword_zero=$+1
  81.         ld a,' '
  82.         jr prnumdword_nozeroq
  83. prnumdword_nozero
  84.         push af
  85.         ld a,'0'
  86.         ld (prnumdword_zero),a
  87.         pop af
  88. prnumdword_nozeroq
  89.         call shapes_prchar48ega
  90.         ex de,hl
  91.         ret        
  92.  
  93.         SHAPESPROC shapes_prtext48ega_black
  94. ;lx=color %33210210
  95. ;hl=scr
  96. ;de=text
  97.         ld bc,prchar48ega_black
  98.         jr prtext48egago
  99.         SHAPESPROC shapes_prtext48ega_oncolor
  100. ;lx=color %33210210
  101. ;hl=scr
  102. ;de=text
  103.         ld bc,prchar48ega_whiteoncolor
  104.         jr prtext48egago
  105.         SHAPESPROC shapes_prtext48ega
  106. ;hl=scr
  107. ;de=text
  108.         ld bc,prchar48ega_white
  109. prtext48egago
  110.         ld (prchar48ega_colorproc),bc
  111. prtext48ega0
  112.         ld a,(de)
  113.         or a
  114.         ret z
  115.         call shapes_prchar48ega
  116.         inc de
  117.         jp prtext48ega0
  118.        
  119.         SHAPESPROC shapes_prchar48ega
  120. ;a=char
  121. ;hl=scr
  122.         push de
  123.         ld e,a
  124.         ld d,font48/256
  125.         push hl
  126.         ld b,+((40-0x4000)&0xff00)/256
  127.         ld hx,8
  128. prchar48ega_colorproc=$+1
  129.         call prchar48ega_white
  130.         pop hl
  131.         pop de
  132.         ld a,h
  133.         xor #20
  134.         ld h,a
  135.         and #20
  136.         ret nz
  137.         inc hl
  138.         ret
  139.  
  140.         SHAPESPROC shapes_prnum
  141. ;de=scr
  142. ;hl=num
  143.         ld bc,prchar48ega_whiteoncolor
  144.         ld (prchar48ega_colorproc),bc
  145.         ld bc,1000
  146.         call prdig
  147.         ld bc,100
  148.         call prdig
  149.         ld bc,10
  150.         call prdig
  151.         ld bc,1
  152. prdig
  153. ;bc=digit
  154.         ld a,'0'-1
  155. prdig0
  156.         inc a
  157.         or a
  158.         sbc hl,bc
  159.         jr nc,prdig0
  160.         add hl,bc
  161.         ;ld a,(hl)
  162.         ex de,hl
  163.         call shapes_prchar48ega
  164.         ex de,hl
  165.         ret
  166.        
  167.        
  168.         SHAPESPROC shapes_prNN
  169. ;de=scr
  170. ;hl=num =a
  171.         ld h,0
  172.         ld l,a
  173.         ld bc,prchar48ega_whiteoncolor
  174.         ld (prchar48ega_colorproc),bc
  175.         ld bc,10
  176.         call prdigNN
  177.         ld bc,1
  178. prdigNN
  179. ;bc=digit
  180.         ld a,'0'-1
  181. prdigNN0
  182.         inc a
  183.         or a
  184.         sbc hl,bc
  185.         jr nc,prdigNN0
  186.         add hl,bc
  187.         ;ld a,(hl)
  188.         ex de,hl
  189.         call shapes_prchar48ega
  190.         ex de,hl
  191.         ret
  192.        
  193.         SHAPESPROC shapes_prNchars
  194. ;hl=scr
  195. ;de=text
  196. ;a=Nchars
  197.         ld bc,prchar48ega_whiteoncolor
  198.         ld (prchar48ega_colorproc),bc
  199.         ld b,a
  200. prNchars0
  201.         push bc
  202.         ld a,(de)
  203.         inc de
  204.         call shapes_prchar48ega
  205.         pop bc
  206.         djnz prNchars0
  207.         ret
  208.        
  209.         SHAPESPROC shapes_prhexbyte
  210. ;ld a,#30;a=#30 - 0,1,2..9 #41 - A,B,C,D,E,F #61 - a,b,c..
  211. ;a=XX
  212. ;lx=color %33210210
  213. ;hl=scr
  214.         push hl
  215.         ld hl,prchar48ega_white7oncolor
  216.         ld (prchar48ega_colorproc),hl
  217.         pop hl
  218.         ;push hl
  219.         ;push af
  220.         rrca
  221.         rrca
  222.         rrca
  223.         rrca
  224.         call pronehexdigit
  225.         rlca
  226.         rlca
  227.         rlca
  228.         rlca
  229.         ;call pronehexdigit
  230.         ;pop af
  231.         ;pop hl
  232.         ;ret
  233. pronehexdigit
  234. ;a=?X
  235.         push bc
  236.         push af
  237.         and #f
  238.         cp 10
  239.         jr c,prcharbit_noletter
  240.         add a,'a'-('0'+10)
  241. prcharbit_noletter
  242.         add a,'0'
  243.         call shapes_prchar48ega
  244.         pop af
  245.         pop bc
  246.         ret
  247.        
  248.        
  249. prchar48ega_black
  250. prchar48ega_black0
  251.         ld a,(de)
  252.         ld c,a
  253.         ld a,(hl)
  254.         rl c
  255.         jr nc,$+4
  256.         and %10111000
  257.         rl c
  258.         jr nc,$+4
  259.         and %01000111
  260.         ld (hl),a
  261.         set 6,h
  262.         ld a,(hl)
  263.         rl c
  264.         jr nc,$+4
  265.         and %10111000
  266.         rl c
  267.         jr nc,$+4
  268.         and %01000111
  269.         ld (hl),a
  270.         inc d
  271.         ld c,+(40-#4000)&#ff
  272.         add hl,bc
  273.         dec hx
  274.         jp nz,prchar48ega_black0
  275.         ret
  276.        
  277. prchar48ega_white
  278. prchar48ega_white0
  279.         ld a,(de)
  280.         ld c,a
  281.         ld a,(hl)
  282.         rl c
  283.         jr nc,$+4
  284.         or %01000111
  285.         rl c
  286.         jr nc,$+4
  287.         or %10111000
  288.         ld (hl),a
  289.         set 6,h
  290.         ld a,(hl)
  291.         rl c
  292.         jr nc,$+4
  293.         or %01000111
  294.         rl c
  295.         jr nc,$+4
  296.         or %10111000
  297.         ld (hl),a
  298.         inc d
  299.         ld c,+(40-#4000)&#ff
  300.         add hl,bc
  301.         dec hx
  302.         jp nz,prchar48ega_white0
  303.         ret
  304.  
  305. prchar48ega_whiteoncolor
  306. ;lx=color %33210210
  307. prchar48ega_whiteoncolor0
  308.         ld a,(de)
  309.         ld c,a
  310.         ld a,lx
  311.         rl c
  312.         jr nc,$+4
  313.         or %01000111
  314.         rl c
  315.         jr nc,$+4
  316.         or %10111000
  317.         ld (hl),a
  318.         set 6,h
  319.         ld a,lx
  320.         rl c
  321.         jr nc,$+4
  322.         or %01000111
  323.         rl c
  324.         jr nc,$+4
  325.         or %10111000
  326.         ld (hl),a
  327.         inc d
  328.         ld c,+(40-#4000)&#ff
  329.         add hl,bc
  330.         dec hx
  331.         jp nz,prchar48ega_whiteoncolor0
  332.         ret
  333.  
  334. prchar48ega_white7oncolor
  335. ;lx=color %33210210
  336. prchar48ega_white7oncolor0
  337.         ld a,(de)
  338.         ld c,a
  339.         ld a,lx
  340.         rl c
  341.         jr nc,$+4
  342.         or %00000111
  343.         rl c
  344.         jr nc,$+4
  345.         or %00111000
  346.         ld (hl),a
  347.         set 6,h
  348.         ld a,lx
  349.         rl c
  350.         jr nc,$+4
  351.         or %00000111
  352.         rl c
  353.         jr nc,$+4
  354.         or %00111000
  355.         ld (hl),a
  356.         inc d
  357.         ld c,+(40-#4000)&#ff
  358.         add hl,bc
  359.         dec hx
  360.         jp nz,prchar48ega_white7oncolor0
  361.         ret
  362.