?login_element?

Subversion Repositories NedoOS

Rev

Rev 1509 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. prdword_dehl ;для печати на экран
  2. ;dehl=num
  3.         ld bc,prdwordbuf
  4.         push bc
  5.         call prdword_dehl_tobc
  6.         pop de
  7.         ld hl,10
  8.         jp sendchars
  9.  
  10. prdword_dehl_tobc ;для печати в буфер
  11. ;dehl=num
  12. ;bc=buf
  13.         push de
  14.         push hl
  15.         exx
  16.         pop iy
  17.         pop hl ;hliy=num ;bc'=buf addr
  18.         ld a,' '
  19.         ld (prnumdwordcmd_zero_sym),a
  20.         ld a,h
  21.         or l
  22.         jr z,prdword_skiphsw
  23.         ld bc,+(-1000000000>>16)
  24.         ld de,+(-1000000000&0xffff)
  25.         call prdig32bit
  26.         ld bc,+(-100000000>>16)
  27.         ld de,+(-100000000&0xffff)
  28.         call prdig32bit
  29.         ld bc,+(-10000000>>16)
  30.         ld de,+(-10000000&0xffff)
  31.         call prdig32bit
  32.         ld  c,+(-1000000>>16)
  33.         ld de,+(-1000000&0xffff)
  34.         call prdig32bit
  35.         ld  c,+(-100000>>16)
  36.         ld de,+(-100000&0xffff)
  37.         call prdig32bit
  38.         jp _prword_hliy
  39.  
  40. prword_hl_tobc ;для печати в буфер
  41. ;hl=num
  42. ;bc=buf
  43.         push hl
  44.         exx
  45.         pop iy
  46.         ld a,' '
  47.         ld (prnumdwordcmd_zero_sym),a
  48.         ld hl,0
  49.         jr _prword_hliy ;hliy=num ;bc'=buf addr
  50. prdword_skiphsw
  51.         call prnumdwordcmd_azero
  52.         call prnumdwordcmd_azero_a
  53.         call prnumdwordcmd_azero_a
  54.         call prnumdwordcmd_azero_a
  55.         call prnumdwordcmd_azero_a
  56. _prword_hliy ;hliy=num ;bc'=buf addr
  57.         ld bc,+(-10000>>16)
  58.         ld de,+(-10000&0xffff)
  59.         call prdig32bit
  60.         push iy
  61.         pop hl
  62. ;hl=num
  63. ;bc'=buf addr
  64.         ld bc,+(-1000&0xffff)
  65.         call prdig16bit
  66.         ld bc,+(-100&0xffff)
  67.         call prdig16bit
  68.         ld  c,+(-10&0xff)
  69.         call prdig16bit
  70.         ld a,l
  71.         add a,'0'
  72.         exx
  73.         ld (bc),a
  74.         inc bc
  75.         ret
  76. prdig16bit
  77. ;hl=num
  78. ;bc=-divisor
  79. ;bc'=buf addr
  80.         ld a,'0'-1
  81. prdig16bit0
  82.         inc a
  83.        add hl,bc
  84.         jp c,prdig16bit0
  85.        sbc hl,bc
  86. prdword_digok
  87.         cp '0'
  88.         jr z,prnumdwordcmd_azero
  89.         exx
  90.         ld (bc),a
  91.         inc bc
  92.         exx
  93.         ld a,0x02 ;"ld (bc),a"
  94.         ld (prnumdwordcmd_zero_ldbca),a ;все последующие нули видимые
  95.         ld a,'0'
  96.         ld (prnumdwordcmd_zero_sym),a ;все последующие нули печатаем не пробелом, а нулём
  97.         ret
  98. prnumdwordcmd_azero ;печать нуля
  99. prnumdwordcmd_zero_sym=$+1
  100.         ld a,' '
  101. prnumdwordcmd_azero_a
  102.         exx
  103. prnumdwordcmd_zero_ldbca=$ ;0: для вывода размера файла (не портит содержимое буфера под незначащими нулями) ;0x02 "ld (bc),a": для вывода files, size
  104.         ld (bc),a
  105.         inc bc
  106.         exx
  107.         ret  
  108. prdig32bit
  109. ;hliy=num
  110. ;bcde=-divisor
  111. ;bc'=buf addr
  112.         ld a,'0'-1
  113. prdig32bit0
  114.         inc a
  115.        add iy,de
  116.        adc hl,bc
  117.         jp c,prdig32bit0
  118.        ex af,af' ;'
  119.        ld a,ly
  120.        sub e
  121.        ld ly,a
  122.        ld a,hy
  123.        sbc a,d
  124.        ld hy,a
  125.        sbc hl,bc
  126.        ex af,af' ;'
  127.         jp prdword_digok
  128.  
  129. prdwordbuf
  130.         db "1234567890"
  131.