/*----- Podprogram drukowania tekstu T7 z pamięci operacyjnej -- // pozostawiając stale tryb małych liter // UWAGA: Zdefiniuj drukTNL na wymaganą wersję końca linii /N: // drukTNL EQU 2'/R/N' albo 2'/R' albo 2'/N' // Argumenty: // B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury // B2 = adres tekstu w standardowym formacie, 0 na końcu // Wywołanie: // SKS drukT7 ;argumenty w drukTNL,B7,B2 // Wyniki: // B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury // B2 = adres zera kończącego tekst // B1 = -1 = 0c17777 // A - zniszczony, reszta odtworzona // Podprogramy: // drukT7A /*------------------------------------------------------------*/ drukT7 :726 0, *+2, 0 ;ślad #dT7p NIC 0 ..B6 ;skok przez B6 ;------ [0c17577] = B6 #dT7a A = [B2] ;słowo z pamięci SKZ #dT7b ;powrót gdy słowo zerowe SKSB B6,drukT7A ;wydruk słowa SKLC B2++,#dT7a ;adres następnego słowa #dT7b B6 = [0c17577] ..drukT7 ;------ Koniec drukT7 ---------------------------------------*/ /*----- Podprogram drukowania słowa tekstu T7 z akumulatora ---- // Argumenty: // B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury // A = słowo tekstowe w standardowym formacie 1234567n // B1 = liczba n znaków do wydrukowania (tylko drukT7B) // Wywołanie: // SKSB B6,drukT7A ;argumenty w drukTNL,B7,A // lub SKSB B6,drukT7B ;argumenty w drukTNL,B7,A,B1 // Wyniki: // B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury // B1 = -1 = 0c17777 // A - zniszczony, reszta odtworzona // Podprogramy: // brak /*------------------------------------------------------------*/ drukT7A A = A >>< 22 ;pobranie n do B1 B1 = A & 7 A = A >>< 17 drukT7B SKNLC B1--,#dT7p ;druk B1 znaków i powrót po B6 A = A >>< 19 ;bity pocztu znaku do skali 20 [0c17576] = A A = A & 0b110 B7 = A + B7 ;bity: (nowy,stary) poczet A = [#dT7k+B7] ;kody zmiany pocztu SKNU #dT7k+8 ;bez zmiany WY 6 ;pierwszy kod A = A <<< 5 SKNU #dT7k+8 ;bez drugiego kodu WY 6 ..#dT7k+8 ;drugi kod #dT7k DS ( 2'/L')k4+(0)k26 ; abc -> Abc DS (2'/L/L')k9+(0)k26 ; 123 -> Abc DS ( 2'/F')k4+(1)k26 ; abc -> 123 DS ( 0)k4+(1)k21 ; 123 -> 123 DS ( 0)k4+(0)k21 ; abc -> abc DS ( 2'/L')k4+(0)k26 ; 123 -> abc DS (2'/F/F')k9+(1)k26 ; abc -> Ą23 DS ( 2'/F')k4+(1)k26 ; 123 -> Ą23 B7 = A & 1 ;nowy poczet A = [0c17576] AIF drukTNL == 2'/R/N' ;jeśli jako /N ma być (CR,LF) A & [#dT7n] ;gdy /N - konwersja na (CR,LF) SKNZ #dT7n+2 A = [#dT7n+1] ;konwersja /N na /R/N WY 6 A = [0c17576] ..#dT7n+2 #dT7n DS 0b11101k25 (2'/R')k4 AELIF drukTNL == 2'/R' ;jeśli jako /N ma być (CR) A & [#dT7n] ;gdy /N - konwersja na (CR) SKNZ #dT7n+2 A = A + [#dT7n+1] ..#dT7n+2 #dT7n DS 0b11101k25 (2'/R'-2'/N')k25 AELSE ;jeśli /N ma pozostać bez zmiany ;/N pozostaje jako (LF) AFI A = A >>< 18 WY 6 ;znak A = A <<< 5 ..drukT7B ;------ Koniec drukT7A ---------------------------------------*/ KONIEC ---