þþ5 EI X; ************************** X; * *( X; * WORD-LOCK *2 X; * *3 X; * April, 1986 *4 X; * *< X; * by Andy A. Lee *F X; * *P X; **************************ZX;d …INDEXþn …CHN16ÿx „BADS‚ …MAXINŒ †DELETE~– †RETURN›  †DOSINI ª …ICAX1J´ …MEMLOç¾ „READÈ …WRITEÒ ‚OKÜ „PASSæ„CNTR„PASSð„LENS„PASSú@X;X; Rest Init...X; ------------"X;, …TODOS ÿÿ6 …MLLSB$>@ …MLMSB%>J &…MEMLOT '…MEMLO^ …TDLSB$>h …TDMSB%>r &†DOSINI|'†DOSINI†Q> WPýš:¤X;®X; Open vector¸X; -----------ÂX;Ì„OPEN&…CHN16Ö„DOPN ÿÿ;; Open the fileà6;; Save statusê)>‚OK;; Process okay?ôF†OURJOB;; OK! Our turn!þ8;; Error code :;; ReturnX;X; Our works&X; ---------0X;: †OURJOB1D $…CHN16NC;; reset counterXP„CNTR9;; to zerobQ…ICAX19;; Is this...lR>„READ;; read a file?vF„CONT;; Continue if so€R>…WRITE;; write a file?ŠHŠNOPASSWORD;; nopassword”"X; if it isn't read or write...žX;¨X; PRINT "Password : "²X; ------------------------¼X;Æ„CONTQ> ;; 11 charactersÐ P…INDEXÚ †PRLOOPä%…INDEX;; Load indexî‚M1QƒMSG8;; A charaterø‚S1 †SCREEN;; Print it"…INDEX;; Next character H†PRLOOP;; Done?X; X; Input the password.*X; -------------------4X;> †INLOOPH‚I1 …INPUT;; A keystrokeR %>„BADS\ †CHLOOPf ‚B1R…BADIN8;; Compare withpF†INLOOP;; unusablez1;; input table.„ H†CHLOOPŽR>†DELETE;; Delete backs?˜HƒCH2;; If not...¢%…INDEX;; Check index¬F†INLOOP;; No input yet!¶‚S2 †SCREEN;; Delete letterÀ"…INDEX;; = INDEX - 1ÊI†INLOOP;; Next keyÔƒCH2R>†RETURN;; RETURN key?ÞF†STOPIN;; If so, stopè?;; Y reg. = AòQ…INDEX;; Too many?ü R>…MAXINF†INLOOP;; Yes!!!L…CHN16;; Store>$C. P„PASS98‚S3 †SCREEN;; Print it too.B#…INDEX;; = INDEX + 1LI†INLOOP;; Next keyV †STOPIN`‚S4 †SCREEN;; Print the j%…INDEX;; PASSWORD?tH…SVLEN;; Yes, go on...~ŠNOPASSWORDˆC;; Y reg. = 0’$…CHN16;; Clean passwordœ P„PASS9¦3;; Length = 1°…SVLEN$…CHN16;; Save lengthºCÄ P„LENS9Î%>‚OK;; No error flagØ $…CHN16â8ì:;; All done.öX;X; Get vector X; ----------X;ƒGET&…CHN16(„DGET ÿÿ;; Get a byte26;; Save status<'…INDEX;; Save Y reg.F $…CHN16P‚C1 „CODE;; Decode byteZ%…INDEX;; Restore Y reg.d8;; Reload statusn :;; Done!xX;‚X; Put vectorŒX; ----------–X; ƒPUTª‚C2 „CODE;; Code the byte´„DPUT!ÿÿ;; Output to disk¾ „CODE5È&…CHN16;; Save channel #ÒQ„CNTR9;; calculate theÜL…CHN16;; byte to EORæ?;; with...ð#„CNTR9;; Reset counterúQ„CNTR9;; Set back toR„LENS9;; zero? H†NOTNOWQ>;; set to zero" P„CNTR9,†NOTNOW7;; Load the byte.6F„EXIT;; ZERO? bypass!@R„PASS8;; = CODE BYTE?JF„EXIT;; BypassTN„PASS8;; Coding...^„EXIT$…CHN16;; All doneh:;; Bye-bye!rX;| X; Screen - print a character†X; on screen.X;š †SCREEN¤?;; A = character®Qä;; location of¸5;; PRINT routineÂQä;; in OSÌ5ÖC;; restore Aà:;; goto routineêX;ôX; Input - input a keystrokeþX; …INPUTQ%ä;; location of5;; INPUT routine&Q$ä;; in OS05::;; goto routineDƒMSGN A‹ : drowssaPAXX;b"X; Following characters are notlX; usable for password.vX;€ …BADINŠ =====}=” œ==ž=Ÿ=ýž þ=ÿ¨X;²X; Install WORDLOCK¼X; ----------------ÆX;Ð „INIT$ÔÚ%Õä &Xî 'Yø$*;; Get address%+;; of "D" vectors &Ô;; table'Õ X;* X; We will see if WORDLOCK is4X; already installed>X;H …CHECKRQý\R> Wf H„COPYp !ˆEXITINITzX;„X; We now install WORDLOCKŽX;˜„COPY¢ $†DOSINI¬%†DOSINI¶ &…TODOSÀ '…TODOSÊ $…MEMLOÔ %…MEMLOÞ &†DOSINIè'†DOSINIò &…TDLSBü '…TDMSB ,;; calculate new Q…MEMLO;; MEMLO O>4„INIT@$ P…MLLSB. Q…MEMLO8 O>5„INIT@B P…MLMSBL %>;; First, copyV ,;; OPEN vector` Q@Ô7;; so we can usej O>;; it...t P„DOPN~ 3ˆ Q@Ô7’ O>œ P„DOPN¦ %>;; Now the GET° ,;; vetor too...º Q@Ô7Ä O>Î P„DGETØ 3â Q@Ô7ì O>ö P„DGET 3;; Last, PUT ,;; vector... Q@Ô7 O>( P„DPUT2 3< Q@Ô7F O>P P„DPUTZ %>d ,;; Insert my OPENn Q>4„OPEN@;; vectorx O…MEMLO‚ P@Ô7Œ 3– Q>5„OPEN@  O…MEMLOª P@Ô7´ %>;; Insert my GET¾ ,;; vectorÈ Q>4ƒGET@Ò O…MEMLOÜ P@Ô7æ 3ð Q>5ƒGET@ú O…MEMLO P@Ô7 3;; Insert my PUT ,;; vector" Q>4ƒPUT@, O…MEMLO6 P@Ô7@ 3J Q>5ƒPUT@T O…MEMLO^ P@Ô7h $>r ƒCALQ‰MOVETHESE9| PÕ† 0 Q‰MOVETHESE9š PÔ¤ %>® ;¸ Q@Ô7 S>4@Ì P@Ô7Ö 3à Q@Ô7ê S>5@ô P@Ô7þ 1 , Q@Ô7 O…MEMLO& P@Ô70 3: Q@Ô7D O…MEMLON P@Ô7X 0b IƒCALl $…MEMLOv %…MEMLO€ &ÔŠ 'Õ” %>ž „MOVEQ…TODOS8¨ P@Ô7² 3Æ H„MOVEÇ #ÕÈ %>4„INIT@É …MOVE2Q…TODOS8Ê P@Ô7Ë 1Ì )>ÿÍ H…MOVE2Ð ,;; calculate newÚ Q…MEMLO;; MEMLOä O>4„INIT@î P…MEMLOø Q…MEMLO O>5„INIT@ P…MEMLO ˆEXITINIT X$>* Y%>4 &Ô> 'ÕH Q> WR Pý\ :f ‰MOVETHESE ‚S1=‚S2=‚S3=‚S4p  ‚I1=‚M1=‚B1=‚C1=‚C2z â„ „INIT