NSSE9  HEXCALC  RENAME   DIRRED 'W DIRWRTE ,g REMARKS 1 CRUNCHER6 MAVGREM Q MOVAVG U  DASMREM _ DASM d DASMF1 i x ~  ‹ 9 ’" HEX/DECIMAL/BINARY/SPLIT OCTAL STACK CALCULATOR" + � REQUIRES 24K MEM ââ BY ROGER GLASSEY 6 � „ H.P HAD D“E THE PROGRAMMERS CALCULA±R INSTEAD 6( � OF T.I , IT MIGHT HAVE BEEN SOMETHING LIKE THIS 62 ‹ A$à16) , Sà4),C$à20),C1$à20),B1à16),D1à5),H1à4) < ‹ X$à16),C3$à4) F ‹ M1$à32),L1à5),R1à5) %P � ââââ START INITIALIZATI“ ââââ FZ M1$õ"DECIMALHEXBINARYOCTALSPLIT OCTAL"\ C1$õ"THNOIXRLSGPZ*+-/#?" d � COMMìS IN C1$ n C3$õ"AOXN"\� ÝICAL OPERA±RS x � Mõ1 ± 5\… L1àM),R1àM)\ƒ M =‚ ‡ 1,7,8,10,11,16,17,21,22,32\�‘INE WíD BOUNDARIES IN M1$ ;Œ � Jõ1 ± 5\… LàJ)\ƒ J\� LARGEST ¶II CODE � LEGAL NUMBER – ‡ 57,70,49,55,55 /  � Mõ1 ± 5\ … L2àM)\ƒ M\� Ìà”PUT) IN MODE M ª ‡ 5,4,16,6,6 ´ � Jõ0 ± 16 \ B1àJ)õ2áJ\ƒ J !¾ � Jõ0 ± 4 \ H1àJ)õ16áJ \ ƒ J !È � Jõ0 ± 5 \ D1àJ)õ10áJ \ ƒ J "Ò � J õ 0 ± 6 \ O1àJ)õ8áJ \ ƒ J Ü � Jõ0 ± 5 \ … S8àJ) \ ƒ J æ ‡ 1,8,64,256,2048,16384 4ð Mõ1 \ � SET DECIMAL MODE âââ � INITIALIZATI“ ââ ú’"INSTRUCTIONS",\† A$  „ A$à1,1) ñ"Y" ² šþ 5 ’µà12) \� �M FEED ± CLEAR £EEN IN STìARD VIDEO ” F’" THIS CALCULATOR HAS A 4 REGISTER STACK,S(1),..S(4), AND ONE" B"’"MEMORY REGISTER. IT RECOGNIZES THE 4 ARITHMETIC OPERATORS:" B,’" + , - , * , AND /. ALL ENTRIES OF NUMBERS, OPERATORS, OR " 06’"COMMANDS ARE TERMINATED BY . " \ ’ F@’" FOR EXAMPLE, TO SUBTRACT 5 FROM 13, YOU FIRST TYPE IN 13" AJ’"THEN 5. AT THIS POINT, S(1)=5 AND S(2)=13 SINCE " FT’"AFTER A NUMBER PUSHES THE STACK. THEN TYPE - AND 8 T WILL" A^’"APPEAR. S(1) IS 8 AND THE STACK HAS BEEN POPPED, SO S(J) " Fh’"CONTAINS THE OLD VALUE OF S(J+1) FOR J=2 & 3. S(4) IS UNCHANGED" Br’" TRY A FEW CALCULATIONS, USING THE P COMMAND TO PRINT THE" #| ’"STACK, AND SEE HOW IT WORKS" -† ’\’" *** HIT FOR MORE *** "\ † S$ �’µà12) 7š’"A MODE SHIFT COMMAND WILL CAUSE DISPLAY OF S(1)." D¤’" MODES : DECIMAL=T HEX=H BINARY=N OCTAL=O SPLIT OCTAL=I" F®’"EXCEPT IN DEC MODE, NEGATIVE NUMBERS ARE DISPLAYED AS THE TWO'S" @¸’"COMPLEMENT, FLAGGED BY -."\’"THE INITIAL MODE IS DECIMAL." BÂ’" FOUR LOGICAL OPERATORS ARE ALSO RECOGNIZED; THEY ARE THE " @Ì’"ONLY 2 CHARACTER COMMANDS. SEE COMMAND TABLE FOR DETAILS" CÖ’"THE COMMAND ? WILL PRINT THE COMMAND TABLE. THERE, X STANDS" à’"FOR S(1), AND Y FOR S(2)" :ê’\’"AS USUAL IN BASIC PROGRAMS, THE INPUT PROMPT IS ?" ô � 'þ � ââââ † PROCESËG BEGINS HERE ââââ  † A$ \ Nõ ÌàA$) , „ N õ 0 ² š* ´ š \ � ACTS LIKE ENTER  Xõ¶àA$) \ B$õA$à1,1) 5& „ à47ôX ì Xô58) í à 64ôX ì Xô 71)² š€\� NUMERAL 0 � Iõ1 ± 18 \� COMMì DECODE : „ B$õC1$àI,I) ² – šb D ƒ I N „ B$õ"Q"² Œ ´ šX %X’"ILLEGAL INPUT CHARACTER"\ ˆ šþ b „ Iô6 ² š4 ´ IõIå5 >l “ I ˆ š>,šH,šR,š\,šf,šp,š„,šŽ,š˜,š¢,š¬,šÔ,šÈ *v � ââââ MODE C“VERSI“ OF † NUMBERS âââ +€ Aõ0 \„ NöL2àM)² š \� ±O MANY † CHARS 2Š � Jõ1 ± N \ Hõ¶àA$àJ,J))\� H IS CUR¨T NUMERAL -” „ HöLàM) ² – š  \� ±O BIG � THIS MODE 2ž „ Hö57 ² HõHå55 ´ HõHå48 \� GET NUM. · OF H ¨ “ M ˆ š²,š¼,šÆ,šÐ,šÚ .² AõAãHâD1àNåJ)\ˆ šä \� DECIMAL C“VERS ,¼ AõAãHâH1àNåJ)\ˆ šä \� HEX C“VERSI“ /Æ AõAãHâB1àNåJ)\ˆ šä \� BINARY C“VERSI“ )Ð AõAãHâO1àNåJ)\ˆ šä \� OCTAL C“V /Ú AõAãHâS8àNåJ)\ˆ šä \� SPLIT OCTAL C“V ä ƒ J .î ‰ š– \ Sà1)õA \ � ROLL UP ì REPLACE Sà1) ø ˆ šþ \ � BACK ± † R”INE  ’"INPUT TOO BIG IN ",\ˆ š   ’"ILLEGAL INPUT IN ", % ’M1$àL1àM),R1àM))," MODE" \ˆ šþ   � ââââ PROCESS COMMìS âââ -* ‰ š– \ ˆ šœ \ � ROLL UP STACK ì ”PUT X 4 MõI \ ˆ šœ \ � CHANGE MODE 5> XõSà2) \ Sà2)õ Sà1) \ Sà1)õX \ ˆ šœ\ � EXCHANGE 4H XõSà1)\ Sà1)õSà2)\ ‰ šª\ Sà4)õX\ ˆ šœ\ � ROLL &R Sà1)õåSà1) \ ˆ šœ\ � SIGN CHANGE \ M1õSà1)\ ˆ šœ \ � S±RE X /f ‰ š– \ Sà1)õM1 \ ˆ šœ \ � REÍ X FROM M1 0p � Lõ 1 ± 4 \ XõSàL) \ ‰ š¦ \ ƒ L \ � ‚ STK z ˆ šþ „ Sà1)õ0 \ ˆ šœ -Ž Sà1)õSà1)âSà2) \ ‰ šª \ ˆ šœ \ � TIMES ,˜ Sà1)õSà1)ãSà2) \ ‰ šª \ ˆ šœ \ � PLUS -¢ Sà1)õSà2)åSà1) \ ‰ šª \ ˆ šœ \ � MINUS ¬ „ Sà1)õ0 ² š¶ ´ šÀ ¶’"ZERO DIVISOR"\ˆ šþ 1À Sà1)õÆàSà2)çSà1)) \ ‰ šª \ ˆ šœ \ � DIVIDE Ê � ÝICAL OPERATI“S Ô „ Nõ1 ² š -Þ � J1õ1 ± 4\„ A$à2,2)õC3$àJ1,J1)² – šò\ƒ 'è’" ILLEGAL LOGICAL OPERATOR "\ˆ šþ ò XõSà1)\YõSà2)\Sà1)õ0 ü � Iõ1 ± 16  ZõB1à16åI)  „ XïZ ² š ´ X1õ0\ˆ š$ $ XõXåZ\X1õ1 \� BIT FROM Sà1) $ „ YïZ ² š. ´ Y1õ0\ˆ š8 &. YõYåZ \ Y1õ1 \� BIT FROM Sà2) 8 “ J1 ˆ šB,šL,šV,š` B X1õX1 ì Y1\ˆ šj L X1õX1 í Y1\ˆ šj )V X1õàX1 í Y1) ì ÷ àX1 ì Y1)\ˆ šj ` X1õ÷ X1 6j Sà1)õSà1)ãX1âZ \� BUILD UP Sà1) A BIT AT A TIME t ƒ I ~ „ J1õ4 ² šœ ˆ ‰ šª\ˆ šœ \� � ÝICAL OPNS ’ � ââââ”PUT STARTS HERE âââ œ XõSà1) \ ‰ š¦ \ ˆ šþ -¦ „ Mõ1 ² ’ %6I,X," T" ´ ˆ š° \ Š\� DEC ” -° � Jõ1 ± 20 \ C$àJ,J)õ" " \ ƒ J \ C2$õ" " 0º C$àL2àM),L2àM))õ"0" \ � INITIALIZE ”PUT STR Ä „ X ô 0 ² šÎ ´ šØ (Î XõXã65536 \ C2$õ"-" \ � COMPLEMENT %Ø „ Û àX)ö65535 ² š‚ \ � OVERFLOW â YõX \� Jõ1 ± L2àM) !ì “ M ˆ šþ,šö,š,š ,š 3ö ZõH1àL2àM)åJ) \ ˆ š \ � POWERS OF BASE  ZõB1àL2àM)åJ) \ ˆ š !  ZõO1àL2àM)åJ) \ ˆ š ! ZõS8àL2àM)åJ) \ ˆ š  „ XôZ ² šP ( Y1õ ÆàYçZ) \ YõYåY1âZ 2 „ Y1ö9 ² šF ,< C$àJ,J)õµàY1ã48)\ ˆ šP \ � 0å9 ” %F C$àJ,J)õµàY1ã55) \ � AåF ” P ƒ J 8Z C$àL2àM)ã2,L2àM)ã3)õC1$àM,M)ãC2$ \ � ADD MODE, SIGN d „ Mõ3 ² šx ´ šn n ’C$ \ Š 2x’C$à1,4)," ",C$à5,8)," ",C$à9,12)," ",C$à13)\Š ‚ ’"OVERFLOW" \Š Œ� âââââ � ”PUT R”INEââââ – � ROLL UP STACK &  � Jõ 1 ± 3 \Sà5åJ)õSà4åJ)\ ƒ \ Š !ª � ROLL DOWN STACK ì COPY TåT !´ � Jõ2 ± 3 \ SàJ)õSàJã1)\ƒ\Š ¾ � COMMì ³LE È ’µà12) <Ò ’"L - CHANGE SIGN OF X; OUTPUT 2'S COMPL EXCEPT IN DEC" 0Ü’"S - STORE X",³à30),"G - GET X FROM MEMORY" 3æ ’"P - PRINT STACK",³à30),"R - ROLL STACK DOWN" ð ’"Z - SET X TO ZERO",³à30), %ú ’"X - EXCHANGE X AND Y IN STACK" ’³à5),"MODE SET COMMANDS:" 5’"T - DECIMAL",³à15),"H - HEX",³à30),"N - BINARY" .’"O - OCTAL",³à15),"I - INTEL SPLIT OCTAL" !"’³à5),"ARITHMETIC OPERATORS:" E,’"+ : ADD",³à15),"- : MINUS",³à30),"* : TIMES",³à45),"/ : DIVIDE" 6’³à5),"LOGICAL OPERATORS:" A@’"#A - AND",³à15),"#O - OR",³à30),"#X - XOR",³à45),"#N - NOT" 8J’\’"? - PRINT THIS COMMAND TABLE",³à30),\’"Q - QUIT" T ˆ š �Q /Èp�Ÿn ‹ A9à16) , †"DIRECTORY NAME,DISC DRIVE NUMBER:",D$  „ ÌàD$)õ0 ² Œ  † "FILE NAME:",C$ ( ‰ š(# 2 „ Löå1 ² šP A< ‚ "FILE NOT FOUND..TRY AGAIN OR TYPE JUST A CARRIAGE RETURN" F ˆ š &P ‚"FILE FOUND ON RECORD NUMBER ",L 5Z ‚"WOULD YOU LIKE TO CHANGE ITS NAME?..YES OR NO" d † B$ n „ B$õ"YES" ² šŒ x Œ *Œ †"WHAT WOULD YOU LIKE TO CALL IT?",C$ 5– ‚"OK .. WE WILL CHANGE IT TO ",C$," ON FILE ",D$   ‰ šð# 7ª ‚ "PROGRAM STOP.. NOW DO A CAT TO THE PROPER DISC" ´ Œ (#� @*#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ @,#� â DIRRED â @.#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 0#� 2#� >4#� âââââââââââââââââPARAMETERSâââââââââââââââââââââââââââââ 96#� D$ õ DIREC±RY NAME,DISC DRIVE ..IE.. HRZåREL4,1 38#� C$ õ UP ± 8 CHARACTER » NAME LEFT JUST„IED :#� L õ Š VARIABLE *<#� ö0 POÆS ± RECíD THAT MATCHES C$ ">#� õå1 NO RECíD MATCHED C$ ,@#� õå2 DIREC±RY NAME,DISC DRIVE ERRí @B#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ /D#� VARIABLES USED IN SUBR”INE BF#� â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â "H#� X9,Y9,L9,I9,J8,J9,A9à16),B8$ AJ#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ L# Ÿ šv#,X9,Y9 N# — #0 %0,D$ P# L9õÌàC$) R# � I9õ0 ± 63 T# J8õI9â16 V# � J9õ1 ± 16 X# … #0 %J9å1ãJ8,&A9àJ9) Z# ƒ J9 \# B8$õ"" ^# � J9õ1 ± L9 `# B8$õB8$ãµàA9àJ9)) b# ƒ J9 d# „ B8$õC$à1,L9) ² – šn# f# ƒ I9 h# � » ÷ “ DISK j# Lõå1 l# ˆšp# n# LõI9 p# ˜ #0 r# Ÿ t# Š v# Lõå2 x# Ÿ z# Š Cð#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ò#� DIRWRTE Cô#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ö#� ø#� Bú#� ââââââââââââââââPARAMETERSââââââââââââââââââââââââââââââââââ 7ü#� D$ õ DIREC±RYNAME, DISC DRIVE ..IE.. HRZåREL4,1 1þ#� C$ õ NEW » NAME ± BE INSERTED IN DIREC±RY ,$� L õ POSITI“ IN DIREC±RY ± INSERT C$ $� 0$� COMMENT THIS R”INE HAS NO ERRí CHECKING :$� IT ASSUMES THAT L HAS A ·ID DIREC±RY LO¯I“ B$� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ) $� VARIABLE USED IN SUBR”INE B $� â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â $� I9 B$� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ $ � I9õÌàC$)ã1 ± 8 $ C$õC$ã" " $ ƒ I9 $ — #0 %0,D$ $ � I9õ1 ± 8 $$ ™ #0 %Lâ16ãI9å1,&¶àC$àI9,I9)),¹ $ ƒ I9 $ ˜ #0 "$ Š ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(#� @*#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ @,#� â DIRRED â @.#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 0#� 2#� >4#� âââââââââââââââââPARAMETERSâââââââââââââââââââââââââââââ 96#� D$ õ DIREC±RY NAME,DISC DRIVE ..IE.. HRZåREL4,1 38#� C$ õ UP ± 8 CHARACTER » NAME LEFT JUST„IED :#� L õ Š VARIABLE *<#� ö0 POÆS ± RECíD THAT MATCHES C$ ">#� õå1 NO RECíD MATCHED C$ ,@#� õå2 DIREC±RY NAME,DISC DRIVE ERRí @B#� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ /D#� VARIABLES USED IN SUBR”INE BF#� â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â "H#� X9,Y9,L9,I9,J8,J9,A9à16),B8$ AJ#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ L# Ÿ šv#,X9,Y9 N# — #0 %0,D$ P# L9õÌàC$) R# � I9õ0 ± 63 T# J8õI9â16 V# � J9õ1 ± 16 X# … #0 %J9å1ãJ8,&A9àJ9) Z# ƒ J9 \# B8$õ"" ^# � J9õ1 ± L9 `# B8$õB8$ãµàA9àJ9)) b# ƒ J9 d# „ B8$õC$à1,L9) ² – šn# f# ƒ I9 h# � » ÷ “ DISK j# Lõå1 l# ˆšp# n# LõI9 p# ˜ #0 r# Ÿ t# Š v# Lõå2 x# Ÿ z# Š  5^$� ââââââââââââââââPARAMETERSââââââââââââââââââââ >`$� D$ õ DIREC±RY NAME,DISCCð#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ò#� DIRWRTE Cô#� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ö#� ø#� Bú#� ââââââââââââââââPARAMETERSââââââââââââââââââââââââââââââââââ 7ü#� D$ õ DIREC±RYNAME, DISC DRIVE ..IE.. HRZåREL4,1 1þ#� C$ õ NEW » NAME ± BE INSERTED IN DIREC±RY ,$� L õ POSITI“ IN DIREC±RY ± INSERT C$ $� 0$� COMMENT THIS R”INE HAS NO ERRí CHECKING :$� IT ASSUMES THAT L HAS A ·ID DIREC±RY LO¯I“ B$� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ ) $� VARIABLE USED IN SUBR”INE B $� â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â $� I9 B$� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ $ � I9õÌàC$)ã1 ± 8 $ C$õC$ã" " $ ƒ I9 $ — #0 %0,D$ $ � I9õ1 ± 8 $$ ™ #0 %Lâ16ãI9å1,&¶àC$àI9,I9)),¹ $ ƒ I9 $ ˜ #0 "$ Š ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍ•FÍñCWÍJÍçCÁÍJà DdB1b'v@†…ˆ–@)hÁ1cIAg5�`À–i�B��€ÁAÕBK XÍJÑæ€2ÈTæÕëÍ÷CÍñC%XÍ$JÍñC@?ÍJÍçCÍV>ÍçCÍ÷CÍ®F{æÊ‘W:ÈTî€2ÈTÍçC»TÍÜCáåÀTÍÜCÀTÍV>ÁÅÀTÍJ»T*XÍJÀT»TÍJÁÅÀTÍJÍñC/XÍJÍçCÁÅÍJÍ DáåÍ÷CÍñCÑÕÍJÍñC»T!CX>ÍŒ@ÍçC»TÍA ‚ "INCASE YOU JUST EXECUTED A RUN COMMAND..TYPE LIST INSTEAD" � âââââââââââââââââââââââââ � Dô� âââââââââââââââââDIRREDâââââââââââââââââââââââââââââââââââââââ þ� � � DE£IPTI“ @� THIS SUBR”INE SEARCHES THE DIREC±RY NAME,DISC DRIVE à� =&� ÚPLE "HRZ-REL4,2") LO¯ED IN THE STRING D$ ± SEE „ THE » E0� NAME LO¯ED IN C$ EXISTS. „ IT EXISTS, THE POÆER L IS SET ± ITS =:� ENTRY LO¯I“ IN D$. „ D$ IS INCíRECT, L IS SET ± å2. „ 8D� C$ DOES ÷ EXIST WITHIN THE DIREC±RY, L IS SET ± å1 N� X� Hb� ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Cl� âââââââââââââââââââ DIRWRTE âââââââââââââââââââââââââââââââââ ”� ž� DE£IPTI“ 9¨� THIS SUBR”INE PLACES THE FIRST 8 CHARACTERS LO¯ED 8²� IN C$ ÆO THE DIREC±RY SPEC„IED BY D$ AT LO¯I“ L. @¼� THERE IS NO ERRí CHECKING IN THIS R”INE ì YOU CAN CLOBBER /Æ� THE DIRECTRY. L SHOULD BE BETWEEN 0 ì 63 Ð� Ú� >ä� âââââââââââââââââââ ¨AME âââââââââââââââââââââââââââââââ î� ø� DE£IPTI“ 7� ¨AME IS A MAIN PROGRAM ± CHANGE THE NAME OF A » 0 � IT “LY USES DIRRED ì DIRWRTE. IT REQUESTS =� THE DIREC±RY NAME, DISC DRIVE ì » NAME ì ² “CE IT FINDS $ � THAT », REQUESTS THE NEW NAME. \� If� âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ H ’"CRUNCHER: REMOVES UNQUOTED SPACES AND REM TEXT FROM NSB PROGRAMS" F ’"VER 4.1 (07/25/78) BY JIM MERRITT, NORTH STAR COMPUTERS, INC."  ’ B � PROCESSES A NS BASIC SOURCE PROGRAM à» #1, NAMED IN S0$), ì =( � S�S A COMPACTED VERSI“ OF IT ± A DESTINATI“ » à#2, =2 � NAME IN D0$). COMPACTI“ MEANS �OVING ALL � TEXT ì A< � UNQUOTED SPACES. �S FOUND AT THE � OF MULTIåSTATEMENT @F � œS ARE �OVED ENTIRELY, AL“G WITH PRECEDING BACKSLASH. ¦ P5õÆàP5ç256)ã1\� P5 NOW SIZE OF SOURCE PGM IN DISK BLOCKS ¯ Š 6° � SCAN L$, ELIMINATE �S ìçí � TEXT ì EXTRA SPACES "µ � Š COMPACTED VERSI“ AS L$ "º Qõ0\� ‘AULT IS QUOTE FLAG OFF ¿ Sõ0\� START OF œ Ä L1õ3 DÉ � WE'LL UPDATE L$ BY WRITING OVER IT. L1 IS OUR "NEW" POSITI“. Î � Iõ4 ± ÌàL$)å1 <Ø „ L$àI,I)õQ$ ² Qõ÷àQ)\� FLIP QUOTE FLAG WHEN WE FIND “E 2â „ Q ² š\� IGNíE QUOTED SPACES ì BACKSLASHES (ì „ L$àI,I)õS$ ² š2\� ­ETE THE SPACE ö „ L$àI,I)õB$ ² SõL1ã1 > L1õL1ã1\„ L1õI ² š \L$àL1)õL$àI,I)\� XFER PROCESSED CHAR *  „ L$àI,I)ñR$ ² š2\„ S ² L1õSå1\– š< < � „ START OF œ & WE FIND �, KEEP KEYWíD BUT ­ETE REST. 2 ƒ < „ L1ö3 ² šP >A � BY THIS PT, œ IS ALL SPACES. IGNíE THEM, SUBSTITUTE �. F L$à4)õR$\L1õL1ã1 ?P L$õL$à1,L1)ãL$àÌàL$))\� PGM CODE IN œ IS NOW ALL COMPACTED &Z L$à1)õµàÌàL$))\� CíRECT ÌGTH BYTE w Š x � ™ L$ ± DESTINATI“ ‚ � Iõ1 ± ÌàL$) Œ ™ #2,&¶àL$àI)),¹ – ƒ Û Š Ð � GET ì — SOURCE !Ú Fõ1\‰ š¸ \„ Aö0 ² š3\S0$õN$ ä — #F%2,S0$ 3 Š 4 � GET ì — DEST !> Fõ2\‰ š¸ \„ Aö0 ² š—\D0$õN$ H — #F%2,D0$ — Š #¸ � GET » NAME ì TEST ITS ·IDITY  Aõ0\� NO ABíT Ì Ž š(#\� Jõ1 ± F\… P9$\ƒ 1Ö ’P9$," (HIT RETURN ONLY TO QUIT): ",\† "",N$ à „ N$ñ"" ² šê \AõF\ˆ š ê Ÿ š@,L9,E9 $ï „ Fõ2 ² ‰ šL\� GET SOURCE SIZE ô T9õ»àN$) þ „ T9ï0 ² š  „ Fõ2 ² š 4 ’N$," DOES NOT EXIST. TRY AGAIN PLEASE."\ˆ šÖ * Ÿ š@,L9,E9\A7õ1\ž N$,P5,2\A7õ0\ˆ š:  „ T9õ2 ² š& 3 ’"NOT A TYPE 2 FILE...PLEASE TRY AGAIN!"\ˆ šÖ & „ Fñ2 ² š: $0 — #2%2,N$,X5\˜ #2\„ X5ïP5 ² š: 05 ’N$," IS TOO SMALL FOR A DESTINATION FILE." ?6 ’"YOU NEED AT LEAST",P5," DISK SECTORS. TRY AGAIN."\ˆ šÖ : � – POÆ � SPAGHETTI ABOVE  Š @ � ERRí HìLING R”INE J � DETERMINE WHICH ERRí O ’ T Ž š¬& ,U … Y2\� E1õ1 ± Y2\… E2\„ E2õE9 ² – š^\ƒ Y E1õY2ã1\� ERRí ÷ FOUND ;^ „ A8 ì E1ñ2 ² E1õY2ã1\� „ A8, ANY ERRí FATAL BUT CNT C _ „ A7õ1 ì E1õ3 ² E1õ4 =` � ABOVE ADJUSTS � FACT THAT BAD »NAME SYNTAX ì NOåROOM “ 9a � DISK Š SAME BASIC ERRí CODE åå A ‘INITE PROBLEM’ c “ E1 ˆ šh,šr,š|,š†,š� h � HARDDISK ERRí Gi ’"I HAVE A PROBLEM READING YOUR DISKETTE. PLEASE TRY MAKING SURE" Ej ’"THAT THE DISKETTE CONTAINING ",N$," IS WELL-SEATED INSIDE THE" Gk ’"DRIVE YOU SPECIFIED, THEN, WHEN I ASK, TYPE ITS NAME ONCE MORE." #m ˆ šš\� – BACK ± »NAME † R”INE Cr � USER HIT CNTL C åå TILL I DEVISE A BETTER WAY, JUST QUIT PGM w ’"QUIT"\� &| � NO ROOM “ THE DISK � NEW DEST » D} ’"I'M SORRY. THERE IS NOT ENOUGH ROOM ON YOUR DISKETTE FOR ME" F~ ’"TO CREATE A COMPACTED VERSION OF ",S0$," ON IT. I'LL GIVE YOU" A ’"A CHANCE TO INSERT A ROOMIER DISKETTE ONTO WHICH I'LL PUT" G€ ’"THE COMPACTED VERSION. YOU WILL HAVE TO RETYPE THE NAME OF THE" !� ’"DESTINATION FILE, THOUGH." ‚ ˆ šš † � » NAME WAS BAD G‡ ’N$," ISN'T A LEGAL FILENAME. PLEASE REFER TO NORTH STAR DOS AND" Eˆ ’"BASIC MANUALS IF YOU DON'T KNOW HOW TO FORM ONE PROPERLY, AND" ‰ ’"PLEASE TRY AGAIN." ‹ ˆ šš <� � FATAL ERRí åå BEST JUST ± GIVE APOÝIES ì DUMP PROGRAM 6• ’"SERIOUS SYSTEM ERROR",E9," AT PROGRAM LINE",L9, $– ’"FORCES ME TO QUIT. SORRY."\� #š � RESET ERR TRAP ì Š ± »NAME † Ÿ ’\Ÿ š@,L9,E9\ˆ šÖ £ � � OF THE ERRíåHìLER %(# ‡ "PROGRAM FILE TO BE COMPACTED" '2# ‡ "FILE TO HOLD COMPACTED PROGRAM" ¬& ‡ 4\� NUMBER OF ERRíS HìLED ¶& ‡ 8,15,7,7 $À& � HARDDISK,CNTRLC,NíOOM,BADNAME ' � � OF PROGRAM ¡ING  HARDDISK,CNTRLC,NíOOM,BADNAME ' � � OF PROGRAM ¡ING  ' � � OF PROGRAM ¡ING  zvA�y 1 � 'MOVAVG' COMPUTES A ³LE OF MOVING AVERAGES / � ± USE THIS PROGRAM ‡ STATEMENTS STARTING  � “ œ 600 ARE USED. � ÚPLE, ( � 600 ‡ 10 2 � 601 ‡ 20,52,31,47,59 < � 602 ‡ 75,64,45,37,50 *F � WOULD BE USED � 10 PERIOD SALES ‡. *P � '20' IS THE ACTUAL SALES � PERIOD 1 *Z � '52' IS THE ACTUAL SALES � PERIOD 2 *d �'50' IS THE ACTUAL SALES � PERIOD 10 0n � „ A PERIOD àN) IS SELECTED, THE MOVING "x � AVERAGE � PERIOD 4 WOULD BE ‚ � à20ã52ã31)ç3 . 1Œ � � PERIOD 11 THE MOVING AVERAGE WOULD BE – � à45ã37ã50)ç3 3  � THIS PROGRAM ALLOWS THE USER ± TRY D„FE¨T .ª � ·UES OF 'N'. THE PROGRAM CALCULATES THE 0´ � D„FE¨CES BETWEEN THE �ECASTS ì THE ACTUAL 3¾ � OBSERVATI“S. THUS, USERS CAN SELECT THE ·UES .È � OF N MOST APPROPRIATE � THEIR �ECASTING Ò NEEDS.  , … SàM) 6 „ SàM)õå999999 ² š¸ @ ‚ ³à6),%6I,M,%10F2,SàM) J S1õSàM)ãS1 T ƒ M 2^ �âââ CALCULATE ì ‚ MOVING AVERAGES ì D„FE¨CES h � MõNã1 ± K r … SàM! �âââ PROGRAM\ MOVING AVERAGE % �âââ PROGRAMMER\ R. J. KREINDLER  ‹ Sà100) ( S1õ0 2 … T < „ Tñå999999 ² š¾ F �âââ DE£IBE HOW ± ENTER ‡ P ‚"ENTER DATA AS FOLLOWS "\‚ Z ‚" 600 DATA K" !d ‚" 601 DATA S1,S2,S3,...,SN"  ‚" NONE",\Š %H � Iõ0 ± J3å1\X õ B3àI)\‰ šœ\ƒ\Š R „ K3 ñ 0 ² šf \ ‚" NONE",\Š %f � Iõ0 ± K3å1\X õ C3àI)\‰ šœ\ƒ\Š p „ J4 ñ 0 ² š„ z ‚" NONE",\Š %„ � Iõ0 ± J4å1\X õ B4àI)\‰ šœ\ƒ\Š Ž „ K4 ñ 0 ² š¢ ˜ ‚" NONE",\Š %¢ � Iõ0 ± K4å1\X õ C4àI)\‰ šœ\ƒ\Š ¬ „ L1 ñ 0 ² šÀ ¶ ‚" NONE",\Š %À � Iõ0 ± L1å1\X õ D1àI)\‰ šœ\ƒ\Š Ê „ M1 ñ 0 ² šÞ Ô ‚" NONE",\Š %Þ � Iõ0 ± M1å1\X õ E1àI)\‰ šœ\ƒ\Š è „ L2 ñ 0 ² šü ò ‚" NONE",\Š %ü � Iõ0 ± L2å1\X õ D2àI)\‰ šœ\ƒ\Š  „ M2 ñ 0 ² š  ‚" NONE",\Š % � Iõ0 ± M2å1\X õ E2àI)\‰ šœ\ƒ\Š $ „ L3 ñ 0 ² š8 . ‚" NONE",\Š %8 � Iõ0 ± L3å1\X õ D3àI)\‰ šœ\ƒ\Š B „ M3 ñ 0 ² šV L ‚" NONE",\Š %V � Iõ0 ± M3å1\X õ E3àI)\‰ šœ\ƒ\Š ` „ L4 ñ 0 ² št j ‚" NONE",\Š %t � Iõ0 ± L4å1\X õ D4àI)\‰ šœ\ƒ\Š ~ „ M4 ñ 0 ² š’ ˆ ‚" NONE",\Š %’ � Iõ0 ± M4å1\X õ E4àI)\‰ šœ\ƒ\Š œ ‚ A$àX,X)," ",\Š ¦ Z1 õ ÆàZ1â1000) "° Z2 õ Z2â1.0E3åZ1â1.0E6ãZ1â137 º Z1 õ Z2ç999863 Ä Š Î ‚\‚\‚\‚ Ø †"ANOTHER HAND? ",X$ â „ X$ õ "YES" ² šd ì ‚\‚" Z2 = ",Z2 ) ‹ N1à31),N2à31),N3à31),N4à31),B$à40) ) ‹ J1à31),J2à31),J3à31),J4à31),B0à31) - ‡ 32,32,32,32,32,0,1,2,4,5,6,7,32,8,9,10 6( ‡ 12,13,14,15,32,16,17,18,20,21,22,23,32,24,25,26 -2 ‡ 32,32,32,32,0,1,2,3,5,6,7,32,8,9,10,11 6< ‡ 13,14,15,32,16,17,18,19,21,22,23,32,24,25,26,27 0F ‡ 4,5,6,7,32,8,9,10,12,13,14,15,32,16,17,18 6P ‡ 20,21,22,23,32,24,25,26,28,29,30,31,32,32,32,32 1Z ‡ 5,6,7,32,8,9,10,11,13,14,15,32,16,17,18,19 6d ‡ 21,22,23,32,24,25,26,27,29,30,31,32,32,32,32,32 0n ‡ 32,32,32,32,32,32,32,32,32,0,1,2,32,4,5,6 4x ‡ 32,8,9,10,32,12,13,14,32,16,17,18,32,20,21,22 0‚ ‡ 32,32,32,32,32,32,32,32,1,2,3,32,5,6,7,32 5Œ ‡ 9,10,11,32,13,14,15,32,17,18,19,32,21,22,23,32 4– ‡ 32,8,9,10,32,12,13,14,32,16,17,18,32,20,21,22 6  ‡ 32,24,25,26,32,28,29,30,32,32,32,32,32,32,32,32 5ª ‡ 9,10,11,32,13,14,15,32,17,18,19,32,21,22,23,32 6´ ‡ 25,26,27,32,29,30,31,32,32,32,32,32,32,32,32,32 ¾ Ž È A$õ"PK0*." &Ò �Iõ0±31\…N1àI)\ƒ\�Iõ0±31\…N2àI)\ƒ &Ü �Iõ0±31\…N3àI)\ƒ\�Iõ0±31\…N4àI)\ƒ &æ �Iõ0±31\…J1àI)\ƒ\�Iõ0±31\…J2àI)\ƒ &ð �Iõ0±31\…J3àI)\ƒ\�Iõ0±31\…J4àI)\ƒ $ú ‚"*** THE GAME OF CHECKERS ***" ( †"WOULD YOU LIKE INSTRUCTIONS? ",C$  „C$õ"NO"²š"  ‰šJ\‰š® ," ‰šb\†"WHO GOES FIRST? (0=ME,1=YOU) ",N , „Nõ0²Võå1 6 „Nõ1²Võ1 @ ‰šv\‰š\ˆš@ -J ‚"THE RULES OF CHECKERS ARE AS FOLLOWS:" /T ‚" 1. I ALWAYS PLAY RED, YOU PLAY BLACK." (^ ‚" 2. YOU CHOOSE WHO PLAYS FIRST." 2h ‚" 3. IF YOU HAVE A JUMP, YOU MUST TAKE IT." 4r ‚" 4. IF YOU DON'T TAKE THE JUMP, YOU FORFIET" .| ‚" YOUR MAN, AND YOU LOSE YOUR TURN." ,† ‚" 5. I ONLY KNOW ABOUT SINGLE JUMPS." 3� ‚\†"LET ME KNOW WHEN YOU ARE READY (1=RDY) ",I š „Iõ1²Š ¤ ˆ š� 2® ‚"THE BLACK SQUARES ARE NUMBERED AS FOLLOWS:" ¸ ‚\�Nõ1±25\‚" ",\ƒ\‚"RED"  ‚"SYMBOL:",\�Nõ1±15\‚" ",\ƒ &Ì ‚"0 1 2 3"\‚"0 = RED PAWN", $Ö �Nõ1±8\‚" ",\ƒ\‚"4 5 6 7" %à ‚"* = RED KING",\�Nõ1±10\‚" ",\ƒ &ê ‚"8 9 10 11"\‚"P = BLK PAWN", %ô �Nõ1±7\‚" ",\ƒ\‚"12 13 14 15" $þ ‚"K = BLK KING",\�Nõ1±9\‚" ",\ƒ $ ‚"16 17 18 19"\‚". = EMPTY", & �Nõ1±10\‚" ",\ƒ\‚"20 21 22 23" & �Nõ1±21\‚" ",\ƒ\‚"24 25 26 27" && �Nõ1±19\‚" ",\ƒ\‚"28 29 30 31" 0 �Nõ1±24\‚" ",\ƒ\‚"BLACK" ): ‚\‚\‚"I'LL WAIT WHILE YOU COPY THIS" &D †"ENTER 1 WHEN YOU ARE READY. ",I N „Iõ1²Š X ˆšD )b �Nõ0±11\B0àN)õ2\ƒ\�Nõ12±19\B0àN)õ4\ƒ l �Nõ20±31\B0àN)õ0\ƒ\Võå1\Š (v ‚"THE BOARD NOW LOOKS LIKE THIS:"\‚ +€ B$õ""\�Nõ1±24\B$õB$ã" "\ƒ\Nõ0\‰šÚ\‚B$ +Š B$õ""\�Nõ1±22\B$õB$ã" "\ƒ\Nõ4\‰šÚ\‚B$ +” B$õ""\�Nõ1±24\B$õB$ã" "\ƒ\Nõ8\‰šÚ\‚B$ ,ž B$õ""\�Nõ1±22\B$õB$ã" "\ƒ\Nõ12\‰šÚ\‚B$ ,¨ B$õ""\�Nõ1±24\B$õB$ã" "\ƒ\Nõ16\‰šÚ\‚B$ ,² B$õ""\�Nõ1±22\B$õB$ã" "\ƒ\Nõ20\‰šÚ\‚B$ ,¼ B$õ""\�Nõ1±24\B$õB$ã" "\ƒ\Nõ24\‰šÚ\‚B$ ,Æ B$õ""\�Nõ1±22\B$õB$ã" "\ƒ\Nõ28\‰šÚ\‚B$ Ð ‚\‚\Š Ú �KõN±àNã3)\XõÆàB0àK)ã.5)ã1 ä B$õB$ãA$àX,X)ã" "\ƒ î Xõ40åÌàB$)\„Xð0²Š ø �Kõ1±X\B$õB$ã" "\ƒ\Š  „Vô0²š   ‰š*  ‰šâ\Š   ‰šx\ˆš &* †"YOUR MOVE. ENTER FROM,TO: ",I,J 4 Aõ0\X1õå1\X2õå1 > „B0àA)ö1²šj H „N1àA)ö31²šŽ R „B0àN1àA))ô2²šŽ \ „B0àN1àA))õ4²šŽ f „J1àA)ö31²šŽ p „B0àJ1àA))ñ4²šŽ z „IõA²„JõJ1àA)²š’ „ X1õA\X2õJ1àA) Ž „N2àA)ö31²šÔ ˜ „B0àN2àA))ô2²šÔ ¢ „B0àN2àA))õ4²šÔ ¬ „J2àA)ö31²šÔ ¶ „B0àJ2àA))ñ4²šÔ À „IõA²„JõJ2àA)²šœ Ê X1õA\X2õJ2àA) Ô „B0àA)ñ1²šj Þ „N3àA)ö31²š$ è „B0àN3àA))ô2²š$ ò „B0àN3àA))õ4²š$ ü „J3àA)ö31²š$  „B0àJ3àA))ñ4²š$  „IõA²„JõJ3àA)²š¦  X1õA\X2õJ3àA) $ „N4àA)ö31²šj . „B0àN4àA))ô2²šj 8 „B0àN4àA))õ4²šj B „J4àA)ö31²šj L „B0àJ4àA))ñ4²šj V „IõA²„JõJ4àA)²š° ` X1õA\X2õJ4àA) j AõAã1\„Aô32²š> t „X1ô0²šº ~ IõX1\JõX2\Xõ1 (ˆ ‚"PENALTY! MUST JUMP ",I," TO ",J\Š ’ Xõ0\X1õ1\Š œ Xõ0\X1õ2\Š ¦ Xõ0\X1õ3\Š ° Xõ0\X1õ4\Š º „B0àI)ô2²šÎ )Ä ‚"INVALID; YOU LOSE YOUR TURN"\Xõ2\Š Î „B0àJ)ñ4²šÄ Ø Xõ0\X1õå1\Š â „Xö0²šd ì „X1ö0²š ö B0àJ)õB0àI)\B0àI)õ4\ˆšF  „X1ö1²š )  B0àJ)õB0àI)\B0àN1àJ))õ4\B0àI)õ4\ˆšF  „X1ö2²š( ) B0àJ)õB0àI)\B0àN2àI))õ4\B0àI)õ4\ˆšF ( „X1ö3²š< )2 B0àJ)õB0àI)\B0àN3àI))õ4\B0àI)õ4\ˆšF $< B0àJ)õB0àI)\B0àN4àI))õ4\B0àI)õ4 F �Aõ0±3\„B0àA)õ0²B0àA)õ1 P ƒ\�Aõ28±31\„B0àA)õ2²B0àA)õ3 Z ƒ\VõåV\Š d „Xö1²šF n B0àI)õ4\ˆšF "x ‚"MY MOVE. ",\Aõ0\X1õå1\X2õå1 ‚ „B0àA)ô2²šà Œ „B0àA)õ4²šà – „B0àA)õ2²š@   „N1àA)ö31²šð ª „B0àN1àA))õ4²šÜ ´ „B0àN1àA))ö1²šð ¾ „J1àA)ö31²šð È „B0àJ1àA))ñ4²šð Ò Xõ0\IõA\JõJ1àA)\X1õ1\ˆšþ Ü „X1ï0²šð æ X1õA\X2õN1àA) ð „N2àA)ö31²š@ ú „B0àN2àA))õ4²š,  „B0àN2àA))ö1²š@  „J2àA)ö31²š@  „B0àJ2àA))ñ4²š@ " Xõ0\IõA\JõJ2àA)\ˆšþ , „X1ï0²š@ 6 X1õA\X2õN2àA) @ „N3àA)ö31²š� J „B0àN3àA))õ4²š| T „B0àN3àA))ö1²š� ^ „J3àA)ö31²š� h „B0àJ3àA))ñ4²š� r Xõ0\IõA\JõJ3àA)\ˆšþ | „X1ï0²š� † X1õA\X2õN3àA) � „N4àA)ö31²šà š „B0àN4àA))õ4²šÌ ¤ „B0àN4àA))ö1²šà ® „J4àA)ö31²šà ¸ „B0àJ4àA))ñ4²šà  Xõ0\IõA\JõJ4àA)\ˆšþ Ì „X1ï0²šà Ö X1õA\X2õN4àA) à AõAã1\„Aô32²š‚ ê „X1ô0²š ô IõX1\JõX2\Xõ0\X1õå1 þ �Nõ1±1000\Kõ0\ƒ ! ‚"I MOVE FROM ",I," TO ",J\Š  ‚"I CAN'T MOVE - I CONCEDE" !l  2B2B2B2B2BA A@APA`