/* Program analogiczny do WR-Z-12 (03-IV-113) 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 5-kanałowego tak, iż układ dziurek przypomina kształtem litery, cyfry i znaki przestankowe o zmiennej szerokości do 6 kwintetów, w układzie poziomym. Wzorce kształtów pasują również do programu 8H5z. Program pracuje na drugiej ścieżce ferrytowej 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: Adr. pocz. 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, 32=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 A :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 temp3 + 30 [temp3] = B3; gdyFS :070 00040 + 00 A = 32; :401 poczt 00000 61 [poczt] = A; Skocz do czTTY/czTXT; A = znak... jZnak :116 00021 + 00 A >>>= 17; A = znak w skali 21 kodFS :670 00037 + 00 A &= 31; :246 + 00000 61 gdy NU, pominąć :330 00033 + 00 A - FS; :046 gdyFS + 00 gdy FS, przełączyć na cyfry :330 00037 + 00 A - LS; :046 gdyLS + 00 gdy LS, przełączyć na litery :330 00002 + 00 A - LF; :046 gdyLF + 00 gdy LF, koniec tekstu :412 poczt + 30 B3 = A + [poczt]; :050 wzory + 31 A = [wzory+B3]; :046 + nRząd 00 SknZ nRząd; gdy spacja, :526 00000 + 00 Wy5; to dodatkowy pusty rządek nRząd :526 00000 + 00 Wy5; :016 00005 + 00 A <<<= 5; :046 + nRząd 00 SknZ nRząd; :526 00000 00000 61 Wy5; Skocz do czTTY/czTXT; A = znak... gdyLF :012 temp3 funkc 30 B3 = [temp3]; 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 temp3 :000 00000 00000 00 B3 - roboczy 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 wzory :357 17775 14000 00 wzór ● :772 15326 02000 00 wzór E :532 15326 12000 00 wzór ≡ :742 11227 14000 00 wzór A :000 00000 00000 00 wzór :452 15325 02000 00 wzór S :437 14200 00000 00 wzór I :370 04101 16000 00 wzór U :777 17777 17777 00 wzór ⌂ :770 14305 14000 00 wzór D :762 13326 04000 00 wzór R :210 14305 16000 00 wzór J :761 01043 16000 00 wzór N :762 11224 02000 00 wzór F :350 14305 04000 00 wzór C :762 01052 02000 00 wzór K :020 17604 02000 00 wzór T :434 15316 02000 00 wzór Z :770 04102 00000 00 wzór L :764 01043 16000 00 wzór W :762 01023 16000 00 wzór H :021 07010 02000 00 wzór Y :762 11224 04000 00 wzór P :350 14347 14000 00 wzór Q :350 14305 14000 00 wzór O :772 15325 04000 00 wzór B :350 15327 12000 00 wzór G :206 03461 00000 00 wzór ▲ :761 01013 16000 00 wzór M :425 01052 02000 00 wzór X :066 04060 06000 00 wzór V :043 03430 04000 00 wzór ▼ :357 17775 14000 00 wzór ● :430 15325 04000 00 wzór 3 :532 15326 12000 00 wzór ≡ :102 01020 10000 00 wzór - :000 00000 00000 00 wzór :040 10000 00000 00 wzór ' :252 15325 04000 00 wzór 8 :034 11214 02000 00 wzór 7 :777 17777 17777 00 wzór ⌂ :242 03421 04000 00 wzór * :162 01023 16000 00 wzór 4 :405 00000 00000 00 wzór ; :404 00000 00000 00 wzór , :560 00000 00000 00 wzór ! :240 00000 00000 00 wzór : :350 10000 00000 00 wzór ( :572 15325 02000 00 wzór 5 :102 07620 10000 00 wzór + :427 00000 00000 00 wzór ) :454 15326 04000 00 wzór 2 :772 04502 00000 00 wzór Ł :352 15325 00000 00 wzór 6 :350 15305 14000 00 wzór 0 :457 14000 00000 00 wzór 1 :052 15325 14000 00 wzór 9 :040 15224 04000 00 wzór ? :213 15646 10000 00 wzór & :206 03461 00000 00 wzór ▲ :400 00000 00000 00 wzór . :404 01010 02000 00 wzór / :245 02451 04000 00 wzór = :043 03430 04000 00 wzór ▼ /* ●●● ●●●● ●●● ●●●● ●●●●● ●●●●● ●●●● ● ● ●●● ●●●● ● ● ● ● ● ● ● ●●● ●●●● ●●● ●●●● ●●●● ●●●●● ● ● ● ● ● ● ● ● ● ● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●● ●●●● ● ● ● ●●●● ●●●● ● ●●● ●●●●● ● ● ●●● ● ● ● ● ● ● ● ● ● ●●●● ● ● ●●●● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●●●● ●●● ●●●● ●●●●● ● ●●●● ● ● ●●● ●●● ● ● ●●●●● ● ● ● ● ●●● ● ●●●● ● ●● ●●●● ● ●●● ● ● ● ● ● ● ●●●●● CR ●●●● ● ●●● ●●●●● ● ● ● ● ●●●●● ● ● ●●● ● ●●● ●●● ● ●●● ●●● ●● ● ●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ●●●●● ●●●●●●● ●● ●●●●● ●●● ● ●●● ●●●●● ● ● ●●●● ●●●●● ● ●● ●● ●●●● ● ● ● ● ●●●● ●● ●● ● ● ●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●● ●●●●●●● ●●●● ●●● ● ● ● ● ● ● ●●●● ● ● ●●●●● ●●●●● ●●● ●●● ●●● ●●● ● ●● ● ● ● ●●●●●●● {let instr = ''; rz(14,31,31,31,14, 0, 0,'●'); rz(31,21,21,21,17, 0, 0,'E'); rz(21,21,21,21,21, 0, 0,'≡'); rz(30, 5, 5, 5,30, 0, 0,'A'); rz( 0, 0, 0, 0, 0, 0, 0,' '); rz(18,21,21,21, 9, 0, 0,'S'); rz(17,31,17, 0, 0, 0, 0,'I'); rz(15,16,16,16,15, 0, 0,'U'); rz(31,31,31,31,31,31,31,'⌂'); rz(31,17,17,17,14, 0, 0,'D'); rz(31, 5,13,21,18, 0, 0,'R'); rz( 8,17,17,17,15, 0, 0,'J'); rz(31, 2, 4, 8,31, 0, 0,'N'); rz(31, 5, 5, 5, 1, 0, 0,'F'); rz(14,17,17,17,10, 0, 0,'C'); rz(31, 4, 4,10,17, 0, 0,'K'); rz( 1, 1,31, 1, 1, 0, 0,'T'); rz(17,25,21,19,17, 0, 0,'Z'); rz(31,16,16,16,16, 0, 0,'L'); rz(31, 8, 4, 8,31, 0, 0,'W'); rz(31, 4, 4, 4,31, 0, 0,'H'); rz( 1, 2,28, 2, 1, 0, 0,'Y'); rz(31, 5, 5, 5, 2, 0, 0,'P'); rz(14,17,17,25,30, 0, 0,'Q'); rz(14,17,17,17,14, 0, 0,'O'); rz(31,21,21,21,10, 0, 0,'B'); rz(14,17,21,21,29, 0, 0,'G'); rz( 8,12,14,12, 8, 0, 0,'▲'); rz(31, 2, 4, 2,31, 0, 0,'M'); rz(17,10, 4,10,17, 0, 0,'X'); rz( 3,12,16,12, 3, 0, 0,'V'); rz( 2, 6,14, 6, 2, 0, 0,'▼'); rz(14,31,31,31,14, 0, 0,'●'); rz(17,17,21,21,10, 0, 0,'3'); rz(21,21,21,21,21, 0, 0,'≡'); rz( 4, 4, 4, 4, 4, 0, 0,'-'); rz( 0, 0, 0, 0, 0, 0, 0,' '); rz( 2, 1, 0, 0, 0, 0, 0,"'"); rz(10,21,21,21,10, 0, 0,'8'); rz( 1,25, 5, 3, 1, 0, 0,'7'); rz(31,31,31,31,31,31,31,'⌂'); rz(10, 4,14, 4,10, 0, 0,'*'); rz( 7, 4, 4, 4,31, 0, 0,'4'); rz(16,10, 0, 0, 0, 0, 0,';'); rz(16, 8, 0, 0, 0, 0, 0,','); rz(23, 0, 0, 0, 0, 0, 0,'!'); rz(10, 0, 0, 0, 0, 0, 0,':'); rz(14,17, 0, 0, 0, 0, 0,'('); rz(23,21,21,21, 9, 0, 0,'5'); rz( 4, 4,31, 4, 4, 0, 0,'+'); rz(17,14, 0, 0, 0, 0, 0,')'); rz(18,25,21,21,18, 0, 0,'2'); rz(31,20,18,16,16, 0, 0,'Ł'); rz(14,21,21,21, 8, 0, 0,'6'); rz(14,17,21,17,14, 0, 0,'0'); rz(18,31,16, 0, 0, 0, 0,'1'); rz( 2,21,21,21,14, 0, 0,'9'); rz( 2, 1,21, 5, 2, 0, 0,'?'); rz( 8,23,23, 9,20, 0, 0,'&'); rz( 8,12,14,12, 8, 0, 0,'▲'); rz(16, 0, 0, 0, 0, 0, 0,'.'); rz(16, 8, 4, 2, 1, 0, 0,'/'); rz(10,10,10,10,10, 0, 0,'='); rz( 2, 6,14, 6, 2, 0, 0,'▼'); function rz(a,b,c,d,e,f,g,znak) { let n = ((((((a*32+b)*32+c)*32+d)*32+e)*32+f)*32+g)*16; let tpg= Math.floor(n / 0o10000000000), ar = (n >> 17) & 0o17777, nr = (n >> 4) & 0o17777, bm = (n >> 1) & 7, bz = n & 1; instr += '\t:' + (tpg+1024).toString(8).substr(1) +' '+ (ar+32768).toString(8).substr(1) +' '+ (nr+32768).toString(8).substr(1) +' '+ bm.toString(8) + bz + '\twzór ' + znak + '\n'; } console.log(instr); } */