/* Program konwersji taśmy PIĄTKOWEJ na THETA lub odwrotnie --*/ ; Asemblacja: ; ustawić ASMPARM (przyciski 9...21 akumulatora): ; - A.bit21 = 0 --> konwersja PIĄTKOWY na THETA ; = 1 --> konwersja THETA na PIĄTKOWY ; - A.bit20 = 0 --> wejście z czytnika PTR0 lub PTR0' ; = 1 --> wejście z czytnika PTR2 lub PTR2' ; Uruchomienie z pulpitu: ; z adresu 17500 ; Wyniki: ; A = różnica symetryczna sumy kontrolnej i zliczonej ; Stop z kodem 0 i nawrotem do ponownego wykonania ; Rejestry robocze: ; A = słowo kodu ; B7 = zliczana suma słów kodu ; B1 - roboczy, licznik pętli ; B6 = roboczy, adres powrotu z podprogramu (ślad) /*------------------------------------------------------------*/ szerWej EQU (ASMPARM & 1) && 8 || 5 ;szer.taśmy wej. szerWyj EQU 13-szerWej ;ile bitów w rządku wyjściowym długWej EQU 40/szerWej ;ile rządków na słowo wejściowe długWyj EQU 40/szerWyj ;ile rządków na słowo wyjściowe urzWej EQU (ASMPARM & 2) + ((szerWej==8) && 8) ;nr PTR urzWyj EQU 5 + ((szerWej==5) && 8) ;nr PTP ;--------------------------------------------------------------- KONWERS BLOK 0c17500 adrSumy EQU 0c17574 ;adres w pilocie sumy kontrolnej B7 = A = 0 ;wyzerowanie słowa A i sumy w B7 szukPil EQU * ;Szukanie pilota A = A << szerWej ;ustawienie V We urzWej ;V bez zmiany; wczytanie rządka SkNV szukPil ;jeśli nie nadmiar to szukać dalej ;A = pilot :000 aaaaa 00000 00 Wy urzWyj ;wypisanie rządka NU przed pilotem SkSB B6,wySłowo ;wypisanie pilota A A - adrSumy ;jeśli to pilot sumy kontrolnej SkR jestSum ; to przepisanie sumy nastSło EQU * ;Po pilocie danych SkSB B6,weSłowo ;wczytanie słowa SkV jestDan ;gdy nadmiar, to słowo danych SkZ brakSum..szukPil ;koniec taśmy, lub pilot jestDan EQU * B7 = A + B7 ;zliczanie sumy kontrolnej słów SkSB B6,wySłowo ..nastSło ;wypisanie słowa, i dalej brakSum EQU * ;Gdy koniec taśmy bez sumy kontrolnej B1 = (długWyj-1) ;licznik rządków Wy urzWyj ;wypisanie rządka NU SkLC B1--,-- ..różnica jestSum EQU * ;Po pilocie sumy kontrolnej SkSB B6,weSłowo ;wczytanie sumy kontrolnej SkSB B6,wySłowo ;wypisanie sumy kontrolnej ; różnica A = A ^ B7 ;różnica symetryczna sum Stop 0 ..KONWERS ;--------------------------------------------------------------- weSłowo EQU * ;Wczytywanie rządków słowa do A B1 = A = (długWej-1) ;śmieć w A zniknie weRząd A = A << szerWej ;ustawienie V We urzWej ;V bez zmiany, ustawienie Z SkLC B1--,weRząd ;V bez zmiany, Z bez zmiany powrót Nic 0 ..B6 ;Powrót z ustawionymi warunkami ;--------------------------------------------------------------- wySłowo EQU * ;Wyprowadzanie rządków słowa A = A >>> 1 ;najmłodszy bit na bit Omega A = A + [jedynka] ;wstawienie jedynki na bit znaku Wy urzWyj ;wyprowadzenie pierwszego rządka A = A <<< 1 ;usunięcie początkowej jedynki A = A + OM ;przywrócenie najmłodszego bitu A = A >>< (39-(szerWyj-1)) ;bity rządka na koniec A B1 = (długWyj-1-1) ;licznik pozostałych rządków wyRząd EQU * Wy urzWyj ;wyprowadzenie rządka A = A >>< (39-szerWyj) ;przesunięcie go na koniec A SkLC B1--,wyRząd ..powrót jedynka :400 00000 00000 00 ;jedynka na bicie znaku ;--------------------------------------------------------------- Koniec ---