/* 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 stałej wysokości 8 kwintetów, w układzie pionowym. 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 nZnak 00 [poczt] = 0; funk2 :021 temp7 + 70 [temp7] = B7; :021 temp3 + 30 [temp3] = B3; gdyFS :032 00040 + 30 B3 = 32; :021 poczt + 30 [poczt] = B3; nZnak :000 00000 00000 61 Skocz do czTTY/czTXT; A = znak... jZnak :116 00021 + 00 A >>>= 17; A = znak w skali 21 kodFS :670 00037 + 00 A &= 31; :046 nZnak + 00 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]; :032 00007 + 30 B3 = 7; licznik rządków nRząd :526 00000 + 00 Wy5; :016 00005 + 00 A <<<= 5; :546 nRząd nZnak 30 SkLC B3-- nRząd; gdyLF :012 temp3 + 30 B3 = [temp3]; :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 B7 :060 00000 + 70 A = B7; 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 :402 00000 jZnak 70 B7 = A; i do jZnak 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 temp7 :000 00000 00000 00 B7 - przechowalnia słowa ze znakami wzory :007 07777 16700 00 wzór ● :770 04172 01037 00 wzór E :017 10174 01740 00 wzór ≡ :350 14376 03061 00 wzór A :000 00000 00000 00 wzór :350 14070 03056 00 wzór S :342 01020 10216 00 wzór I :430 14306 03056 00 wzór U :777 17777 17777 00 wzór ⌂ :750 14306 03076 00 wzór D :750 14372 11121 00 wzór R :360 10204 03056 00 wzór J :430 16326 07061 00 wzór N :770 04172 01020 00 wzór F :350 14102 01056 00 wzór C :431 05142 11121 00 wzór K :762 01020 10204 00 wzór T :760 10421 01037 00 wzór Z :410 04102 01037 00 wzór L :430 14327 07561 00 wzór W :430 14376 03061 00 wzór H :430 12420 10204 00 wzór Y :750 14372 01020 00 wzór P :350 14306 07157 00 wzór Q :350 14306 03056 00 wzór O :750 14372 03076 00 wzór B :350 14136 03057 00 wzór G :000 01073 16000 00 wzór ▲ :435 16726 03061 00 wzór M :430 12421 05061 00 wzór X :430 14251 04504 00 wzór V :000 07670 10000 00 wzór ▼ :007 07777 16700 00 wzór ● :350 10230 03056 00 wzór 3 :017 10174 01740 00 wzór ≡ :000 00174 00000 00 wzór - :000 00000 00000 00 wzór :104 00000 00000 00 wzór ' :350 14272 03056 00 wzór 8 :760 10421 00410 00 wzór 7 :777 17777 17777 00 wzór ⌂ :000 05272 12000 00 wzór * :430 14374 02041 00 wzór 4 :000 00020 00210 00 wzór ; :000 00000 00210 00 wzór , :102 01020 00004 00 wzór ! :000 01000 10000 00 wzór : :042 02041 00202 00 wzór ( :770 07404 03056 00 wzór 5 :002 01174 10200 00 wzór + :202 00410 04210 00 wzór ) :350 10210 10437 00 wzór 2 :410 05142 01037 00 wzór Ł :144 04172 03056 00 wzór 6 :350 14326 03056 00 wzór 0 :106 01020 10216 00 wzór 1 :350 14274 02114 00 wzór 9 :350 10210 10004 00 wzór ? :305 03066 05115 00 wzór & :000 01073 16000 00 wzór ▲ :000 00000 00004 00 wzór . :020 10421 01020 00 wzór / :000 07603 16000 00 wzór = :000 07670 10000 00 wzór ▼ /* ●●● ●●●● ●●● ●●●● ●●●●● ●●●●● ●●● ● ● ●●● ●●●● ● ● ● ● ● ● ● ●●● ●●●● ●●● ●●●● ●●● ●●●●● ● ● ● ● ● ● ● ● ● ● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●● ●●●● ● ● ● ●●●● ●●●● ● ●●● ●●●●● ● ● ●● ● ● ● ● ● ● ● ● ● ●●●● ● ● ●●●● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ●●●● ●●● ●●●● ●●●●● ● ●●●● ● ● ●●● ●●● ● ● ●●●●● ● ● ● ● ●●● ● ●●●● ● ● ●●● ● ●●● ● ● ● ● ● ● ●●●●● CR ●●● ● ●●● ●●●●● ● ● ● ● ●●●●● ● ●●● ● ●● ●●● ● ●●● ●●● ●● ● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ●●●● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●●●●● ●●●●● ●● ●●●●● ●●● ● ●●● ●●●●● ● ● ● ● ●●●●● ● ● ●● ●●●● ● ● ● ● ●●●● ● ●● ● ● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●● ●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●● ●●● ●●● ● ● ● ● ● ● ●●● ● ●●●●● ●●●●● ●●● ●●● ●●● ●● ● ●● ● ● ● ●●●●● {let instr = ''; rz( 0,14,31,31,31,14, 0,'●'); rz(31,16,16,30,16,16,31,'E'); rz( 0,31, 0,31, 0,31, 0,'≡'); rz(14,17,17,31,17,17,17,'A'); rz( 0, 0, 0, 0, 0, 0, 0,' '); rz(14,17,16,14, 1,17,14,'S'); rz(14, 4, 4, 4, 4, 4,14,'I'); rz(17,17,17,17,17,17,14,'U'); rz(31,31,31,31,31,31,31,'⌂'); rz(30,17,17,17,17,17,30,'D'); rz(30,17,17,30,20,18,17,'R'); rz(15, 1, 1, 1, 1,17,14,'J'); rz(17,17,25,21,19,17,17,'N'); rz(31,16,16,30,16,16,16,'F'); rz(14,17,16,16,16,17,14,'C'); rz(17,18,20,24,20,18,17,'K'); rz(31, 4, 4, 4, 4, 4, 4,'T'); rz(31, 1, 2, 4, 8,16,31,'Z'); rz(16,16,16,16,16,16,31,'L'); rz(17,17,17,21,27,27,17,'W'); rz(17,17,17,31,17,17,17,'H'); rz(17,17,10, 4, 4, 4, 4,'Y'); rz(30,17,17,30,16,16,16,'P'); rz(14,17,17,17,19,19,15,'Q'); rz(14,17,17,17,17,17,14,'O'); rz(30,17,17,30,17,17,30,'B'); rz(14,17,16,23,17,17,15,'G'); rz( 0, 0, 4,14,31, 0, 0,'▲'); rz(17,27,27,21,17,17,17,'M'); rz(17,17,10, 4,10,17,17,'X'); rz(17,17,17,10,10,10, 4,'V'); rz( 0, 0,31,14, 4, 0, 0,'▼'); rz( 0,14,31,31,31,14, 0,'●'); rz(14,17, 1, 6, 1,17,14,'3'); rz( 0,31, 0,31, 0,31, 0,'≡'); rz( 0, 0, 0,31, 0, 0, 0,'-'); rz( 0, 0, 0, 0, 0, 0, 0,' '); rz( 4, 8, 0, 0, 0, 0, 0,"'"); rz(14,17,17,14,17,17,14,'8'); rz(31, 1, 2, 4, 8, 8, 8,'7'); rz(31,31,31,31,31,31,31,'⌂'); rz( 0, 0,21,14,21, 0, 0,'*'); rz(17,17,17,31, 1, 1, 1,'4'); rz( 0, 0, 0, 4, 0, 4, 8,';'); rz( 0, 0, 0, 0, 0, 4, 8,','); rz( 4, 4, 4, 4, 0, 0, 4,'!'); rz( 0, 0, 4, 0, 4, 0, 0,':'); rz( 2, 4, 8, 8, 8, 4, 2,'('); rz(31,16,30, 1, 1,17,14,'5'); rz( 0, 4, 4,31, 4, 4, 0,'+'); rz( 8, 4, 2, 2, 2, 4, 8,')'); rz(14,17, 1, 2, 4, 8,31,'2'); rz(16,16,20,24,16,16,31,'Ł'); rz( 6, 8,16,30,17,17,14,'6'); rz(14,17,17,21,17,17,14,'0'); rz( 4,12, 4, 4, 4, 4,14,'1'); rz(14,17,17,15, 1, 2,12,'9'); rz(14,17, 1, 2, 4, 0, 4,'?'); rz(12,10,12,13,18,18,13,'&'); rz( 0, 0, 4,14,31, 0, 0,'▲'); rz( 0, 0, 0, 0, 0, 0, 4,'.'); rz( 1, 1, 2, 4, 8,16,16,'/'); rz( 0, 0,31, 0,31, 0, 0,'='); rz( 0, 0,31,14, 4, 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); } */