; Fil: BINTOHEX.ASM ; Av: Kristoffer Eriksson, "SKE" <5357>, 1986. ; ;-Ver--/-Datum----/-Sign-/-Kommentar---------------------------------- ; 1.00 / 86-08-21 / SKE / BINTOHEX ; ; En liten rutin som omvandlar en str{ng med bin{ra data till en annan str{ng ; med hexsiffror. Tv} hexsiffror per byte. I HL returneras en 16-bittars summa ; av bin{rdatat. Anv{nds i FILTOHEX-programmet. ; Kompileras till POKE, relativ POKE elle relativ str{ng. ; Nedan anv{nds HL som m}lpekare, och DE som k{llpekare. Start: LD HL,0 ; VAROOT(Bin{rstr{ng$) INC HL INC HL LD E,(HL) ; DE <- Pekare till bin{rstr{ng. INC HL LD D,(HL) INC HL LD C,(HL) ; BC <- L{ngd av bin{rstr{ngen. INC HL LD B,(HL) LD HL,0 ; VAROOT(M}lstr{ng$) INC HL INC HL LD A,(HL) ; HL <- M}ladress INC HL PUSH HL LD H,(HL) LD L,A PUSH HL EXX LD HL,0 ; Kontrollsummastart. EXX NextByte: LD A,C OR B JR Z,Avsluta LD A,(DE) EXX LD E,A LD D,0 ADD HL,DE ; \ka p} kontrollsumman. EXX RRC A ; Skifta ned den h|ga nibblen. RRC A RRC A RRC A CALL PutDig ; H|ga hexsiffran. LD A,(DE) CALL PutDig ; L}ga hexsiffran. INC DE DEC BC JR NextByte Avsluta: POP DE AND A SBC HL,DE ; Ber{kna resultatets l{ngd. EX DE,HL POP HL INC HL LD (HL),E ; Lagra resultatets l{ngd i str{ng- INC HL ; huvudet. LD (HL),D EXX ; Kontrollsumman i HL returneras. RET ;* Omvandlar l}g nibble i A till en HEX-siffra, och placerar de i utstr{ngen. ;* PutDig: AND 15 ADD '0' CP '9'+ 1 JR C,PutPut ADD 'A'-'9'-1 PutPut: LD (HL),A INC HL RET