Subversion Repositories pentevo

Rev

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

  1. ; Simple printing module.
  2. ;
  3. ; Copyright (C) 2012 Patrik Rak (patrik@raxoft.cz)
  4. ;
  5. ; This source code is released under the MIT license, see included license.txt.
  6.  
  7.  
  8. printinit:  ld      a,2
  9.             jp      0x1601      ; CHAN-OPEN
  10.  
  11.  
  12. print:      ex      (sp),hl
  13.             call    printhl
  14.             ex      (sp),hl
  15.             ret
  16.  
  17. printhl:
  18. .loop       ld      a,(hl)
  19.             inc     hl
  20.             or      a
  21.             ret     z
  22.             call    printchr
  23.             jr      .loop
  24.  
  25.  
  26. printdeca:  ld      h,a
  27.             ld      b,-100
  28.             call    .digit
  29.             ld      b,-10
  30.             call    .digit
  31.             ld      b,-1
  32.  
  33. .digit      ld      a,h
  34.             ld      l,'0'-1
  35. .loop       inc     l
  36.             add     a,b
  37.             jr      c,.loop
  38.             sub     b
  39.             ld      h,a
  40.             ld      a,l
  41.             jr      printchr
  42.  
  43.  
  44. printcrc:   ld      b,4
  45.  
  46. printhexs:
  47. .loop       ld      a,(hl)
  48.             inc     hl
  49.             call    printhexa
  50.             djnz    .loop
  51.             ret
  52.  
  53.  
  54. printhexa:  push    af
  55.             rrca
  56.             rrca
  57.             rrca
  58.             rrca
  59.             call    .nibble
  60.             pop     af
  61.  
  62. .nibble     or      0xf0
  63.             daa
  64.             add     a,0xa0
  65.             adc     a,0x40
  66.  
  67. printchr:   push    iy
  68.             ld      iy,0x5c3a   ; ERR-NR
  69.             push    de
  70.             push    bc
  71.             exx
  72.             ei
  73.             ; out     (0xff),a
  74.             rst     0x10
  75.             di
  76.             exx
  77.             pop     bc
  78.             pop     de
  79.             pop     iy
  80.             ret
  81.  
  82. ; EOF ;
  83.