?login_element?

Subversion Repositories NedoOS

Rev

Rev 518 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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&0xffff
  27.         call prnumdword0
  28.         exx
  29.         ld bc,100000000/65536
  30.         exx
  31.         ld bc,100000000&0xffff
  32.         call prnumdword0
  33.         exx
  34.         ld bc,10000000/65536
  35.         exx
  36.         ld bc,10000000&0xffff
  37.         call prnumdword0
  38.         exx
  39.         ld bc,1000000/65536
  40.         exx
  41.         ld bc,1000000&0xffff
  42.         call prnumdword0
  43.         exx
  44.         ld bc,100000/65536
  45.         exx
  46.         ld bc,100000&0xffff
  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. ;hx=color %33210210
  94. ;lx=background color %33210210
  95. ;hl=scr
  96. ;de=text
  97.         SHAPESPROC shapes_prtext48ega
  98. prtext48ega0
  99.         ld a,(de)
  100.         or a
  101.         ret z
  102.         call shapes_prchar48ega
  103.         inc de
  104.         jp prtext48ega0
  105.        
  106.         SHAPESPROC shapes_prchar48ega
  107. ;a=char
  108. ;hl=scr
  109.         push de
  110.         ld e,a
  111.         ld d,font48/256
  112.         push hl
  113.         push iy
  114.         ld hy,8
  115. ;lx=background color %33210210
  116. ;hx=color %33210210
  117. ;de=font char
  118. ;hl=screen
  119. prchar48ega_hxoncolor0
  120.         ld b,hx
  121.         ld a,(de)
  122.         ld c,a
  123.         ld a,lx
  124.         rl c
  125.         jr nc,$+2+4
  126.          xor b
  127.          and 0xb8;%10111000
  128.          xor b
  129.         rl c
  130.         jr nc,$+2+4
  131.          xor b
  132.          and 0x47;%01000111
  133.          xor b
  134.         ld (hl),a
  135.         set 6,h
  136.         ld a,lx
  137.         rl c
  138.         jr nc,$+2+4
  139.          xor b
  140.          and 0xb8;%10111000
  141.          xor b
  142.         rl c
  143.         jr nc,$+2+4
  144.          xor b
  145.          and 0x47;%01000111
  146.          xor b
  147.         ld (hl),a
  148.         inc d
  149.         ld bc,+(40-0x4000)
  150.         add hl,bc
  151.         dec hy
  152.         jp nz,prchar48ega_hxoncolor0
  153.         pop iy
  154.         pop hl
  155.         pop de
  156.         ld a,h
  157.         xor 0x20
  158.         ld h,a
  159.         and 0x20
  160.         ret nz
  161.         inc hl
  162.         ret
  163.  
  164.         SHAPESPROC shapes_prnum
  165. ;de=scr
  166. ;hl=num
  167.         ;ld bc,prchar48ega_whiteoncolor
  168.         ;ld (prchar48ega_colorproc),bc
  169.         ld bc,1000
  170.         call prdig
  171.         ld bc,100
  172.         call prdig
  173.         ld bc,10
  174.         call prdig
  175.         ld bc,1
  176. prdig
  177. ;bc=digit
  178.         ld a,'0'-1
  179. prdig0
  180.         inc a
  181.         or a
  182.         sbc hl,bc
  183.         jr nc,prdig0
  184.         add hl,bc
  185.         ;ld a,(hl)
  186.         ex de,hl
  187.         call shapes_prchar48ega
  188.         ex de,hl
  189.         ret
  190.        
  191.        
  192.         SHAPESPROC shapes_prNN
  193. ;de=scr
  194. ;hl=num =a
  195.         ld h,0
  196.         ld l,a
  197.         ;ld bc,prchar48ega_whiteoncolor
  198.         ;ld (prchar48ega_colorproc),bc
  199.         ld bc,10
  200.         call prdigNN
  201.         ld bc,1
  202. prdigNN
  203. ;bc=digit
  204.         ld a,'0'-1
  205. prdigNN0
  206.         inc a
  207.         or a
  208.         sbc hl,bc
  209.         jr nc,prdigNN0
  210.         add hl,bc
  211.         ;ld a,(hl)
  212.         ex de,hl
  213.         call shapes_prchar48ega
  214.         ex de,hl
  215.         ret
  216.        
  217.         SHAPESPROC shapes_prNchars
  218. ;hl=scr
  219. ;de=text
  220. ;a=Nchars
  221.         ;ld bc,prchar48ega_whiteoncolor
  222.         ;ld (prchar48ega_colorproc),bc
  223.         ld b,a
  224. prNchars0
  225.         push bc
  226.         ld a,(de)
  227.         inc de
  228.         call shapes_prchar48ega
  229.         pop bc
  230.         djnz prNchars0
  231.         ret
  232.        
  233.         SHAPESPROC shapes_prhexbyte
  234. ;ld a,0x30;a=0x30 - 0,1,2..9 0x41 - A,B,C,D,E,F 0x61 - a,b,c..
  235. ;a=XX
  236. ;lx=color %33210210
  237. ;hl=scr
  238.         ;push hl
  239.         ;ld hl,prchar48ega_white7oncolor
  240.         ;ld (prchar48ega_colorproc),hl
  241.         ;pop hl
  242.         ;push hl
  243.         ;push af
  244.         rrca
  245.         rrca
  246.         rrca
  247.         rrca
  248.         call pronehexdigit
  249.         rlca
  250.         rlca
  251.         rlca
  252.         rlca
  253.         ;call pronehexdigit
  254.         ;pop af
  255.         ;pop hl
  256.         ;ret
  257. pronehexdigit
  258. ;a=?X
  259.         push bc
  260.         push af
  261.         and 0xf
  262.         cp 10
  263.         jr c,prcharbit_noletter
  264.         add a,'a'-('0'+10)
  265. prcharbit_noletter
  266.         add a,'0'
  267.         call shapes_prchar48ega
  268.         pop af
  269.         pop bc
  270.         ret
  271.        
  272. prspr88ega
  273. ;lx=background color %33210210
  274. ;hx=color %33210210
  275. ;de=gfx
  276. ;hl=scr
  277.         push hl
  278.         push hl
  279.         call prspr88ega_column
  280.         pop hl
  281.         set 6,h
  282.         call prspr88ega_column
  283.         pop hl
  284.         set 5,h
  285.         push hl
  286.         call prspr88ega_column
  287.         pop hl
  288.         set 6,h
  289.         ;call prspr88ega_column
  290. prspr88ega_column
  291.         push iy
  292.         ld hy,8
  293. prspr88ega1
  294.         ld b,hx
  295.         ld a,(de)
  296.         ld c,a
  297.         ld a,lx
  298.         rl c
  299.         jr nc,$+2+4
  300.          xor b
  301.          and 0xb8;%10111000
  302.          xor b
  303.         rl c
  304.         jr nc,$+2+4
  305.          xor b
  306.          and 0x47;%01000111
  307.          xor b
  308.         ld (hl),a
  309.         inc de
  310.         ld bc,+40
  311.         add hl,bc
  312.         dec hy
  313.         jr nz,prspr88ega1
  314.         pop iy
  315.         ret