User Tools

Site Tools


playground:playground

This is an old revision of the document!


;I have slight modified the Macie's routine that is for 3 digits decimal number. ;this routine converts 5 digits decimal number (range 0-65535) to equivalent hex number.

              !to "dec2hex.prg",cbm
  • =$0810

lda #0 sta lores ;result byteLo

	sta hires	;result byteHi

lda numA ;load units and tens byte

	and #$0f	;store
	sta lores 	;units nibble
              lda numA	;tens nibble
	lsr			
	lsr

lsr

	lsr
	sta addr1+1	;put tens nibble after ldx in adder subroutine
 	lda #$0a	;put 10 after adc opcode in adder subroutine

sta addr2+1

	lda #$0		;2 byte addition
	sta addr3+1
	jsr addr1	
	lda numB	;load handreds and miles byte
	pha
	and #$0f		
	sta addr1+1	;put hundreds nibble after ldx...
	lda #$64	;put 100 ($64) after adc opcode... 

sta addr2+1

	lda #$0
	sta addr3+1
	jsr addr1
	pla
	lsr
	lsr
	lsr
	lsr
	sta addr1+1     ;put thousands nibble after ldx...
	lda #$e8	;add 1000, first add lobyte $e8
	sta addr2+1
	lda #$03	;...after add hibyte $03
	sta addr3+1
	jsr addr1
	lda numC	;load tens of thousands
	and #$0f
	sta addr1+1	;add 10000 ($2710)
	lda #$10
	sta addr2+1
	lda #$27
	sta addr3+1
	jsr addr1
	rts

;adder subroutine

      addr1   ldx #00		;numbers of additions
	clc
      loop	lda lores
      addr2	adc #00		;$a, $64; $e8, $10
	sta lores
	lda hires
      addr3	adc #00		;$0, $03, $27
	sta hires
	dex
	bne loop
	rts
			;for 65535	
  numA 	!byte 00	;numA=35 
  numB 	!byte 00	;numB=55
  numC 	!byte 00	;numC=06
  lores	!byte 00		
  hires 	!byte 00		
playground/playground.1454884498.txt.gz · Last modified: 2016-02-07 23:34 by matt