/* Program analogiczny do WR-Z-12 (03-IV-113) Program wymaga maszyny ODRA UMCS Program perforuje napisy w tzw. kodzie wizualnym: znaki kodu dalekopisowego nr 2 wprowadzane z dalekopisu tłumaczy na układy rządków na taśmie wychodzącej z perforatora 8-kanałowego tak, iż układ dziurek przypomina kształtem litery, cyfry i znaki przestankowe o zmiennej szerokości do 11 kwintetów, pogrubione, w układzie poziomym. Program pracuje na obu ścieżkach ferrytowych i należy go startować od adresu 17400. Po zatrzymaniu się wystarczy wcisnąć [StartCPU] dla ponownego uruchomienia. Może być wywołany jako podprogram od adresu 17401 z adresem napisu w A w skali 21, kończącego się znakiem LF. Znak CR daje całkowicie zadziurkowane pole. Jeśli nie przełączono, to pierwszy znak jest z pocztu cyfr. Program jest zgodny z alfabetem dalekopisu TTY MKD-2 PL2. */ ;Etyk: Rozkaz Komentarz ;===== =================== ================================ :401 17400: Adres początku programu PROGR :032 czTTY prog1 60 B6 = czTTY; funkcja czytania znaku PODPR :726 00000 podp2 00 Ślad - powrót do progr. głównego poczt :000 00000 00000 00 Poczet: 0=cyfry, 64=litery podp2 :021 temp6 + 60 [temp6] = B6; :021 temp5 + 50 [temp5] = B5; :021 temp4 + 40 [temp4] = B4; :032 czTXT + 60 B6 = czTXT; :402 00000 + 50 B5 = A; adres napisu :002 00000 + 40 B4 = 0; liczba znaków w słowie :746 funkc + 00 SkS funkc; :012 temp4 + 40 B4 = [temp4]; :012 temp5 + 50 B5 = [temp5]; :012 temp6 PODPR 60 B6 = [temp6]; i Return prog1 :050 kodFS + 00 A = FS; :626 00000 + 00 Wy6 = FS; :746 funkc + 00 SkS funkc; :726 00000 PROGR 00 Stop; funkc :726 00000 funk2 00 Ślad - powrót do PROGR/PODPR gdyLS :001 poczt 00000 61 [poczt] = 0; Skocz do czTTY/czTXT; A = znak... funk2 :021 temp7 + 70 [temp7] = B7; gdyFS :070 00100 + 00 A = 64; :401 poczt 00000 61 [poczt] = A; Skocz do czTTY/czTXT; A = znak... jZnak :116 00020 + 00 A >>>= 16; A = znak w skali 20 kodFS :670 00076 + 00 A &= 62; :246 + 00000 61 gdy NU, pominąć :330 00066 + 00 A - FS; :046 gdyFS + 00 gdy FS, przełączyć na cyfry :330 00076 + 00 A - LS; :046 gdyLS + 00 gdy LS, przełączyć na litery :330 00004 + 00 A - LF; :046 gdyLF + 00 gdy LF, koniec tekstu :412 poczt + 70 B7 = A + [poczt]; :050 wzory + 71 A = [wzory+B7]; :046 + mRząd 00 SknZ mRząd; gdy spacja, :566 00000 + 00 XWy5; to dodatkowy pusty rządek mRząd :012 wzorb + 71 M = [wzory+B7+1]; nRząd :566 00000 + 00 XWy5; :516 00010 + 00 AM <<<= 8; :046 + nRząd 00 SknZ nRząd; :566 00000 + 00 XWy5; :566 00000 00000 61 XWy5; Skocz do czTTY/czTXT; A = znak... gdyLF :012 temp7 funkc 70 B7 = [temp7]; i Powrót po śladzie czTTY :126 00000 + 00 We1; A = znak z dalekopisu :016 00042 jZnak 00 A <<<= 34; i do jZnak czTXT :546 + slowo 40 SkLC B4--; czy są jeszcze znaki w słowie :050 znaki + 00 A = [znaki]; są :016 00005 schow 00 A <<<= 5; i do schowka slowo :050 00000 + 51 A = [B5]; słowo ze znakami tekstu :646 + + 50 SkLC B5++; wskaźnik na nast. słowo :032 00006 + 40 B4 = 6; licznik znaków w słowie schow :401 znaki jZnak 00 [znaki] = A; i do jZnak znaki :000 00000 00000 00 znaki słowa, drukowany i pozostałe temp4 :000 00000 00000 00 B4 - licznik znaków w słowie temp5 :000 00000 00000 00 B5 = adres kolejnego słowa tekstu temp6 :000 00000 00000 00 B6 = funkcja pobierania znaku temp7 :000 00000 00000 00 B7 - przedłużenie A :401 17200: Adres wzorców znaków wzory :160 17437 01743 70 wzorb :076 01600 00000 00 wzór ● :777 17766 17336 61 :341 16060 00000 00 wzór E :250 12425 01242 50 :052 02500 00000 00 wzór ≡ :771 17606 14330 61 :377 07700 00000 00 wzór A :000 00000 00000 00 :000 00000 00000 00 wzór :635 13766 17336 61 :375 13440 00000 00 wzór S :607 17777 17030 00 :000 00000 00000 00 wzór I :377 17760 03006 00 :177 13760 00000 00 wzór U :777 17777 17777 71 :377 17777 17776 00 wzór ⌂ :777 17760 17036 01 :377 13740 00000 00 wzór D :777 17706 14733 61 :347 16340 00000 00 wzór R :100 14360 17036 01 :377 13760 00000 00 wzór J :777 17703 00301 40 :177 17760 00000 00 wzór N :777 17706 14330 61 :201 10060 00000 00 wzór F :375 17760 17036 01 :363 13140 00000 00 wzór C :777 17706 00743 11 :141 14020 00000 00 wzór K :006 00300 17777 71 :201 10060 03000 00 wzór T :607 14374 17336 31 :343 16060 00000 00 wzór Z :777 17760 03006 00 :140 06000 00000 00 wzór L :777 17730 00600 60 :030 03017 17776 00 wzór W :777 17706 00300 60 :177 17760 00000 00 wzór H :006 00703 03707 60 :006 00160 03000 00 wzór Y :777 17706 14330 61 :217 10340 00000 00 wzór P :375 17760 17633 01 :377 17740 00000 00 wzór Q :375 17760 17036 01 :377 13740 00000 00 wzór O :777 17766 17336 61 :377 13140 00000 00 wzór B :375 17760 17036 61 :375 13640 00000 00 wzór G :100 06016 00741 60 :030 01000 00000 00 wzór ▲ :777 17701 10140 60 :006 00157 17776 00 wzór M :607 14717 00301 70 :163 16060 00000 00 wzór X :076 07730 03003 00 :037 10760 00000 00 wzór V :010 01407 00740 70 :006 00100 00000 00 wzór ▼ :160 17437 01743 70 :076 01600 00000 00 wzór ● :205 10360 17336 61 :377 13140 00000 00 wzór 3 :250 12425 01242 50 :052 02500 00000 00 wzór ≡ :060 03006 00300 60 :014 00000 00000 00 wzór - :000 00000 00000 00 :000 00000 00000 00 wzór :016 00300 00000 00 :000 00000 00000 00 wzór ' :315 17766 17336 61 :377 13140 00000 00 wzór 8 :407 10330 14630 61 :207 10160 00000 00 wzór 7 :777 17777 17777 71 :377 17777 17776 00 wzór ⌂ :120 05007 00360 70 :024 01200 00000 00 wzór * :076 03706 00300 60 :177 17760 00000 00 wzór 4 :730 15400 00000 00 :000 00000 00000 00 wzór ; :700 14000 00000 00 :000 00000 00000 00 wzór , :677 13700 00000 00 :000 00000 00000 00 wzór ! :330 15400 00000 00 :000 00000 00000 00 wzór : :170 17660 16010 00 :000 00000 00000 00 wzór ( :277 13766 17336 61 :375 13460 00000 00 wzór 5 :060 03037 11760 60 :014 00000 00000 00 wzór + :403 10337 10740 00 :000 00000 00000 00 wzór ) :615 14774 17236 21 :347 16140 00000 00 wzór 2 :777 17766 03146 10 :140 06000 00000 00 wzór Ł :361 17467 13336 60 :374 03400 00000 00 wzór 6 :170 17660 17036 01 :277 01700 00000 00 wzór 0 :010 00677 17770 00 :000 00000 00000 00 wzór 1 :034 03746 17333 61 :237 10740 00000 00 wzór 9 :014 00700 17236 61 :207 10140 00000 00 wzór ? :305 16747 06174 61 :070 03015 00440 00 wzór & :100 06016 00741 60 :030 01000 00000 00 wzór ▲ :601 10000 00000 00 :000 00000 00000 00 wzór . :401 10030 00600 60 :006 00140 03002 00 wzór / :330 15433 01543 30 :066 00000 00000 00 wzór = :010 01407 00740 70 :006 00100 00000 00 wzór ▼ /* ●●● ●●●●●● ●●●●● ●●●●●● ●●●●●●● ●●●●●●● ●●●●● ●● ●● ●●●● ●●●●●● ●● ●● ●● ●● ●● ●● ●● ●●●●● ●●●●●● ●●●●● ●●●●●● ●●●●● ●●●●●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●● ●● ●●●● ●●●●●● ●● ●● ●● ●●● ●●● ●● ●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●● ●●●● ●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●●●●●● ●● ●● ●● ●●●●● ●●●●● ●● ●●● ●●●●●●● ●● ●● ●●●● ●● ●● ●●● ●● ●●●● ●● ●● ●● ●●●●●●● ●● ●● ●●●●●● ●●●●●● ●● ●● ●● ●● ●● ●● ● ●● ●●● ●●●● ●● ●●●●●●● ●●●●●● ●● ●● ●● ●●●●● ●●●●● ●● ●●● ●●●●●●● ●● ●● ●●●● ●● ●● ● ●● ●● ●●●● ●● ●● ●●●●●● ●● ● ●● ●●●●● ●●●●●● ●● ●● ●● ●● ●● ●● ●●● ●● ●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●● ●● ●● ●● ●● ●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●● ●●●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●●●● ●● ●●●●●●● ●● ●● ●●●● ●●●●●● ●● ●● ●●●●●●● ●● ●● ●● ●● ●●●●●●● ●● ●●●●●●● ●● ●● ●●●●●●● ●● ●●●●●●● ●●● ●●● ●●● ●● ●● ●● ●●●●●●● ●● ●● ●●●●●● ●●●●● ●●●●●● ●●●●●●● ●● ●●●●● ●● ●● ●●●● ●●●● ●● ●● ●●●●●●● ●● ●● ●● ●● ●●●●● ●● ●●● ●● ●● ●● ●●●●●● ●● ●●●●● ● ●● ●● ●● ●● ●● ●●●●●●● ●●●●● ●● ●●●●● ●●●●●●● ●● ●● ●● ●● ●●●●●●● ●● ●●●●● ●● ●● ●●● ●● ●●●●● ●●●●● ●●● ●● ●●●●●●● ●● ●●●●●●● ●●●●●●● ● ●● ●● ●● ●● ●●●●●●● ●● ●● ●●●●●●● ●● ●● ●●●●● ●●● ●●●●●●● ●●●●●●● ●● ●● ●● ●● ● ●● ●● ●● ●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●● ●● ●● ●● ●● ●●● ● ●● ●●●●●● ●●●●●●● ●●●●●●● ●●● ●●●●●● ●●●●● ●● ●●●●●●● ●●●●●●● ●● ●● ●● ●● ●●●●●● ●●●●●● ●● ●● ●●●● ●●●●●● ●● ●● ●● ●●●●●●● ●● ●●● ●●● ●● ●●●●●● ●●●●● ●●● ●●●●●● ●●●●● ●● ●●● ●●●●●●● ●● ●● ●●●●●●● ●●●●●● ●● ●● ●●● ●●●●●●● ●● ●● ●● ●●●●●● ●● ●● ●● ●● ●●●●● ●● ●●● ●●●●●●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●● ●●●●●● ● ●●●●●●● ●●●●●●● ●● ●● ●● ●● ●● ●● ●● ●●●●●●● ●● ●● ●●●●●●● ●●●●●●● ●●●●●●● ●●●●● ●● ●● ●● ●● ●●● ●● ●● ●●●●●● ●●●●●●● ●●●●● ●●●●● ●● ●● ● ● ●● ●● ●●●●● ●● ●●●●●●● ●●●●●●● ●●●●● ●●● ●● ●● ●● ●●●● ●● ●● ●● {let instr = ''; rz( 56,124,124,124,124,124, 56, 0, 0,'●'); rz(255,255,219,219,219,195,195, 0, 0,'E'); rz( 84, 84, 84, 84, 84, 84, 84, 0, 0,'≡'); rz(252,254, 27, 27, 27,254,252, 0, 0,'A'); rz( 0, 0, 0, 0, 0, 0, 0, 0, 0,' '); rz(206,223,219,219,219,251,114, 0, 0,'S'); rz(195,255,255,195, 0, 0, 0, 0, 0,'I'); rz(127,255,192,192,192,255,127, 0, 0,'U'); rz(255,255,255,255,255,255,255,255,255,'⌂'); rz(255,255,195,195,195,255,126, 0, 0,'D'); rz(255,255, 27, 59,123,207,206, 0, 0,'R'); rz( 32, 99,195,195,195,255,127, 0, 0,'J'); rz(255,255, 12, 24, 48,255,255, 0, 0,'N'); rz(255,255, 27, 27, 27, 3, 3, 0, 0,'F'); rz(126,255,195,195,195,231,102, 0, 0,'C'); rz(255,255, 24, 60,102,195,129, 0, 0,'K'); rz( 3, 3, 3,255,255, 3, 3, 3, 0,'T'); rz(195,227,243,219,207,199,195, 0, 0,'Z'); rz(255,255,192,192,192,192,192, 0, 0,'L'); rz(255,255, 96, 48, 24, 48, 96,255,255,'W'); rz(255,255, 24, 24, 24,255,255, 0, 0,'H'); rz( 3, 7, 12,248,248, 12, 7, 3, 0,'Y'); rz(255,255, 27, 27, 27, 31, 14, 0, 0,'P'); rz(126,255,195,243, 99,255,254, 0, 0,'Q'); rz(126,255,195,195,195,255,126, 0, 0,'O'); rz(255,255,219,219,219,255,102, 0, 0,'B'); rz(126,255,195,195,219,251,122, 0, 0,'G'); rz( 32, 48, 56, 60, 56, 48, 32, 0, 0,'▲'); rz(255,255, 6, 12, 24, 12, 6,255,255,'M'); rz(195,231, 60, 24, 60,231,195, 0, 0,'X'); rz( 31, 63, 96,192, 96, 63, 31, 0, 0,'V'); rz( 4, 12, 28, 60, 28, 12, 4, 0, 0,'▼'); rz( 56,124,124,124,124,124, 56, 0, 0,'●'); rz( 66,195,195,219,219,255,102, 0, 0,'3'); rz( 84, 84, 84, 84, 84, 84, 84, 0, 0,'≡'); rz( 24, 24, 24, 24, 24, 24, 0, 0, 0,'-'); rz( 0, 0, 0, 0, 0, 0, 0, 0, 0,' '); rz( 7, 3, 0, 0, 0, 0, 0, 0, 0,"'"); rz(102,255,219,219,219,255,102, 0, 0,'8'); rz(131,195, 99, 51, 27, 15, 7, 0, 0,'7'); rz(255,255,255,255,255,255,255,255,255,'⌂'); rz( 40, 40, 28, 30, 28, 40, 40, 0, 0,'*'); rz( 31, 31, 24, 24, 24,255,255, 0, 0,'4'); rz(236,108, 0, 0, 0, 0, 0, 0, 0,';'); rz(224, 96, 0, 0, 0, 0, 0, 0, 0,','); rz(223,223, 0, 0, 0, 0, 0, 0, 0,'!'); rz(108,108, 0, 0, 0, 0, 0, 0, 0,':'); rz( 60,126,195,129, 0, 0, 0, 0, 0,'('); rz( 95,223,219,219,219,251,115, 0, 0,'5'); rz( 24, 24,126,126, 24, 24, 0, 0, 0,'+'); rz(129,195,126, 60, 0, 0, 0, 0, 0,')'); rz(198,231,243,211,203,207,198, 0, 0,'2'); rz(255,255,216,204,196,192,192, 0, 0,'Ł'); rz(120,252,222,219,217,248,112, 0, 0,'6'); rz( 60,126,195,195,195,126, 60, 0, 0,'0'); rz( 4, 6,255,255, 0, 0, 0, 0, 0,'1'); rz( 14, 31,155,219,123, 63, 30, 0, 0,'9'); rz( 6, 7, 3,211,219, 15, 6, 0, 0,'?'); rz( 98,247,157,143,154,112, 96,208,144,'&'); rz( 32, 48, 56, 60, 56, 48, 32, 0, 0,'▲'); rz(192,192, 0, 0, 0, 0, 0, 0, 0,'.'); rz(128,192, 96, 48, 24, 12, 6, 3, 1,'/'); rz(108,108,108,108,108,108, 0, 0, 0,'='); rz( 4, 12, 28, 60, 28, 12, 4, 0, 0,'▼'); function rz(a,b,c,d,e,f,g,h,i,znak) { let n1 = (((a*256+b)*256+c)*256+d)*128+(e>>>1), n2 = (((((e&1)*256+f)*256+g)*256+h)*256+i)*32; function r(n) { let tpg= Math.floor(n / 0o10000000000), ar = (n >> 17) & 0o17777, nr = (n >> 4) & 0o17777, bm = (n >> 1) & 7, bz = n & 1; return ':' + (tpg+1024).toString(8).substr(1) +' '+ (ar+32768).toString(8).substr(1) +' '+ (nr+32768).toString(8).substr(1) +' '+ bm.toString(8) + bz; } instr += '\t' + r(n1) + '\n\t' + r(n2) + '\twzór ' + znak + '\n'; } console.log(instr); } */