Konwersja BCD na ciąg tekstowy
atari8.eu - czas na zabawę!
Opublikowano w przez Lizard
Funkcja BCDTOSTR() autorstwa kolegi Lizard-a przekształca wartości BCD zapisane w bajcie pamięci na kod znaku Ascii.
W przekazywanych do funkcji parametrach podajemy adres tablicy docelowej i źródłowej, ilość bajtów do pobrania z tablicy źródłowej oraz kod Ascii dla znaku rozdzielającego (wartość zerowa wyłącza generowanie znaku). Zwracaną przez funkcję wartością jest adres tablicy docelowej.
CARD FUNC BCD2Str=*(BYTE ARRAY str,bcd BYTE len,delim) ; Lizard
[$A085$A186$A284$A0$0$A4A5$910A$F0A0$A637$F0A5$652F$E9A4$9100
$A2A0$F000$A125$4AA2$4A4A$94A$C830$A091$A2A1$F29$3009$91C8
$A5A0$F0A4$A511$F0A5 $C803$A091$A2E6$2D0$A3E6$A4C6$D710$60]
[$A085$A186$A284$A0$0$A4A5$910A$F0A0$A637$F0A5$652F$E9A4$9100
$A2A0$F000$A125$4AA2$4A4A$94A$C830$A091$A2A1$F29$3009$91C8
$A5A0$F0A4$A511$F0A5 $C803$A091$A2E6$2D0$A3E6$A4C6$D710$60]
Przykład 1: odczyt i wyświetlenie danych z czterobajtowej tablicy 'bcd’ :
PROC Main()
Byte Array bcd=[$12$34$56$78] , str(12)
Byte Pointer sp
sp = BCD2Str(str , bcd , 4 , 0)
PrintE(str)
PrintE(sp)
sp = BCD2Str(str , bcd , 4 , ’.)
PrintE(str)
PrintE(sp)
Return
Przykład 2: odczyt daty rewizji systemu operacyjnego wzięty bezpośrednio z pamięci ROM spod adresu $FFEE:
PROC Info()
Char Array STR(15)
BCD2Str(STR , $FFEE,3 , ’-)
PrintF(” Data rewizji OSROM: %S%E” , STR)
PrintF(” Data rewizji OSROM: %S%E” , STR)
Return