/*----- Podprogram drukowania tekstu T6 z pamięci operacyjnej -- // pozostawiając stale tryb wielkich lub 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=litery, 1k21=figury // B2 = adres tekstu w standardowym formacie, 0 na końcu // Wywołanie: // SKS drukT6 ;argumenty w drukTNL,B7,B2 // Wyniki: // B7 = aktualny poczet: 0k21=litery, 1k21=figury // B2 = adres zera kończącego tekst // B1 = -1 = 0c17777 // A - zniszczony, reszta odtworzona // Podprogramy: // drukT6A /*------------------------------------------------------------*/ drukT6 :726 0, *+2, 0 ;ślad #dT6p NIC 0 ..B6 ;skok przez B6 ;------ [0c17577] = B6 #dT6a A = [B2] ;słowo z pamięci SKZ #dT6b ;powrót gdy słowo zerowe SKSB B6,drukT6A ;wydruk słowa SKLC B2++,#dT6a ;adres następnego słowa #dT6b B6 = [0c17577] ..drukT6 ;------ Koniec drukT6 ---------------------------------------*/ /*----- Podprogram drukowania słowa tekstu T6 z akumulatora ---- // Argumenty: // B7 = aktualny poczet: 0k21=litery, 1k21=figury // A = słowo tekstowe w standardowym formacie 1234567n // B1 = liczba n znaków do wydrukowania (tylko drukT6B) // Wywołanie: // SKSB B6,drukT6A ;argumenty w drukTNL,B7,A // lub SKSB B6,drukT6B ;argumenty w drukTNL,B7,A,B1 // Wyniki: // B7 = aktualny poczet: 0k21=litery, 1k21=figury // B1 = -1 = 0c17777 // A - zniszczony, reszta odtworzona // Podprogramy: // brak /*------------------------------------------------------------*/ drukT6A A = A >>< 22 ;pobranie n do B1 B1 = A & 7 A = A >>< 17 drukT6B SKNLC B1--,#dT6p ;druk B1 znaków i powrót po B6 A = A >>< 21 ;bit pocztu znaku do skali 21 [0c17576] = A A = A & 1 A ^ B7 ;czy zmiana pocztu SKZ #dT6k+2 ;nie A = [#dT6k+B7] ;pobranie kodu zmiany pocztu WY 6 ;i wydrukowanie go B7 = A & 1 ;nowy poczet A = [0c17576] ..#dT6k+2 #dT6k DS (2'/F')k4+(1)k21 ; ABC -> 123 DS (2'/L')k4+(0)k21 ; 123 -> ABC AIF drukTNL == 2'/R/N' ;jeśli jako /N ma być (CR,LF) A & [#dT6n] ;gdy /N - konwersja na (CR,LF) SKNZ #dT6n+2 A = [#dT6n+1] ;konwersja /N na /R/N WY 6 A = [0c17576] ..#dT6n+2 #dT6n DS 0b11101k26 (2'/R')k4 AELIF drukTNL == 2'/R' ;jeśli jako /N ma być (CR) A & [#dT6n] ;gdy /N - konwersja na (CR) SKNZ #dT6n+2 A = A + [#dT6n+1] ..#dT6n+2 #dT6n DS 0b11101k26 (2'/R'-2'/N')k26 AELSE ;jeśli /N ma pozostać bez zmiany ;/N pozostaje jako (LF) AFI A = A >>< 17 WY 6 A = A <<< 5 ..drukT6B ;------ Koniec drukT6A ---------------------------------------*/ KONIEC ---