home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1993 August / 64er_Magazin_93-08_1993_Markt__Technik_de_Side_B.d64 / dez-16bit.asc < prev    next >
Text File  |  2022-10-26  |  2KB  |  85 lines

  1.          *= $1000
  2. ;---------------------------------------
  3. ;Diese Funktion wandelt ein
  4. ;'16-bit unsigned word' (vorzeichenlose
  5. ;16-Bit-Zahl im Bereich von 0 bis 65535)
  6. ;das im x- und y-Register uebergeben
  7. ;wird (x=Low-Byte, y=High-Byte) in
  8. ;einen Dezimalstring, der an der
  9. ;Adresse angelegt wird, auf die der
  10. ;pointer ($fc/$fd) weisst ($fc=lo-byte,
  11. ;$fd=hi-byte).
  12. ;Die Funktion wird mit "jsr dez" auf-
  13. ;gerufen.
  14.  
  15. ;               (w) 1992 Benjamin Bommer
  16. ;---------------------------------------
  17. dez      stx dl1     ;word puffern
  18.          sty dh1
  19.  
  20.          ldy #4      ;bereich mit
  21.          lda #$30    ;"00000" loeschen
  22. delp     sta ($fc),y
  23.          dey
  24.          bpl delp
  25.  
  26.          lda #<dtab  ;pointer auf
  27.          sta $fe     ;tabelle in ($fe)
  28.          lda #>dtab
  29.          sta $ff
  30.  
  31. dn0      ldx dh1     ;oberstes bit ge-
  32.          bpl dn1     ;setzt ?
  33.  
  34.          ldy #4      ;wenn ja, addiere
  35.          clc         ;wert aus tabelle
  36. dr0      lda ($fc),y
  37.          adc ($fe),y
  38.          cmp #$3a
  39.          bcc dr1
  40.          sbc #10
  41. dr1      sta ($fc),y
  42.          dey
  43.          bpl dr0
  44.  
  45. dn1      lda $fe    ;tabellen-pointer
  46.          clc        ;hochsetzen
  47.          adc #5
  48.          sta $fe
  49.          bcc dn4
  50.          inc $ff
  51.  
  52. dn4      asl dl1    ;das word wird um
  53.          rol dh1    ;ein bit nach links
  54.                     ;geshiftet.
  55.  
  56.          ora dl1    ;durch diese ver-
  57.          bne dn0    ;knuepfung wird ge-
  58.                     ;prueft ob ueber-
  59.                     ;haupt noch ein bit
  60.                     ;im word gesetzt ist
  61.                     ;.. wenn nicht:
  62.  
  63.          rts        ;ruecksprung
  64.  
  65. dtab     .byte 3,2,7,6,8 ;2^15
  66.          .byte 1,6,3,8,4 ;2^14
  67.          .byte 0,8,1,9,2 ;
  68.          .byte 0,4,0,9,6 ;.
  69.          .byte 0,2,0,4,8 ;.
  70.          .byte 0,1,0,2,4 ;.
  71.          .byte 0,0,5,1,2
  72.          .byte 0,0,2,5,6 ;2^8
  73.          .byte 0,0,1,2,8
  74.          .byte 0,0,0,6,4 ;.
  75.          .byte 0,0,0,3,2 ;.
  76.          .byte 0,0,0,1,6 ;.
  77.          .byte 0,0,0,0,8 ;
  78.          .byte 0,0,0,0,4 ;2^2
  79.          .byte 0,0,0,0,2 ;2^1
  80.          .byte 0,0,0,0,1 ;2^0
  81.  
  82. dl1      .byte 0
  83. dh1      .byte 0
  84.  
  85.