/*-----------------------------------------------------------------*/ ; Podprogram: Konwersja liczby całkowitej lub naturalnej ; na postać tekstową, o ew. zadanej szerokości, ; z możliwością wstawienia kropki dziesiętnej ; Autor: Klemens Czajka ; Data: 2025-07-16 ; Argumenty: ; B7 = Liczba Całkowita (Integer) lub Naturalna ; A = format: '000000000t000ckkkkssss0000000+++++*****' ; t=0 - w B7 jest liczba -274877906944..+274877906943 ; t=1 - w B7 jest liczba naturalna 0...549755813887 ; c=0 - przed kropką ma być cyfra, np. +0.23456789012 ; c=1 - przed kropką zbędna cyfra, np. +.123456789012 ; kkkk=0..12 -- pozycja kropki (liczba cyfr po kropce) ; (wartość ograniczana do maksymalnej dopuszczalnej) ; ssss=0..14 -- wymagana szerokość tekstu wynikowego ; (większe liczby będą szersze, ssss>=15 jak 14) ; +++++=znak liczby całkowitej nieujemnej: NU,SP,+ ; znak liczby całkowitej ujemnej zawsze: - ; *****=znak uzupełnienia do szerokości: NU=SP,0,* ; (SP przed znakiem liczby, 0,*,itp. po znaku) ; Wywołanie: ; SKS NumText ;konwersja liczby B7 wg formatu A ; Wyniki: ; (A,B7) = dwa słowa tekstu wynikowego ; (w B7 może być tekst pusty, ale słowo niezerowe) ; B1, B2 zniszczone, reszta odtworzona ; Uwagi: ; --- Używa komórek 0c17572, 0c17573, 0c17576, 0c17577 ; używanych przez program STAŁY ; --- Przed asemblacją należy ustawić wartość symbolu wskazującego ; wymaganą wersję podprogramu: ; NumTxtK EQU 0 ;gdy wystarczy prosta wersja podprogramu ; NumTxtK EQU 1 ;gdy potrzebna wersja z opcjonalną kropką /*-----------------------------------------------------------------*/ ; Dla kkkk=12, jeśli ma być cyfra przed kropką, ; _.123456789012 to należy ustawić: c=1 (bez cyfry przed kropką - podprogram sam to zrobi), ; -.123456789012 ssss=14 (maksymalną szerokość), +++++=NU, *****='0'. ; +.123456789012 Zero pojawi się w wyniku uzupełniania do ssss, ; 0.123456789012 ale tylko wtedy, gdy nie będzie znaku liczby.