NSUG#16  PILOT:  PLTST&  PILOT? # GOLD& &  MAZE- /  REVERSE-< BMRV2: C SOFT0* ^ SOFT1* n  SOFT? { SOFT$ } STORM-  TDLMY*  CHASE- 9 HMEMT* / BAS3MVR*W CALEND: - MONTH: >  MESSAGE:H  C!R"" " Aw$ w%  R RR`` LrH,LOAD A NEW PROGRAM? BYE: Y *% BYE:ABCDEFGHIJKLMNOPQRSTUVWXYZBYE 1!"4!T  ä ä ä `` 1V̀020677 PILOT-8080, 1.1 COPYRIGHT (C) 1977,J.A.STARKWEATHER !r":"B!"> 6>H2D2E2F!"@*:~ #Ã͝#":+ͮz,:̺ʀ*<ʃÀ#"!K"":7""͎*":7y#"++̈́ͧ*"q*"*""y!͝#~ ,͝#~ ,:F2F!͝#z^~ V#z^~ V:F2F!͝#z~n:F2F0:xɯ:F#=}4YʓNʜ:Kʥ:K¥ɯ)ʮ++~(#F#~ɯ*"|! !V~ȸ###^#Vɯ!####~T yA X M & MC  J R C U E Y yN yLOAD INMAX NEW$ DP z PRINT SAVE IEP |BYE EDIT !":"B ͚{I>H_!Ds*, <+"!`F#^1{*,*>*2*T<*B͝#":!I !  p#yO*4! p#*!|}#͹a+a-a+~0:0__#~0:0_+U{ { _yOgy00ʅw#{0w#> w>-w#_ɯ2Iä2Iz,*$͝#:Iʤá"Fy  *?T +> w!?*Fä*F~ O#~ # #~ )FFF~ #,~ +4,T͹yO#H͹h#pyO#V#> w#Tybk++4YʊN> w:7*"KT ~ yO#ßyO+î~G ,;:.?!"()'ɯ2H**F#7y":H2H*͝yO*T "6> w*!2*#"!HN~ IyO#9O~$# yO#N~FAnZnɴ͝AͮH*"8""!L" *8L$ʜ#ʭó ‰L*"úß* *8pT > w!LI yO* *8T DM" `i#N#"8A#^!e* !pyOT " y" O* *8T DM" `i<+"8*4#͖? #DM* `ipyOT " *,$p ?T͈ ͳ #„ #~2J͈ ͟  ͈ e !~#~ È 0 :!J ͈ ß !͝A*4 y!T !?͝A*4 y!?T kb+> w]T+~ xG "46! !,1!JF#s!G6^+ !G6,*"<̀ *<" !"ͩ !"!"yv *<+~ r #~ r 1 { ɴ2Kɯ2K*<͟ ʔ #p#Æ #> w#"<~G :G!> w#*͝*T +> w#> w*!͝!T *"~ # #~ " * #F+p~ # *=7yw #,-, "2I*` ͟ !Is*8#, s -` +O ͟ s #͟ :Id _s #͟ :Ir d _ y! c y!  y!) ,_`ʰ 1"8"8F#^*,`w F#sɴ:E8 ! *46 *>6+"4!VAx[w#>w#xG !E~% !6 wO*:!$}oros:EO!$}oVo^":!E~wyF#p#yOT !"6!DF*6_ʰ ʰ ʥ a w#"6 ʡ xo  q < e x!DNo *6+"6r   !~""/  ~/   ; ! _ w# w# + < *" *"I ! 6" !E6~#T]O*@m ` I  *@m z!I q !"@n ! "@n !"@! "@n !"@@ʳ ʾ ʳ y!e ͈ @ OI - LABEL NOT FOUND /OVERFLOW *NO ROOM *ILLEGAL EXPRESSION *VALUE > 99 *VALUE < -99 *USE DEPTH EXCEEDED *NUMERIC RESPONSE REQUIRED *INTERRUPTED T: T:PILOT-8080, 1.1 :LOAD A NEW PROGRAM? A: M: Y JN:*% T:ENTER PILOT PROGRAM :TERMINATE INPUT WITH CTL/Z LOAD: *% IEP: (T:TEST PROGRAM OF PILOT-8080 FUNCTIONS T: (T:YOU CAN TRY PILOT CORE INSTRUCTIONS: : T: TO PRESENT TEXT. : A: TO ACCEPT AN ANSWER. (: M: TO MATCH ELEMENTS OF AN ANSWER. $: J: TO JUMP TO A LABELED PLACE. : U: TO USE A SUBROUTINE. 3: E: TO END A SUBROUTINE OR THE ENTIRE PROGRAM. !: C: FOR LIMITED COMPUTATION. 7: R: TO INSERT A REMARK WITH NO OPERATIONAL EFFECT. : 0:BEGIN BY TYPING ANYTHING, THEN PRESS 'RETURN' <: USE DELETE (SHIFT O) OR RUBOUT TO ERASE ONE LETTER, AND 9: CTL/U TO KILL A LINE BEFORE YOU HAVE PRESSED RETURN. A:$WHAT T:YOU TYPED $WHAT. T:$WHAT IS WHAT YOU TYPED. "T: PRESS 'RETURN' TO CONTINUE. A: T: ?:Y OR N APPENDED TO ANY INSTRUCTION MAKES ITS USE CONDITIONAL #: UPON THE LAST ATTEMPTED MATCH. 6:Y: OR N: ALONE ARE SHORTHAND VERSIONS OF TY: OR TN: T: *TESTM 5T:I WILL LOOK FOR 'ABC', ' DEF', 'GHI ', OR ' JKL ' >T:NOTE THE SPACES. THEY ARE IMPORTANT IF THE LETTERS WE ARE 4T:TRYING TO MATCH ARE NOT AT EITHER END OF A LINE. A: M:ABC, DEF,GHI , JKL , TY:MATCH TN:NO MATCH U:*ASK  JY:*TESTM J:*TESTC  *ASK T:AGAIN? (Y OR N) A: M: Y E:  *TESTC T:TYPE A NUMBER FROM 0 TO 99 'T:I USE THE FIRST TWO DIGITS ENTERED. A:#A T:ANOTHER NUMBER PLEASE A:#B T:YOUR NUMBERS ARE #A AND #B. T:I WILL SUBTRACT THEM. C:C=A-B T:#A - #B = #C T: T: TYPE 'NEXT' TO GO ON A: M:NEXT  JN:*TESTC T: *TESTPLUS C:A=0 C:B=0 3T:TESTS CAN BE CONDITIONAL ON A NUMERIC VALUE > 0 6T:A NUMERIC VARIABLE IS APPENDED AS IN 'J(X):*LABEL' T:TYPE 'ABC' OR 'DEF' A: M:ABC CY:A=1 M:DEF CY:B=1 T(A):ABC FOUND T(B):DEF FOUND C:C=A+B  J(C):*END !T:NO MATCH OF EITHER ABC OR DEF  *END T:END OF TEST U:*ASK  JY:*TESTPLUS T: 8:NINE OTHER INSTRUCTIONS ARE AVAILABLE IN THIS SYSTEM: 1: MC: TO LOOK FOR TEXT WITH COMMAS IN IT. 9: INMAX: TO LIMIT THE NUMBER OF CHARACTERS ACCEPTED. 7: NEW$ TO ERASE STORED $TEXT (STRING VARIABLES). 4: DP: TO DISPLAY THE PROGRAM AT THE CONSOLE. 5: LOAD: TO LOAD A NEW PROGRAM. ($TEXT REMAINS). 6: SAVE TO SEND THE PROGRAM TO A STORAGE DEVICE. 6: PRINT: TO SEND THE PROGRAM TO A LISTING DEVICE. /: EDIT: TO LEAVE PILOT AND USE AN EDITOR. 1: BYE: TO LEAVE PILOT AND GO TO A MONITOR.  T: / T:YOU CAN LOOK FOR TEXT WITH COMMAS IN IT. ; T:A CARET '^' (SHIFT N) IS USED AS A SEPARATOR FOR MC: *TESTMC ) T:I WILL LOOK FOR 'ABC,D' OR 'A,BC ' A:$ENTRY  MC:ABC,D^A,BC Y:YES, $ENTRY IS OK. .N:NO, YOU TYPED $ENTRY INSTEAD OF THE ABOVE. U:*ASK  JY:*TESTMC T: *TESTIN )T:INMAX:1 WILL BE USED TO LOOK FOR 'A'. 3T:PRESS ONLY A SINGLE KEY. DO NOT PRESS 'RETURN' $T: ---- --- INMAX:1  A: M:A Y:YOU TYPED 'A' N:THAT WASN'T 'A' T:AGAIN? (Y OR N)  A: INMAX:72 M: Y  JY:*TESTIN T: *ERRORS AT:I WILL SHOW SOME ERROR MESSAGES. AFTER EACH, PRESS 'RETURN'. 2T:I WILL TRY TO JUMP TO AN UNKNOWN LABEL '*HERE' T:PRESS 'RETURN' A: J:*HERE T: $T:A C: INSTRUCTION HAS BAD SYNTAX. T: PRESS 'RETURN' A:  C:X NOT Y 6T:THE EXPRESSION FIELD IS DISPLAYED + ERROR MESSAGE. T: PRESS 'RETURN' A: T: /T:THE VALUE OF X WILL BECOME GREATER THAN 99. T:PRESS 'RETURN' A: C:X=99 C:X=X+10 0T:THE STATEMENT CAUSING OVERFLOW IS DISPLAYED. !T:THE VALUE OF X WAS LEFT AT #X >T:A SIMILAR MESSAGE APPEARS WHEN X BECOMES SMALLER THAN -99. T:PRESS 'RETURN' A: &T:TYPE 'R' TO REPEAT ERROR MESSAGES. INMAX:1 A: INMAX:72 M:R  JY:*ERRORS T: -T:AN ILLEGAL STATEMENT IS SIMPLY DISPLAYED. MW:* $T:MW: IS NOT LEGAL IN THIS SYSTEM. T:  Z1 z H Q1 R f \ WR,S1) z f  p X , z   S10 V  WR,S1) V  RH   WR1,S)   SV   Z1   Q1    WR,S1)     X F,,    X F,  SV .  Z1 L  Q1 $ 8 . WR,S1) L 8  B X F, L F V RH  ` WR1,S)  j SV  t Z1  ~ Q1    WR,S1)     X ,    SV   Z1   Q1    WR,S1)       WR1,S)C  CC1  VR1,S)2  RR1 ( CHV1  2 Q0 <  F WR,S1)C P CC1 Z VR,S1)1 d SS1 n CHV1  x Q0    WR1,S)C  CC1  VR,S)0   VR,S)3    VR,S)2  RR1  CHV1   Q0    Q1 T  WR,S1)C  CC1  VR,S)0 ,  VR,S)3 " 6 , VR,S)1 6 SS1 @ CHV1  J  T Z1 ^ VR,S)0  h VR,S)3 r Q0 |   VR,S)1  Q0  R1\ S1      J1 V  "I",  I1 H  VI,J)2   " ",    " I",  I   I1 H  VI,J)0 D & VI,J)2 D 0 ": ", : N D ":--", N I X ":" b J !l "DO YOU WANT ANOTHER MAZE", v A$  A$1,1)"Y"  A$1,1)"N" ) "A YES OR NO WILL DO JUST FINE. ",  v   X0)21)\  X0)31)\ /@ $ REVERSE A GAME OF SKILL 4 PEOPLES'S COMPUTER COMPANY, MENLO PARK CA ) ENTERED BY GD FCH 415)3254209 ( R36863) 2 RR256) < A20),A$3) +F N NUMBER OF NUMBERS 1 THRU N) P N9 &Z "DO YOU WANT THE RULES (Y/N) ", d A$ n A$1,1)"N" x & $ MAKE A ROM A1) AN)  A1)N1)R))2  K2 N  AK)N0))1  J1 K1  AK)AJ)  J  K  IGINAL START  $ "HERE WE GO ... THE LIST IS:" T0  " "HOW MANY SHALL I REVERSE",  R  R0  " RN @ 3, "OOPS! - TOO MANY. I CAN REVERSE AT MOST ",N 6  @ TT1 &J REVERSE R NUMBERS NEW T K1 R2) ^ ZAK) h AK)ARK1) r ARK1)Z | K    CHECK A WIN  K1 N  AK)K   K " "YOU WON IN ",T," MOVES!!!"  "PLAY AGAIN (Y/N) ",  A$  A$1,1)"N"  ' SUBRINE A1) AN)  K1 N  AK),  K   #& SUBRINE THE RULES =0 "THIS IS THE GAME OF 'REVERSE'. TO WIN, ALL YOU HAVE" ?: "TO DO IS ARRANGE THE LIST OF NUMBERS (1 THROUGH ",N,")" =D "IN NUMERICAL ORDER FROM LEFT TO RIGHT. TO MOVE, YOU" =N "TELL ME HOW MANY NUMBERS (COUNTING FROM THE LEFT) TO" 7X "REVERSE. FOR EXAMPLE, IF THE CURRENT LIST IS:" b l " 2 3 4 5 1 6 7 8 9" v 0 "AND YOU REVERSE '4' THE RESULT WILL BE:"   "5 4 3 2 1 6 7 8 9"  . "NOW IF YOU REVERSE '5', YOU WILL WIN!"   "1 2 3 4 5 6 7 8 9"  7 "NO DOUBT YOU WILL LIKE THIS GAME OF SKILL, BUT" / "IF YOU WANT TO QUIT, REVERSE 0 (ZERO)."     DIET CALCULATI PROGRAM  ERFACE AGEOCT, 1976 ) WRITTEN BY MARTIN C. BEATTIE, M.D. 7( ADAPTED NTH STAR BASICKATHY RAZZO91077 42 BMR DETERMINES BASIC MEOLIC RATE DIETING &< P$12)\\TURN ER RESET COUNT F P1$20)\\TURN ER OFF ,P P2$18)\\TURN ER DO RESET COUNT Z Z$CLEAR EEN d 128\Z$26)\B$7)\P$ 2nZ$\23),"DIET CALCULATION PROGRAM"\\\P1$ 0x "DO YOU WANT INSTRUCTIONS? (Y/N) ",A$\\  A$"Y"   A$A$1,1)\ 4 "SELECT METRIC OR ENGLISH MEASUREMENTS ",A$\  M0\ A$"M" M1  "MALE OR FEMALE ",A$\  S0\ A$"M" S1  "HEIGHT ", ! M1 " IN CENTIMETERS ",  M1  " IN INCHES ",  H\  "WEIGHT ", " M1 6 ," IN POUNDS ", 6 W\ @ M0 T J HH2.54\WW2.2\W2W T "AGE (YEARS) ",A\ ^ r h l !r CALCULATI OF SURFACE AREA !| S1W.425H.72571.8410000  LE CALCULATE BMR   A1,M1,F1  A20   AA1   0  A180 0  AA1)3  ; BMR LESTARD OF FLEICH, HELV.MED.ACTA,18,231951) > 1,53,53,2,52.4,52.4,3,51.3,51.2,4,50.3,49.8,5,49.3,48.4 ? 6,48.3,47,7,47.3,45.4,8,46.3,43.8,9,45.2,42.8,10,44,42.5 C 11,43,42,12,42.5,41.3,13,42.3,40.3,14,42.1,39.2,15,41.8,39.7 8 16,41.4,36.9,17,40.8,36.3,18,40,35.9,19,39.2,35.5 8 20,38.6,35.3,25,37.5,35.2,30,36.8,35.1,35,36.5,35 : 40,36.3,34.9,45,36.2,34.5,50,35.8,33.9,55,35.4,33.3 : 60,34.9,32.7,65,34.4,32.2,70,33.8,31.7,75,33.2,31.3 & 80,33,30.9 0 ESTIMATE BMRHR : S1 X D B1BM IN PROGRAM N B1F1S1\ b X B1M1S1 b B1B1.5)\ *lZ$\ "HOW MANY HOURS DO YOU SPEND:"\ +v " SLEEPING OR RESTING ",T1)  " SITTING ",T2) 0 " STANDING, LIGHT ACTIVITY ",T3) 2 " WALKING, MODERATE ACTIVITY ",T4) 6 " EXERCISING OR DOING HEAVY WORK ",T5) * TO\ I1 5\TTI)T\\ T24 \ A\"THERE ARE 24 HRS. IN THE DAY. HERE ARE YOUR SELECTIONS:"  I1 5 I,  \   I1 " SLEEPING",  I2 " SITTING",  I3 " STANDING",  I4 " WALKING",  I5 " HEAVY WORK",   20),\TI)   I * "TOTAL = ",20),T\ '4"WHICH WOULD YOU LIKE TO MODIFY ", )> "(ENTER ITEM #,NEW HOURS) ",I,TI) H I0 \ R  \ FIND AL CALIC USE f E285\E3150\E4240\E5350 p  z  C1)T1)B1.5) %C2)T2)B1E2B1)W70)).5 %C3)T3)B1E3B1)W70)).5 %C4)T4)B1E4B1)W70)).5 %C5)T5)B1E5B1)W70)).5  H"ESTIMATED BASAL METABOLISM = ",B1," KCAL/HR OR ",B124," KCAL/DAY" ;"ESTIMATED CALORIC REQUIREMENTS FOR DAILY ACTIVITIES:"  T30\ I1 5   20),CI) T3T3CI)  I\T3T3.5) \"TOTAL = ",20),T3  DIET PLANNING ?\"NOW WE MAY BEGIN TO PLAN A WEIGHT REDUCTION PLAN BASED" ?$"UPON YOUR CALORIC NEEDS. REMEMBER, A GRADUAL LOSS (I.E." @."1 LB/WEEK) IS BETTER NUTRITIONALLY, EASIER TO ATTAIN, AND" 28"SHOULD NEVER LEAVE YOU FEELING 'STARVED'."\ B M1 ` 4L "HOW MUCH WEIGHT DO YOU WANT TO LOSE (LB) ",L1 V t 4` "HOW MUCH WEIGHT DO YOU WANT TO LOSE (KG) ",L1 j L1L12.2 2t\"HOW MANY WEEKS DO YOU PLAN TO TAKE ",T\Z$ :~D4L1T)73500).5)\ 3500 CALIESLB OF BODY FAT G\"YOU MAY EITHER DECREASE YOUR DAILY INTAKE BY ",D4," CALORES OR" :"INCREASE YOUR ACTIVITY (OUTPUT) BY THE SAME AMOUNT."  R4T3D4\ RDREQUIRED DIET 9"IF YOU CHOOSE TO REDUCE YOUR INTAKE, YOUR REQUIRED" 8"DIET WILL CHANGE SLIGHTLY AS YOUR WEIGHT DROPS."\ A"BEGINNING OF ",20)," WEIGHT ",30)," ALLOWED INTAKE/DAY" W12.2W\ M1 W1W !"WEEK 1 ",20),W1,35),R4  I1 T  WWL12.2)T  r  C1)T1)B1     T30\ X1 5  T3T3CX)\ X  W12.2W\ M1 W1W (("WEEK ",I1,20),W1,35),T3D4) 2 I 5<\"TO MAINTAIN YOUR NEW WEIGHT OF -- ",35),W1, F M0 "LBS." P M1 "KGS." Z 5d"YOUR ALLOWED CALORIC INTAKE IS -- ",35),T3) n\ x"GOOD LUCK!!" ' "AGAIN? (Y/N) ",A$\A$1,1)"N" / "SAME PERSON? (Y/N) ",A$\A$1,1)"N"<  WW2  l  INSTRUCTIS Z$\P$ 23),"INSTRUCTIONS" ?" DIETING IS DIFFICULT. FAD DIETS, WHICH OFTEN STRESS" B"A LIMITED FOOD TYPE (IE. EGGS, OR THE ELIMINATION OF CARBO-" D"HYDRATES), DO LITTLE TO ESTABLISH GOOD DIETARY PATTERNS WHICH" C"WOULD HELP YOU TO MAINTAIN YOUR WEIGHT AT A NEW LOWER LEVEL." F" THE BEST DIETS ATTEMPT TO MAINTAIN A BALANCE OF FOOD TYPES" A"SO THAT DAILY NUTRITIONAL REQUIREMENTS ARE MET, THE DIETER" A"IS ABLE TO EAT FOODS THAT ARE PREPARED FOR THE REST OF THE" C"FAMILY, AND SOUND DIETARY PRINCIPLES ARE INTRODUCED THAT CAN" 6"BE CONTINUED AFTER THE WEIGHT LOSS IS ACHIEVED." A"" A BALANCED DIET SHOULD CONTAIN NO LESS THAN 12 TO 14%" ?,"PROTEIN AND NO MORE THAN 35% FAT. THE REMAINDER WOULD BE" E6"CARBOHYDRATE--PREFERABLEY OF THE UNREFINED TYPE WITH A MINIMUM" @@"OF SUGAR AND WHITE FLOUR. THE FOOD TYPES SHOULD BE VARIED" @J"AND MANY BOOKS AND MANUALS ARE AVAILABLE WHICH DETAIN THE" *T"NUTRITIONAL VALUE OF VARIOUS FOODS." 6^20),\"PRESS 'RETURN' TO CONTINUE ",R$\Z$\P2$ Ch" NO DIET SHOULD BE UNDERTAKEN WITHOUT A GENERAL PHYSICAL" @r"CHECK-UP BY A PHYSICIAN. WEIGHT CONTROL PROBLEMS MAY WELL" E|"BE DUE TO METABOLIC DEFECTS (I.E. DIABETES, THYROID DISORDERS)" 5"AND UNSUPERVISED DIETING COULD BE DANGEROUS."\ B" THE PURPOSE OF THIS PROGRAM IS TO INTRODUCE THE DIETER" A"TO THE INTERREALTION BETWEEN HIS CURRENT SIZE, BASAL META-" @"BOLIC RATE, ACTIVITY, AND ENERGY REQUIREMENTS. HOPEFULLY," C"WITH THIS KNOWLEDGE, THEY MAY BE BETTER ABLE TO MODIFY THEIR" E"DIET AND/OR ACTIVITY TO INTELLIGENTLY AND STEADILY MOVE TOWARD" 0"AND MAINTAIN THEIR DESIRED WEIGHT."\\P1$ 620),\"PRESS 'RETURN' TO CONTINUE ",R$\Z$\P2$ D" ESTIMATIONS OF BASAL METABOLISM AND CALORIC ACTIVITY ARE" G"JUST THAT. BMR IS CALCULATED FROM HEIGHT, WEIGHT AND AGE AND MAY" <"VARY + OR - 10%. ACTIVITY ESTIMATES ARE AS FOLLOWS IN" "CALORIES/HR:" 0"ACTIVITY",20),"CALORIES/70 KG PERSON/HR" "SLEEP",25),"BMR" "SITTING",25),"85" "STANDING",25),"150" &"WALKING",25),"240" 0"EXERCISE",25),"350" D:"THESE ESTIMATES COULD BE MODIFIED. THEY ARE USED AS STANDARDS" >D"WHICH ARE RECALCULATED FOR YOUR GIVEN WEIGHT. OBVIOUSLY" DN"MANY EXERCISES REQUIRE MORE THAN 350 CALORIES/HR BUT THEY ARE" BX"NOT GENERALLY SUSTAINED FOR THAT AMOUNT OF TIME. THE AMOUNT" ,b"CHOSEN WAS INTENDED TO BE AN AVERAGE." 6l20),\"PRESS 'RETURN' TO CONTINUE ",R$\Z$\P2$ v \ `p  qp    @_!Nw# F1e#~:FL?!"Pxe œ}j6 #6#>!s_±>r+_r r[rGw>ʩ#r6 #@Gx  >2qZ*P:qO&go2# & 2 ɯf ?MZ!"h"R9!#~ ?\"r ?/—R#~/ʇ Zw> É ?Zg x?Z"f!Z ?^g x?^"h!^! T])))0 ?_! ))))?؅o0 Y!PF#F 0v#F *f:iH:hH7#"fF> #M!PGlw#xlw0:!Pd͇ ͇0w6/4҉#DUMPEXECENTRFILE>LISTDELTASSMhPAGEICUSTSFIL`LFILCOPYSKPF[LEDRjSAVELOADTAPECFILCHEK _ _:ZZ>2j:g :f:j2k*f~6:k=1:^Z*f*h!fO2! **͡:}o|g:fZ2#"͇|´E}ö:*å:!®x !&**͇*"*" *" *:®x:^Z!fO!hOG:fZ!:ff!:hx2~Zw:!x[:(=vus*f:®x‹+"| : :^Z:R!R!*f"!:*f*h͡:w #:R9!:f2hfx!R&*:hfx)*f:Rʹc:Z]:Yx!u`:Zʋ*f|ʋ!z`*W!R~ #‚! Fwx# :Z*f""}ʲ62 :S!y2Y~##33##F #:Y=0#~+ ~##ɯ2Y!R&NN"Wz2Y!Dz!oM_!`WHAT? FULL NO NO TAPE ERROR ͘Ze!"r9 ژ/g x?Z}*fwHä!#~0Z:Z "P ͪ#͚! ͢*͈q"__ F+6"N: %H8*T]̓"͑H/̓ͪ~̓b#>_o$w#Èw+ÑF#N#V#^s+r+q+pʵ+ ¯ð͚ȻĢZQH0Y#M{#Y"N!a~!]"P! ͪ*NS"6* +}|> J+"+}|K##@#͚! ͢ɸ?2 bt*N͈"6:^x*f"h:E2j2t2p*f"n*"N*N1~ !|> ͈q"N:p×͠ !|×:j: !|M92p!"r~ ) * ʹ@ !Z~#  "l:ow#:nw!t49 g ^ ^ *r~ :#"r k ڕ  ͉ : "n: Ë ͉ : ʑ*lr#s͉ DM } !|:o\#:n\"z9!"r~ ) * ڴ@ ´)   e ͆ DM*h "h ͖  ͆ : *n"n}_|W*h"h ͆ s}K sK ͆ s}ssGvs# ͆ s}s@w }K N K )))͵ ͉ s}sN ̣ ͆ <Ԍ}# ͆ s}s)))_*r~,#"r|{ ͣ s{ ͆ }T z# *hw#"h*z##\"z:p_>È*r~ #"r !["PI ORGEQUDBDSDWENDHLTvRLCRRCRALRARRETCMA/STC7DAA'CMC?EIDINOPXCHGXTHLSPHLPCHLSTAXLDAX PUSHPOPINXDCX DAD INRDCRMOV@ADDADCSUBSBBANAXRAORACMPRSTADIACISUISBIANIXRIORICPIINOUTMVIJMPCALLLXILDA:STA2SHLD"LHLD*NZZNCCPO PE(P0M8*P[ H&I <!Z"P I  I z I !#  I !' } I !: } I !Y } I !  I  W:ZORzz yJ C z! 2y>Z_>W :p*n "n:y! !^~ :pO A[?g !Z"P= V I = o&P :tGS >2q7?2xÝ O:x|y$ #"r*n' #"r~ ʚ'#"r~' ʚS_ 0ښ:9Uښ*v2x:u0"vÓ }o|g* ښÇ:x|*v|yg ZHmDiɯ>R!2>S2!O>U~>Vu>M2>A~>O2:p «>Lá>D2) ^ ]] ^P?P񒠵𗠷џPHs>sx>n..GO.w# K.n.o_ɤ9 cՋ_ >m>mxm~m#c{n no__o>n..GO.# K.B\>2>2ͨff1:>2ͅèx{hJ+ B7ho _V5\-qɿ?}m:ה]!Nw# 1%#~:v ͦ !"P͎x<ͦ% W}%6 #6#>͆!sl>-+_͛- -[-G͛w>d#-6 #Æ@ʎGʛx ͛ ͓͛͛͛ͦ*fW >2q*P:qOgo#  ɯf !"h"R!#~ ?!"r?/]R#~/M <> XO?ZXx?Zʹ"f!Zq?^Xx?^ʹ"h!^q! T])))0 ?_Ý! ))))?؅o÷0 !PF͛#F͛<#F͛ ͛*f:iм:hн7#"fF> ͛#!PG2w#x2w0:!PdM M0w6/4O#DUMPEXECENTR7FILELISTDELTASSMXPAGECSAVCLOD:Zз͓>2jͦ:g:f:j2k*f}|~:k=µã͓:^з*f*h{zw#ͦ:Rзy$:Zз:Yз9!, :ZзK*f|K!1 *W!R~ õ! Fwx# P:Zзʃ*f""}r62 Ã:Sʅ!y2Y~£##£33##øF͛ #¦ͦ:Y=‰#~+~##ɯ2Y!R"Wz2Yzͦ!&WHAT? FULL NO NO ͓Dͦͦ%!"rD/Xx?Zʹ}*fwP!#~0: {"P Vҳ#F! N*4q" ʼ F+6"N: *T]/"=//V~/#>o$w#4w+=F#N#V#^s+r+q+pa+ [\FȻNZQH0wͦ#ͦ'#Ë͓><>*f~_ү{>Wæn oà=͓"N!a~!]"P! V*NC"6* +}|> :++}|;##0#F! Nɸ/2  *N4"6͓:^зh*f"h:Eq2jЯ2t2p*f"n*"N*N1~!>͆ 4q"N:pз´Ç͐!Ç:jз: !ͦ2p!"r~ * ʪ0!Z~# "l:ow#:nw!t4X OO*r~ :#"r[pڅz: "n: {z: ʂ*lr#szDM!:o"#:n""z!"r~ * ڥ0¥UwDM*h "hЯ͆w: *n"n}_|W*h"hwd};d;wd}ddGvdwd}d@g};>;)))ͥzd}d>̓w<}}wd}d)))_*r~,#"rm{͓d{w}Tz*hw#"h*z##""z:pзͦ>x*r~ #"r!["P:ORGEQUDBDSDWENDHLTvRLCRRCRALRARRETCMA/STC7DAA'CMC?EIDINOPXCHGXTHLSPHLPCHLSTAXLDAX PUSHPOPINXDCX DAD INRDCRMOV@ADDADCSUBSBBANAXRAORACMPRSTADIACISUISBIANIXRIORICPIINOUTMVIJMPCALLLXILDA:STA2SHLD"LHLD*NZZNCCPO PE(P0M8*PLH:<!Z"P::k:!:!n:!*n:!In:!~:W:ZORzkyJCz!2y>Z_>W:p*n "nз:y!!^~:pз?A[?X!Z"P.G:.o&A:tGзD>2q7?2xÎO:xзmy$#"r*n '#"r~ ʋ'#"r~' ʋS_0ڋ:*Fڋ*vЯ2x:uз!"vÄ}o|g ڋx:xзm*v|yзXZH^DZ͚ɯʹ>R!2>S2!@>Uo>Vf>M2>Ao>O2:pз œ>LÒ>D2#CJ͓n*fnowGno>Eæ7 THE TWO PROGRAMS THE DISK LABLED SOFT0 SOFT1 $ ARE 8080 RESIDENT ASSEMBLERS. 0 PROCESS TECHNOY IGINATED THIS SYSTEM 2( PUBLISH A SOURCE ING DOCUMENTATI IT'S *2 USE. ACT THEM FURTHER INMATI. #< "LIST THIS INFORMATION FILE!"  "SGO ","AMEDITERRAN AVE","?COMMUNITY CHEST #1","Z$\23),"DIET CALCULATION PROGRAM"\\\P1$ 0x "DO YOU WANT INSTRUCTIONS? (Y/N) ",A$\\  A$"Y"   A7 SOFTWARE PROFIT LOSS CALCULAR PROGRAM $ WRITTEN BY GD FCH 3 THIS IS A SIMULATI OF POSSIBLE SOFTWARE 1( DEVELOPMENT TS. ME INMATI ITS USE #2 ACT GD FCH 415)3254209 < F S10 "P " 1. UNIT PACKAGING COST ",C Z S11 -d " 2. PROGRAM PREPARATION (IN WEEKS )",O n OO340.00 x S11 : " 3. MARKET POTENTIAL (IN 1,000'S OF UNIT SALES) ",M  S11 ! " 4. ROYALTY PERCENTAGE ",R RR100  S11 / " 5. DEALER PERCENTAGE OF RETAIL SALE ",D DD100  S11  " 6. RETAIL PRICE ",P $ " 7. SEE THIS BREAKDOWN AGAIN"  " 8. SEE FIGURES AGAIN"  " 9. LEAVE PROGRAM"  X .1 M .1  GXP)1000  R1GR  D1GD " C11000XC , SGC1OD1R1) 6 P2SG K@ %3F2,"ROYALTY RATE=",R,%4I," NO.OF UNITS=",X1000,%6F2," RETAIL=",P 7J %9F2,"EARNED ROYALTY=",R1," DEALER EARNINGS=",D1 5T %9F2,"PRODUCTION COST=",C1," PREP. EXPENSE=",O H^ %9F2,"GROSS SALES=",G," NET INCOME=",S," PROFIT (%)=",%8F2,P2100 h r | "SELECT FUNCTION ",L  S11 . L P,d,,,,,,, ( " 1. UNIT PACKAGING COST ",%$7F2,C , " 2. PROGRAM PREPARATION ",%$C10F2,O : " 3. MARKET POTENTIAL (IN 1,000'S OF UNIT SALES) ",M # " 4. ROYALTY ",%6F2,R100,"%" < " 5. DEALER PERCENTAGE OF RETAIL SALE ",%6F2,D100,"%" " " 6. RETAIL PRICE ",%$C9F2,P $ " 7. SEE THIS BREAKDOWN AGAIN"  " 8. SEE FIGURES AGAIN"  " 9. LEAVE PROGRAM"  |   80,33,30.9 0 ESTIMATE BMRHR : S1 X D B1BM IN PROGRAM N B1F1S1\ b X B1M1S1 b B1B1.5)\ *lZ$\ "HOW MANY HOURS DO YOU SPEND:"\ +v " SLEEPING OR R SRM = PROGRAMED BY TIM KELLY, MGAN HILL UN. SCH. DIST.  ;( 1276. THIS PROGRAM WAS IGINALLY WRITTEN OUR =2 APPLE 1 ) FIT WITHIN 2 K OF RAM. SOME CHANGES << HAVE BEEN MADE BUT THE BULKINESS OF THE STRUCTURE F AINS. P 8Z IT COULD FURTHER BE MODIED PLACE THE ISLS 6d ROMLY A GRID HAVE A SRM SWEEP IN FROM 5n A GIVEN DIRECTI. THOSE ISLS IN DIRECT =x OF THE SRMS APPROACH WOULD HAVE A GREATER CHANCE  OF DAMAGE.   VARIABLE NAMES $ DW) DAMAGE DE ISLS % SW) SECURING T OF ISL " TW) 1 SRM STRIKES - IW) 1 T OF SECURING DAMAGE 7 PENALTY ASSESSED IW) 1 ISL SECURED) " RW) 1 ISL SECURED . QW) PROBABILITY OF SRM STRIKING 8 X, X2, X3, X4, X5, X6, B, C, Z, Z2 TEMPARY  VARIABLES  12)\ I 1 6\\ * 25),"STORM/20"\ I 1 6 \ \ # "DO YOU WANT INSTUCTIONS?",A$  A$1,1) "N" , " \ 4, F0\ D20), S20), T20), I20), R20), Q20) 6 B$3), C$3) =@ "PLEASE ENTER A RANDOM NUMBER BETWEEN 1000 AND 10000", J B &T B1B))\ B BB)\ B B) ^ ZERO MATRIX h  r A 2000 !| MAIN BODY OF SIMULATI  W 1 20 4 "ISLAND",W \ v \ Y$ \  \ DW) X 1 SW) X2 \ TW) X3 \ IW) X4 \RW) X5 3 QW) X6 \ 21),"STORM ",\ TW) 1   "MISSED!"\   "HIT!"  \ 9 RESULTS DISPLAYED IN 2 GROUPS OF 10 FIT EEN  "FINAL DAMAGE REPORT:"\    J 100 ( W 1 10 \C$ "N0" \ B$ "NO"    5 "FOR REPORTS ON ISLANDS 11 - 20 PUSH RETURN",A$   *& W 11 20 \ C$ "NO" \ B$ "NO" 0  : "D "EFFICIENCY:",J,"%" \ J 0 N )X "IS THE NEXT FORCASTER READY?",X$ b X$1,1) "Y" r l "v SET UP VARIABLES ISL ) P 1000)1) \ B A0)20) - C 2B)3)0)2) \ Z 100))  Z 8  , "PROBABILITY OF STORM STRIKING:",P,"%" 3 "AMOUNT OF POSSIBLE DAMAGE:",B100P \   "*** RADAR OUT ***" / "PROBABILITY OF STORM STRIKING UNKNOWN."  Z 9  # "SECURING COSTS: $",C \   "SECURING COSTS UNKNOWN."  "SECURE THE ISLAND", \ $ CALCULATES SRM STRIKES 8 X 0 \ X2 0 \ X3 0 \ X4 0 \ X5 0 \ X6 0  Z2 1000)1) .  Z2 P X3 1 \ Y$1,1) "N"  & Y$1,1) "Y" X2 C \ *   Z2 P X B100P * C B100P) X4 1 4 Y$1,1) "Y" X5 1 > X6 P H R INSTRUCTIS =\ "YOU ARE A MARINE WEATHER FORCASTER ON A SOUTH PACIFIC" 1140 LSEQ MOV M,C * FILL MEMORY WITH SEQUENTIAL NUMBERS 1150 INR C 1160 CALL HILO 1170 JNC LSEQ 1180 CALL DELAY 1190 POP H 1200 PUSH H 1210 MVI C,0 21220 TSEQ MOV A,C * TEST SEQUENTIAL PATTERN 1230 INR C 1240 MOV B,M 1250 CMP B 1260 CNZ ERROR 1270 CALL HILO 1280 JNC TSEQ 1290 POP H 1300 PUSH H -1310 LDEC MOV M,H * PAGE DECODING TEST +1320 INR H * JUST INCREMENT H 1330 CALL HILO+1 1340 JNC LDEC 1350 CALL DELAY 1360 POP H 1370 PUSH H 01380 TDEC MOV A,H * VERIFY DECODING TEST 1390 MOV B,M 1400 CMP B 1410 CNZ ERROR 1420 INR H 1430 CALL HILO+1 1440 JNC TDEC 1450 POP H 1460 PUSH H 01470 TCOMP MOV A,M * FAST COMPLEMENT TEST 1480 CMA 1490 MOV M,A 1500 MOV B,M 1510 CMP B 1520 CNZ ERROR ,1530 MVI M,0 * ZERO MEMORY TEST 1540 CALL HILO 1550 JNC TCOMP 1560 CALL DELAY 1570 POP H 1580 PUSH H 51590 T00 XRA A * TEST MEMORY FOR ALL ZEROS 1600 MOV B,M 1610 CMP B 1620 CNZ ERROR 1630 CALL HILO 1640 JNC T00 1650 * 31660 CALL STOP * TEST CONSOLE FOR ABORT 1670 LXI H,TEMP0 (1680 MOV A,M * GET COUNTER +1690 ANI 7 * MOD 8 COUNTING +1700 ORI '0' * ADD ASCII BIAS )1710 CALL SEND * PRINT IT OUT )1720 INR M * STEP COUNTER 41730 CM LINE * CRLF EACH 64 CHARACTERS 1740 POP H *1750 JMP DOIT * DO TEST AGAIN 1760 * &1770 *------- SUBSOUTINES ---------- 1780 * 31790 STOP IN STAT * TEST CONSOLE FOR ABORT 1800 ANI TTDA 1810 RZ 1820 IN DATA 1830 ANI 7FH 1840 CPI 'C'-40H 1850 JZ START ,1860 CPI 1BH * TEST FOR ESCAPE ,1870 JZ MONI * RETURN TO MONIT 1880 RET 1890 * 61900 DELAY MVI H,0FFH * DELAY ROUTINE TO TEST FOR .1910 DEL0 MVI L,0FFH * EVAPORATING BITS 1920 DCR L 1930 JNZ DEL0+2 1940 DCR H 1950 JNZ DEL0 1960 RET 1970 * ;1980 HILO INX H * TEST IF AT END OF MEMORY BLOCK 1990 MOV A,E 2000 SUB L 2010 MOV A,D 2020 SBB H 2030 RET 2040 * +2050 ERROR PUSH PSW * SAVE TEST BYTE 02060 LDA TEMP * SEND TABLE HEADING? 2070 ORA A 02080 JNZ NO * IF SENT ONCE BEFORE 2090 CMA .2100 STA TEMP * HEADING SENT FLAG 2110 PUSH H 2120 LXI H,MSG * 02130 CALL TYPE * PRINT ERROR HEADING 2140 POP H 2150 NO MOV A,H .2160 CALL WRIT2 * HIGH ADDRESS BYTE 2170 MOV A,L -2180 CALL WRIT2 * LOW ADDRESS BYTE "2190 CALL BLK * SPACE 2200 POP PSW 2210 PUSH PSW ,2220 CALL WRIT2 * PRINT TEST BYTE "2230 CALL BLK * SPACE 2240 POP PSW 2250 XRA B 2260 MVI B,8 /2270 BIT RAL * PRINT OUT BAD BITS 2280 PUSH PSW 2290 MVI A,18H 2300 ADC A 2310 CALL SEND 2320 POP PSW 2330 DCR B 2340 JNZ BIT 2350 CALL CRLF +2360 JMP STOP * TEST FOR ABORT )2370 *------ BINARY TO HEX CONV. ------ 2380 WRIT2 PUSH PSW 2390 RRC 2400 RRC 2410 RRC 2420 RRC 2430 CALL FIRST 2440 POP PSW 2450 FIRST ANI 0FH 2460 ADI 90H 2470 DAA 2480 ACI 40H 2490 DAA 2500 * 02510 SEND PUSH PSW * MAIN CONSOLE OUTPUT 2520 SND1 IN STAT 2530 ANI TTBE 2540 JZ SND1 2550 POP PSW 2560 OUT DATA 2570 RET 2580 * .2590 BLK MVI A,' ' * PRINT OUT A SPACE 2600 CALL SEND 2610 JMP SEND 2620 * /2630 LINE MVI M,40H * RESET TEST COUNTER )2640 CRLF MVI A,0DH * CRLF ROUTINE 2650 CALL SEND 2660 MVI A,0AH 2670 JMP SEND 2680 * 62690 CHK CPI ',' * CHECK FOR VALID DELIMITER <2700 RZ * BETWEEN START, STOP ADDRESSES 2710 CPI ' ' 2720 RZ 2730 CPI 0DH 2740 JNZ START 2750 MOV A,B 2760 DCR A 2770 JNZ START 2780 JMP CRLF 2790 * /2800 KBD IN STAT * MAIN CONSOLE INPUT 2810 ANI TTDA 2820 JZ KBD 2830 IN DATA 2840 ANI 7FH ,2850 CPI 1BH * TEST FOR ESCAPE .2860 JZ MONI * RETURN TO MONITOR '2870 JMP SEND * ECHO INPUT 2880 * +2890 TYPE CALL STOP * TEST FOR ABORT 32900 MOV A,M * MESSAGE SENDER ROUTINE 2910 ORA A 2920 RZ 2930 CALL SEND 2940 INX H 2950 JMP TYPE .2960 *---------- MESSAGE TABLES ------------ 2970 MSG0 DB 0DH 2980 DB 0AH 2990 DB 'M' 3000 DB 'E' 3010 DB 'M' 3020 DB 'O' 3030 DB 'R' 3040 DB 'Y' 3050 DB ' ' 3060 DB 'T' 3070 DB 'E' 3080 DB 'S' 3090 DB 'T' 3100 DB ' ' 3110 DB 'V' 3120 DB 'E' 3130 DB 'R' 3140 DB '.' 3150 DB ' ' 3160 DB '1' 3170 DB '.' 3180 DB '0' 3190 DB 0DH 3200 DB 0AH 3210 DB 'R' 3220 DB 'A' 3230 DB 'N' 3240 DB 'G' 3250 DB 'E' 3260 DB '-' 3270 DB ' ' 3280 DB 00H 3290 * 3300 MSG DB 0DH 3310 DB 0AH 3320 DB 'A' 3330 DB 'D' 3340 DB 'D' 3350 DB 'R' 3360 DB ' ' 3370 DB 'T' 3380 DB 'E' 3390 DB 'S' 3400 DB 'T' 3410 DB ' ' 3420 DB '7' 3430 DB '6' 3440 DB '5' 3450 DB '4' 3460 DB '3' 3470 DB '2' 3480 DB '1' 3490 DB '0' 3500 DB ' ' 3510 DB ' ' 3520 DB '-' 3530 DB 'B' 3540 DB 'A' 3550 DB 'D' 3560 DB ' ' 3570 DB 'B' 3580 DB 'I' 3590 DB 'T' 3600 DB 'S' 3610 DB 0DH 3620 DB 0AH 3630 DB 00H 3640 * 33650 *--------- DATA STORRAGE AND STACK --------- 3660 * 3670 TEMP DB 00H #3680 TEMP0 DB 40H * COUNTER 3690 DS 30H 3700 STACK NOP /0010 * * * * * * * * * * * * * * /0020 * * THE GAME OF CHASE * /0030 * * (VERSION 2.1) * /0040 * * * * * * * * * * * * * * 0050 * 30060 * WRITTEN BY J. J. SANGER (4/5/77) 60070 * IN 8080 ASSEMBLY LANGUAGE FOR PTC VDM-1 40080 * SOURCE LISTING AND DOCUMENTATION IN <0090 * DR DOBBS JOURNAL, VOL 2, NO 5, MAY 1977, PP 10-17 0100 * 0110 BEGIN XRA A 0120 STA YSCORE 0130 STA RSCORE 0140 ENTER IN DATA 0150 LXI SP,STACK 0160 CALL CLEAR 0170 CALL SCORE 0180 LXI H,MS2 0190 LXI B,MNAME 0200 DIFF CALL MSGO 0210 LXI H,MS1 0220 LXI B,MDIFF 0230 CALL MSGO 0240 CALL INP 0250 ANI 0FH 0260 STA DFST 0270 START CALL CLEAR 0280 CALL SCORE 0290 MVI D,DCORN 0300 MVI E,ECORN 0310 TOP MVI B,WIDTH 0320 T1 CALL PLOT 0330 MVI M,'X' 0340 INX D 0350 CALL PLOT 0360 MVI M,' ' 0370 INX D 0380 DCR B 0390 JNZ T1 0400 RSIDE MVI B,HEIGHT 0410 DCR E 0420 DCR E 0430 R1 INR D 0440 CALL PLOT 0450 MVI M,'X' 0460 DCR B 0470 JNZ R1 0480 BOTM MVI B,WIDTH-1 0490 B1 DCR E 0500 CALL PLOT 0510 MVI M,' ' 0520 DCR E 0530 CALL PLOT 0540 MVI M,'X' 0550 DCR B 0560 JNZ B1 0570 LSIDE MVI B,HEIGHT 0580 L1 DCR D 0590 CALL PLOT 0600 MVI M,'X' 0610 DCR B 0620 JNZ L1 0630 SEED LDA DFST 0640 RLC 0650 MOV B,A 0660 MVI A,1EH 0670 SUB B 0680 MOV B,A 0690 LOOP1 CALL RND 0700 ANI 0FH 0710 MOV D,A 0720 CALL RND 0730 ANI 7FH 0740 MOV E,A 0750 CALL LIMIT 0760 JC LOOP1 0770 CALL PLOT 0780 MOV A,L 0790 ANI 0FEH 0800 MOV L,A 0810 MVI M,'X' 0820 DCR B 0830 JNZ LOOP1 0840 ROSE LXI H,RCORNH 0850 MVI M,'T' 0860 LXI H,RCORN+4 0870 MVI M,'Y' 0880 LXI H,RCORN+8 0890 MVI M,'U' 0900 LXI H,RCORN+42H 0910 MVI M,5CH 0920 LXI H,RCORN+44H 0930 MVI M,5EH 0940 LXI H,RCORN+46H 0950 MVI M,2FH 0960 LXI H,RCORN+80H 0970 MVI M,'G' 0980 LXI H,RCORN+82H 0990 MVI M,0DH 1000 LXI H,RCORN+84H 1010 MVI M,'H' 1020 LXI H,RCORN+86H 1030 MVI M,09H 1040 LXI H,RCORN+88H 1050 MVI M,'J' 1060 LXI H,RCORN+0C2H 1070 MVI M,2FH 1080 LXI H,RCORN+0C4H 1090 MVI M,0BH 1100 LXI H,RCORN+0C6H 1110 MVI M,5CH 1120 LXI H,RCORN+100H 1130 MVI M,'B' 1140 LXI H,RCORN+104H 1150 MVI M,'N' 1160 LXI H,RCORN+108H 1170 MVI M,'M' 1180 ROBOT CALL SEL 1190 SHLD ROB1 1200 CALL SEL 1210 SHLD ROB2 1220 CALL SEL 1230 SHLD ROB3 1240 CALL SEL 1250 SHLD ROB4 1260 CALL SEL 1270 SHLD ROB5 1280 CALL YOU 1290 JMP YMOVE 1300 SEL CALL RND 1310 ANI 0FH 1320 MOV D,A 1330 CALL RND 1340 ANI 0FEH 1350 MOV E,A 1360 CALL LIMIT 1370 JC SEL 1380 CALL PLOT 1390 MOV A,M 1400 CPI ' ' 1410 JNZ SEL 1420 MVI M,07H 1430 DCR B 1440 RNZ 1450 JMP YMOVE 1460 YOU CALL RND 1470 ANI 0FH 1480 MOV D,A 1490 CALL RND 1500 ANI 0FEH 1510 MOV E,A 1520 CALL LIMIT 1530 JC YOU 1540 CALL PLOT 1550 MOV A,M 1560 CPI ' ' 1570 JNZ YOU 1580 MVI M,0FH 1590 SHLD YOUP 1600 RET 1610 YMOVE CALL NEAR 1620 YMOV1 CALL INP 1630 LHLD YOUP 1640 MVI M,' ' 1650 CPI 'J' 1660 CZ RT 1670 CPI 'U' 1680 CZ UR 1690 CPI 'Y' 1700 CZ UP 1710 CPI 'T' 1720 CZ UL 1730 CPI 'G' 1740 CZ LF 1750 CPI 'B' 1760 CZ LL 1770 CPI 'N' 1780 CZ DN 1790 CPI 'M' 1800 CZ LR 1810 CPI 'P' 1820 CZ PANIC 1830 CPI 'H' 1840 JZ Y1 1850 MOV A,M 1860 CPI ' ' 1870 JNZ DEATH 1880 Y1 MVI M,0FH 1890 SHLD YOUP 1900 CALL RMOVE 1910 CALL END 1920 JMP YMOVE 1930 INP IN STAT 1940 ANI RDA 1950 JZ INP 1960 IN DATA 1970 ANI 7FH 1980 CPI 0DH 1990 JZ ENTER 2000 CPI 1BH 2010 JZ BEGIN 2020 RET 2030 RMOVE LHLD ROB1 2040 CALL RDEAD 2050 JC RMOV1 2060 CALL SEEK 2070 SHLD ROB1 2080 RMOV1 LHLD ROB2 2090 CALL RDEAD 2100 JC RMOV2 2110 CALL SEEK 2120 SHLD ROB2 2130 RMOV2 LHLD ROB3 2140 CALL RDEAD 2150 JC RMOV3 2160 CALL SEEK 2170 SHLD ROB3 2180 RMOV3 LHLD ROB4 2190 CALL RDEAD 2200 JC RMOV4 2210 CALL SEEK 2220 SHLD ROB4 2230 RMOV4 LHLD ROB5 2240 CALL RDEAD 2250 RC 2260 CALL SEEK 2270 SHLD ROB5 2280 RET 2290 RDEAD MOV A,M 2300 CPI 'X' 2310 STC 2320 RZ 2330 CMC 2340 RET 2350 CHEK MOV A,M 2360 CPI 0FH 2370 JZ DEATH 2380 CPI 'X' 2390 JZ FLASH 2400 MVI M,07H 2410 RET 2420 FLASH MVI D,0A0H 2430 FLAS1 MVI M,04H 2440 MVI E,0FFH 2450 FLAS2 DCR E 2460 JNZ FLAS2 2470 MVI E,0FFH 2480 MVI M,84H 2490 FLAS3 DCR E 2500 JNZ FLAS3 2510 DCR D 2520 JNZ FLAS1 2530 MVI M,'X' 2540 XRA A 2550 RET 2560 SEEK MVI M,' ' 2570 PUSH H 2580 CALL SUBH 2590 POP H 2600 CALL DECH 2610 PUSH H 2620 CALL SUBV 2630 POP H 2640 CALL DECV 2650 JMP CHEK 2660 SUBV MOV A,L 2670 ANI 0C0H 2680 MOV L,A 2690 XCHG 2700 LHLD YOUP 2710 MOV A,L 2720 ANI 0C0H 2730 SUB E 2740 MOV C,A 2750 MOV A,H 2760 SBB D 2770 MOV B,A 2780 RET 2790 DECV RLC 2800 JC UP 2810 MOV A,C 2820 RRC 2830 JC UP 2840 XRA A 2850 ADD B 2860 JNZ DN 2870 ADD C 2880 JNZ DN 2890 RET 2900 SUBH MOV A,L 2910 ANI 3FH 2920 MOV L,A 2930 XCHG 2940 LHLD YOUP 2950 MOV A,L 2960 ANI 3FH 2970 SUB E 2980 RET 2990 DECH RZ 3000 JP RT 3010 JMP LF 3020 DEATH MVI M,0CH 3030 CALL MSG2 3040 LDA RSCORE 3050 INR A 3060 STA RSCORE 3070 CALL SCORE 3080 CALL OVER 3090 CALL WAIT 3100 JMP START 3110 PANIC PUSH PSW 3120 LDA DFST 3130 CPI 09H 3140 JNZ PAN3 3150 MVI C,07H 3160 CALL RND 3170 ANA C 3180 CPI 01H 3190 JZ PAN5 3200 JMP PAN4 3210 PAN5 PUSH H 3220 LHLD ROB1 3230 MVI M,07H 3240 LHLD ROB2 3250 MVI M,07H 3260 LHLD ROB3 3270 MVI M,07H 3280 POP H 3290 JMP PANN 3300 PAN3 LDA DFST 3310 SBI 03H 3320 JP PAN1 3330 MVI C,01H 3340 JMP PANOK 3350 PAN1 LDA DFST 3360 SBI 06H 3370 MVI C,03H 3380 JP PAN2 3390 JMP PANOK 3400 PAN2 MVI C,07H 3410 PANOK CALL RND 3420 ANA C 3430 CPI 01H 3440 JZ PANN 3450 PAN4 POP PSW 3460 RET 3470 PANN CALL YOU 3480 POP PSW 3490 POP PSW 3500 JMP YMOVE 3510 WAIT IN 00H 3520 ANI 20H ' ' 3530 JZ WAIT 3540 IN 01H 3550 RET 3560 OVER LDA RSCORE 3570 CPI 09H 3580 JZ END1 3590 LDA YSCORE 3600 CPI 09H 3610 RNZ 3620 CALL WAIT 3630 CALL CLEAR 3640 LXI H,ENDM1 3650 LXI B,ENDB2 3660 CALL MSGO 3670 LDA YSCORE 3680 ADI 30H 3690 STA 0CD27H 3700 LDA RSCORE 3710 ADI 30H 3720 STA 0CD29H 3730 JMP END2 3740 END1 CALL WAIT 3750 CALL CLEAR 3760 LXI H,ENDM1H 3770 LXI B,ENDB1 3780 CALL MSGO 3790 LDA RSCORE 3800 ADI 30H 3810 STA 0CD27H 3820 LDA YSCORE 3830 ADI 30H 3840 STA 0CD29H 3850 END2 LXI H,ENDM3 3860 LXI B,ENDB3 3870 CALL MSGO 3880 CALL WAIT 3890 JMP BEGIN 3900 UP LXI D,0FFC0H 3910 DAD D 3920 RET 3930 DN LXI D,40H 3940 DAD D 3950 RET 3960 LF DCX H 3970 DCX H 3980 RET 3990 RT INX H 4000 INX H 4010 RET 4020 UR CALL UP 4030 JMP RT 4040 UL CALL UP 4050 JMP LF 4060 LL CALL DN 4070 JMP LF 4080 LR CALL DN 4090 JMP RT 4100 PLOT LXI H,0CC00H 4110 PUSH B 4120 VERT MOV A,D 4130 ANI 0FH 4140 LP1 MVI B,40H 4150 LP2 JZ HORIZ 4160 INX H 4170 DCR B 4180 JNZ LP2 4190 DCR A 4200 JNZ LP1 4210 HORIZ MOV A,E 4220 ANI 7FH 4230 LP3 JZ DONE 4240 INX H 4250 DCR A 4260 JMP LP3 4270 DONE POP B 4280 RET 4290 LIMIT MOV A,D 4300 SBI LOWD 4310 STC 4320 RM 4330 MOV A,D 4340 SBI HID 4350 STC 4360 RP 4370 MOV A,E 4380 SBI LOWE 4390 STC 4400 RM 4410 MOV A,E 4420 SBI HIE 4430 STC 4440 RP 4450 CMC 4460 RET 4470 RND PUSH B 4480 PUSH H 4490 LXI H,SH+3 4500 MVI B,08H 4510 MOV A,M 4520 RTOP RLC 4530 RLC 4540 RLC 4550 XRA M 4560 RAL 4570 RAL 4580 DCR L 4590 DCR L 4600 DCR L 4610 MOV A,M 4620 RAL 4630 MOV M,A 4640 INR L 4650 MOV A,M 4660 RAL 4670 MOV M,A 4680 INR L 4690 MOV A,M 4700 RAL 4710 MOV M,A 4720 INR L 4730 MOV A,M 4740 RAL 4750 MOV M,A 4760 DCR B 4770 JNZ RTOP 4780 POP H 4790 POP B 4800 RET 4810 END LHLD ROB1 4820 MOV A,M 4830 CPI 07H 4840 RZ 4850 LHLD ROB2 4860 MOV A,M 4870 CPI 07H 4880 RZ 4890 LHLD ROB3 4900 MOV A,M 4910 CPI 07H 4920 RZ 4930 LHLD ROB4 4940 MOV A,M 4950 CPI 07H 4960 RZ 4970 LHLD ROB5 4980 MOV A,M 4990 CPI 07H 5000 RZ 5010 JMP WIN 5020 NEAR LHLD YOUP 5030 CALL RT 5040 CALL NEAR2 5050 CALL UP 5060 CALL NEAR2 5070 CALL LF 5080 CALL NEAR2 5090 CALL LF 5100 CALL NEAR2 5110 CALL DN 5120 CALL NEAR2 5130 CALL DN 5140 CALL NEAR2 5150 CALL RT 5160 CALL NEAR2 5170 CALL RT 5180 CALL NEAR2 5190 CALL MCLEA 5200 NEAR3 RET 5210 NEAR2 MOV A,M 5220 CPI 07H 5230 RNZ 5240 CALL MSG1 5250 POP H 5260 JMP NEAR3 5270 CLEAR LXI H,0CC00H 5280 MVI M,' ' 5290 INX H 5300 MOV A,H 5310 CPI 0D0H 5320 JNZ CLEAR+3 5330 XRA A 5340 OUT 0C8H 5350 RET 5360 MSG1 PUSH H 5370 PUSH B 5380 LXI H,MS1 5390 LXI B,M1 5400 CALL MSGQ 5410 POP B 5420 POP H 5430 RET 5440 MSG2 LXI H,MS1 5450 LXI B,M2 5460 CALL MSGQ 5470 RET 5480 WIN LXI H,MS1 5490 LXI B,MWIN 5500 CALL MSGQ 5510 LDA YSCORE 5520 INR A 5530 STA YSCORE 5540 CALL SCORE 5550 CALL OVER 5560 CALL WAIT 5570 JMP START 5580 SCORE LXI H,SRE 5590 LXI B,MSR 5600 CALL MSGO 5610 LDA YSCORE 5620 ADI 30H 5630 LXI H,SCR 5640 MOV M,A 5650 LDA RSCORE 5660 ADI 30H 5670 LXI D,40H 5680 DAD D 5690 MOV M,A 5700 LXI H,MSY 5710 LXI B,MSR1 5720 CALL MSGO 5730 LXI H,MT1 5740 LXI B,MSR2 5750 CALL MSGO 5760 RET 5770 MCLEA PUSH H 5780 PUSH B 5790 LXI H,MS1 5800 MVI C,20H 5810 MCL1 MVI M,' ' 5820 INX H 5830 DCR C 5840 JNZ MCL1 5850 POP B 5860 POP H 5870 RET 5880 MSGO LDAX B 5890 CPI 0FFH 5900 RZ 5910 MOV M,A 5920 INX B 5930 INX H 5940 JMP MSGO 5950 MSGQ LDAX B 5960 CPI 0FFH 5970 RZ 5980 ORI 80H 5990 MOV M,A 6000 INX B 6010 INX H 6020 JMP MSGQ 6030 MNAME DB ' ' 6040 DB '*' 6050 DB ' ' 6060 DB '*' 6070 DB ' ' 6080 DB 'T' 6090 DB 'H' 6100 DB 'E' 6110 DB ' ' 6120 DB 'G' 6130 DB 'A' 6140 DB 'M' 6150 DB 'E' 6160 DB ' ' 6170 DB 'O' 6180 DB 'F' 6190 DB ' ' 6200 DB 'C' 6210 DB 'H' 6220 DB 'A' 6230 DB 'S' 6240 DB 'E' 6250 DB ' ' 6260 DB '*' 6270 DB ' ' 6280 DB '*' 6290 DB ' ' 6300 DB 0FFH 6310 M1 DB ' ' 6320 DB 'C' 6330 DB 'A' 6340 DB 'U' 6350 DB 'T' 6360 DB 'I' 6370 DB 'O' 6380 DB 'N' 6390 DB ' ' 6400 DB '-' 6410 DB ' ' 6420 DB 'R' 6430 DB 'O' 6440 DB 'B' 6450 DB 'O' 6460 DB 'T' 6470 DB ' ' 6480 DB 'N' 6490 DB 'E' 6500 DB 'A' 6510 DB 'R' 6520 DB '!' 6530 DB ' ' 6540 DB 0FFH 6550 M2 DB ' ' 6560 DB 'Y' 6570 DB 'O' 6580 DB 'U' 6590 DB ' ' 6600 DB 'H' 6610 DB 'A' 6620 DB 'V' 6630 DB 'E' 6640 DB ' ' 6650 DB 'B' 6660 DB 'E' 6670 DB 'E' 6680 DB 'N' 6690 DB ' ' 6700 DB 'D' 6710 DB 'E' 6720 DB 'S' 6730 DB 'T' 6740 DB 'R' 6750 DB 'O' 6760 DB 'Y' 6770 DB 'E' 6780 DB 'D' 6790 DB '!' 6800 DB ' ' 6810 DB 0FFH 6820 MWIN DB ' ' 6830 DB 'C' 6840 DB 'O' 6850 DB 'N' 6860 DB 'G' 6870 DB 'R' 6880 DB 'A' 6890 DB 'T' 6900 DB 'U' 6910 DB 'L' 6920 DB 'A' 6930 DB 'T' 6940 DB 'I' 6950 DB 'O' 6960 DB 'N' 6970 DB 'S' 6980 DB ' ' 6990 DB '-' 7000 DB ' ' 7010 DB 'Y' 7020 DB 'O' 7030 DB 'U' 7040 DB ' ' 7050 DB 'H' 7060 DB 'A' 7070 DB 'V' 7080 DB 'E' 7090 DB ' ' 7100 DB 'W' 7110 DB 'O' 7120 DB 'N' 7130 DB '!' 7140 DB ' ' 7150 DB 0FFH 7160 MSR DB '-' 7170 DB '-' 7180 DB 'S' 7190 DB 'C' 7200 DB 'O' 7210 DB 'R' 7220 DB 'E' 7230 DB '-' 7240 DB '-' 7250 DB 0FFH 7260 MSR1 DB 'Y' 7270 DB 'O' 7280 DB 'U' 7290 DB ':' 7300 DB 0FFH 7310 MSR2 DB 'R' 7320 DB 'O' 7330 DB 'B' 7340 DB 'O' 7350 DB 'T' 7360 DB 'S' 7370 DB ':' 7380 DB 0FFH 7390 ENDB1 DB 'T' 7400 DB 'H' 7410 DB 'E' 7420 DB ' ' 7430 DB 'R' 7440 DB 'O' 7450 DB 'B' 7460 DB 'O' 7470 DB 'T' 7480 DB 'S' 7490 DB ' ' 7500 DB 'H' 7510 DB 'A' 7520 DB 'V' 7530 DB 'E' 7540 DB ' ' 7550 DB 'W' 7560 DB 'O' 7570 DB 'N' 7580 DB ' ' 7590 DB ' ' 7600 DB '-' 7610 DB ' ' 7620 DB ' ' 7630 DB ':' 7640 DB ' ' 7650 DB 0FFH 7660 ENDB2 DB 'Y' 7670 DB 'O' 7680 DB 'U' 7690 DB ' ' 7700 DB 'H' 7710 DB 'A' 7720 DB 'V' 7730 DB 'E' 7740 DB ' ' 7750 DB 'B' 7760 DB 'E' 7770 DB 'A' 7780 DB 'T' 7790 DB 'E' 7800 DB 'N' 7810 DB ' ' 7820 DB 'T' 7830 DB 'H' 7840 DB 'E' 7850 DB 'M' 7860 DB ' ' 7870 DB '-' 7880 DB ' ' 7890 DB ' ' 7900 DB ':' 7910 DB ' ' 7920 DB 0FFH 7930 ENDB3 DB 'H' 7940 DB 'I' 7950 DB 'T' 7960 DB ' ' 7970 DB 'A' 7980 DB 'N' 7990 DB 'Y' 8000 DB ' ' 8010 DB 'K' 8020 DB 'E' 8030 DB 'Y' 8040 DB ' ' 8050 DB 'T' 8060 DB 'O' 8070 DB ' ' 8080 DB 'P' 8090 DB 'L' 8100 DB 'A' 8110 DB 'Y' 8120 DB ' ' 8130 DB 'A' 8140 DB 'G' 8150 DB 'A' 8160 DB 'I' 8170 DB 'N' 8180 DB '.' 8190 DB '.' 8200 DB '.' 8210 DB '.' 8220 DB '.' 8230 DB 0FFH 8240 MDIFF DB ' ' 8250 DB 'L' 8260 DB 'E' 8270 DB 'V' 8280 DB 'E' 8290 DB 'L' 8300 DB ' ' 8310 DB 'O' 8320 DB 'F' 8330 DB ' ' 8340 DB 'D' 8350 DB 'I' 8360 DB 'F' 8370 DB 'F' 8380 DB 'I' 8390 DB 'C' 8400 DB 'U' 8410 DB 'L' 8420 DB 'T' 8430 DB 'Y' 8440 DB ' ' 8450 DB '(' 8460 DB '0' 8470 DB '-' 8480 DB '9' 8490 DB ')' 8500 DB '?' 8510 DB 0FFH 8520 SH DW 1234H 8530 DW 5678H 8540 DFST DS 1 8550 RSCORE DS 1 8560 YSCORE DS 1 8570 YOUP DS 2 8580 ROB1 DS 2 8590 ROB2 DS 2 8600 ROB3 DS 2 8610 ROB4 DS 2 8620 ROB5 DS 2 8630 * 8640 STAT EQU 0 8650 DATA EQU 1 28660 RDA EQU 20H * ALTAIR REV. 0 STATUS BIT 8670 STACK EQU 650H 8680 RCORN EQU 0CCF6H 8690 DCORN EQU 0 8700 ECORN EQU 2 8710 HEIGHT EQU 0DH 8720 WIDTH EQU 19H 8730 LOWD EQU DCORN+1 8740 LOWE EQU ECORN+1 8750 HID EQU DCORN+HEIGHT-1 #8760 HIE EQU LOWE+WIDTH+WIDTH-4 8770 MS1 EQU 0CFCCH 8780 MS2 EQU 0CD10H 8790 SCR EQU 0CFBDH 8800 SRE EQU 0CF77H 8810 MSY EQU 0CFB8H 8820 MT1 EQU 0CFF5H 8830 ENDM1 EQU 0CD10H 8840 ENDM3 EQU 0CD90H 0010 * 00020 * * * * * * * * * * * * * * * * * * 00030 * * 8080 MEMORY TEST ROUTINE * 00040 * * BY FRANK MCCOY * 00050 * * ORIGINAL SOURCE LISTING FROM * 00060 * * SCCS INTERFACE MAGAZINE * 00070 * * VOL. 2, NO. 2, SEPT. 1977, * 00080 * * PP. 32-36. * 00090 * * * 00100 * * MODIFIED FOR STD. HEX I/O, * 00110 * * LOOPING, AND * 00120 * * PTC ASSEMBLER FORMAT * 00130 * * BY BRUCE KENDALL * 00140 * * * * * * * * * * * * * * * * * * 0150 * 10160 * THIS PROGRAM WAS DESIGNED TO WORK IN ROM 50170 * WITHOUT USING ANY STACK AREA. THIS REQUIRES 50180 * THE USE OF SOME REDUNDANT CODING AND THE USE 30190 * OF A REGISTER PAIR (H,L) TO USE FOR SAVING 50200 * SUBROUTINE RETURN ADDRESSES. ALL SUBROUTINE 30210 * CALLS USE DIRECT JUMPS WITH 'PCHL' USED TO 90220 * RETURN TO THE CALLING PROGRAM. THE STACK POINTER <0230 * REGISTER IS ALSO USED FOR DATA STORRAGE, SO LINKING :0240 * TO OTHER PROGRAMS MUST BE DONE WITH SOME CAUTION. 0250 * 00260 STAT EQU 0 * TERMINAL STATUS PORT -0270 DATA EQU 1 * TERMINAL I/O PORT 10280 INSTA EQU 20H * STATUS MASK FOR INPUT 20290 OTSTA EQU 2 * STATUS MASK FOR OUTPUT 30300 MONIT EQU 0D049H * RETURN ADD. FOR MONITOR 0310 * .0320 BEGIN LXI H,START * SET RETURN ADDRESS ,0330 LXI B,MSG0 * POINT TO MESSAGE (0340 JMP MSGOT * PRINT IT OUT .0350 START LXI H,ST1 * SET RETURN ADDRESS 30360 LXI B,MSG1 * POINT TO PROMPT MESSAGE (0370 JMP MSGOT * PRINT IT OUT .0380 ST1 LXI H,ST2 * SET RETURN ADDRESS @0390 JMP INHEX * GET TEST START ADDRESS FROM TERMINAL 70400 ST2 MOV D,B * SAVE START ADDRESS IN (D,E) 0410 MOV E,C .0420 LXI H,ST3 * SET RETURN ADDRESS 30430 LXI B,MSG2 * POINT TO PROMPT MESSAGE (0440 JMP MSGOT * PRINT IT OUT .0450 ST3 LXI H,ST4 * SET RETURN ADDRESS >0460 JMP INHEX * GET TEST END ADDRESS FORM TERMINAL 60470 ST4 MOV H,D * PUT START ADDRESS IN (H,L) 0480 MOV L,E 80490 SPHL * TRANSFER IT TO STACK POINTER 0500 LXI H,1 0510 * 30520 * THIS LOOP USES PUSH AND POP INSTRUCTIONS 70530 * (THE FASTEST WAY TO STORE TWO ADJACENT BYTES) 80540 * TO STORE SEMI-RANDOM BYTES THROUGHOUT THE TEST 0550 * AREA. 0560 * 0570 LOOP1 INX SP 0580 INX SP 0590 PUSH H 0600 POP H 0610 LXI H,0 0620 DAD SP 0630 MOV A,C 0640 SUB L 0650 MOV A,B 0660 SBB H 0670 JC DONE1 0680 DCX SP 0690 DCX SP 0700 POP H 0710 MOV A,L 0720 ADD A 0730 MOV L,A 0740 MOV A,H 0750 RAL 0760 MOV H,A 0770 MVI A,0 0780 ADC L 0790 MOV L,A 0800 MOV A,H 0810 RLC 0820 RLC 0830 RLC 0840 XRA L 0850 RRC 0860 RRC 0870 ANI 1 0880 XRA L 0890 MOV L,A 0900 JMP LOOP1 0910 * 10920 * THIS PART CHECKS THE FIRST TWO BYTES FOR +0930 * ERRORS AND ALSO CHECKS WHICH *0940 * PASS THE PROGRAM IS ON. 0950 * 0960 DONE1 MOV L,E 0970 MOV H,D 0980 MVI A,1 0990 CMP M 1000 JNZ CHECK 1010 DCR A 1020 INX H 1030 CMP M 1040 JNZ ERROR 1050 JMP LOOP2 1060 CHECK MVI A,0FEH 1070 CMP M 1080 MVI A,1 1090 JNZ ERROR 1100 DCR A 1110 DCR A 1120 INX H 1130 CMP M 1140 JNZ ERROR 1150 * .1160 * THIS PART DOES A FULL CHECK TO VERIFY .1170 * THAT WHAT WAS STORRED IS STILL THERE. 1180 * 1190 LOOP2 MOV A,M 1200 RAL 1210 DCX H 1220 MOV A,M 1230 RAL 1240 MOV M,A 1250 INX H 1260 MOV A,M 1270 RAL 1280 MOV M,A 1290 INX H 1300 MOV A,C 1310 SUB L 1320 MOV A,B 1330 SBB H 1340 JC DONE2 1350 DCX H 1360 MOV A,M 1370 RLC 1380 RLC 1390 RLC 1400 DCX H 1410 XRA M 1420 RRC 1430 RRC 1440 ANI 1 1450 XRA M 1460 INX H 1470 INX H 1480 CMP M 1490 JNZ ERROR 1500 INX H 1510 MOV A,C 1520 SUB L 1530 MOV A,B 1540 SBB H 1550 JC DONE2 1560 DCX H 1570 DCX H 1580 MOV A,M 1590 INX H 1600 INX H 1610 CMP M 1620 JNZ ERROR 1630 JMP LOOP2 1640 * :1650 * DONE2 CHECKS WHICH TEST WAS JUST DONE. IT SETS UP 91660 * TO DO THE COMPLEMENT IF IT WAS THE FIRST TEST. ;1670 * OTHERWISE, IT SETS UP TO DO THE REMAINING 4 TESTS. 1680 * 1690 DONE2 MOV L,E 1700 MOV H,D 1710 SPHL 1720 LXI H,0FFFEH 1730 LDAX D 1740 CPI 2 1750 JZ LOOP1 1760 MOV L,E 1770 MOV H,D 21780 LXI D,0AA55H * CHERKERBOARD PATTERNS 1790 * ,1800 * LOOP3 STORES THE TWO BYTES IN (D,E) &1810 * THROUTHOUT THE TEST AREA. 1820 * 1830 LOOP3 MOV M,D 1840 INX H 1850 MOV M,E 1860 INX H 1870 MOV A,C 1880 SUB L 1890 MOV A,B 1900 SBB H 1910 JNC LOOP3 1920 LXI H,0 1930 DAD SP 1940 * *1950 * LOOP4 TESTS TO VERIFY THE PATTERN !1960 * STORRED BY LOOP3. 1970 * 1980 LOOP4 MOV A,D 1990 MOV D,E 2000 MOV E,A 2010 CMP M 2020 JNZ ERROR 2030 INX H 2040 MOV A,C 2050 SUB L 2060 MOV A,B 2070 SBB H 2080 JNC LOOP4 2090 * 12100 * THIS ROUTINE CHECKS WHICH PASS-THROUGH 42110 * THE PROGRAM IS ON AND SETS UP FOR THE NEXT. 2120 * 2130 LXI H,0 2140 DAD SP 02150 LXI D,55AAH * CHECKERBOARD PATERNS 2160 MOV A,M 2170 CPI 0AAH 2180 JZ LOOP3 2190 LXI D,0FFFFH 2200 CPI 55H 2210 JZ LOOP3 2220 LXI D,0 2230 INR A 2240 JZ LOOP3 2250 * #2260 * IF ALL THE TEST WERE GOOD, %2270 * THIS ROUTINE WILL PRINT 'OK' .2280 * AND RESTART THE PROGRAM. IT HAS BEEN 32290 * MODIFIED FROM ORIGINAL TO CONTINUE LOOPING 62300 * UNTIL ESCAPE IS PUSHED (RETURN TO MONITOR) OR 92310 * CONTROL C IS PUSHED, WHICH WILL RESTART THE PGM. 2320 * 12330 MOV E,C * SAVE END ADDRESS IN (B,C) 2340 MOV D,B *2350 LXI H,ST5 * SET RETURN ADDRESS 2360 LXI B,MSG3 .2370 JMP MSGOT * PRINT OUT 'OK' MESSAGE 2380 ST5 IN DATA 2390 ANI 7FH (2400 CPI 1BH * TEST FOR ESCAPE 2410 JZ MONIT (2420 CPI 'C'-40H * TEST FOR CNTL-C 2430 JZ START 52440 MOV C,E * RESTORE END ADDRESS TO (B,C) 2450 MOV B,D 2460 LXI H,0 2470 DAD SP 72480 XCHG * RESTORE START ADDRESS TO (D,E) 2490 LXI H,1 ,2500 JMP LOOP1 * START AT FIRST TEST 2510 * +2520 * THIS ROUTINE WILL PRINT OUT MEMORY )2530 * STARTING AT (B,C) UNTIL A ZERO 2540 * BYTE IS FOUND. 2550 * 2560 MSGOT LDAX B 2570 ANA A 2580 JNZ AR1 2590 PCHL 2600 AR1 IN STAT 2610 ANI OTSTA 2620 JZ AR1 2630 LDAX B 2640 OUT DATA 2650 INX B 2660 JMP MSGOT 2670 * 92680 * INPUT TWO BYTES IN HEX (ORIGINAL PGM USED OCTAL) &2690 * TERMINATED BY A CARR. RETURN. .2700 * ZERO IS THE DEFAULT IF RETURN IT HIT. ;2710 * ANY ILLEGAL CHARACTERS FORCE A JUMP BACK TO START. 2720 * 42730 INHEX MOV C,L * SAVE RETURN ADDRESS IN (B,C) 2740 MOV B,H '2750 LXI H,0 * INITIALIZE DATA 2760 LUP1 IN STAT 2770 ANI INSTA 2780 JZ LUP1 .2790 IN DATA * GET DATA FROM TERMINAL 2800 OUT DATA * ECHO IT 2810 ANI 7FH 2820 CPI ' ' )2830 JZ LUP1 * IGNORE ALL SCACES '2840 CPI 1BH * TEST FOR ESCAPE 2850 JZ MONIT 2860 CPI 0DH 2870 JZ HEXE )2880 SUI '0' * REMOVE ASCII BIAS 2890 JC START 2900 CPI 'G'-'0' 2910 JNC START 2920 CPI 10 2930 JC HEX1 32940 SUI 7 * ADJUST OF A-F HEX CHARACTER 2950 JC START ;2960 HEX1 DAD H * SHIFT 16 BIT REGISTER OVER 4 PLACES 2970 DAD H 2980 DAD H 2990 DAD H -3000 ADD L * ADD IN NEW HEX NIBBLE 3010 MOV L,A +3020 JMP LUP1 * GET MORE CHARACTERS 43030 HEXE MOV A,L * INTERCHANGE (H,L) WITH (B,C) 3040 MOV L,C 3050 MOV C,A 3060 MOV A,H 3070 MOV H,B 3080 MOV B,A 13090 PCHL * RETURN TO CALLING PROGRAM 3100 * 53110 * ERROR PRINTS OUT THE ERROR ADDRESS IN (H,L), 53120 * THE TEST BYTE (IN THE ACCUM.), AND THE ERROR 73130 * BYTE. IT THEN PRINTS OUT THE DIFFERING BITS OF 3140 * THE TWO BYTES. 3150 * 3160 ERROR SPHL 3170 LXI H,ER1 3180 MOV D,A 3190 LXI B,MSG4 3200 JMP MSGOT 3210 ER1 LXI H,0 43220 DAD SP * GET ERROR ADDRESS IN (H,L) /3230 MOV B,D * SAVE TEST BYTE IN (B) 3240 XCHG 3250 LXI H,ER2 63260 JMP OUTER * PRINT OUT UPPER ADDRESS BYTE 3270 ER2 MOV D,E 3280 LXI H,ER3 63290 JMP OUTR2 * PRINT OUT LOWER ADDRESS BYTE /3300 ER3 MOV D,B * SAVE TEST BYTE IN (D) 3310 LXI B,MSG5 3320 LXI H,ER4 3330 JMP MSGOT 3340 ER4 LXI H,ER5 -3350 JMP OUTER * PRINT OUT TEST BYTE 3360 ER5 LXI B,MSG6 3370 LXI H,ER6 3380 JMP MSGOT 3390 ER6 LXI H,0 -3400 DAD SP * POINT TO ERROR BYTE (3410 MOV E,D * SAVE TEST BYTE (3420 MOV D,M * GET ERROR BYTE 3430 LXI H,ER7 .3440 JMP OUTER * PRINT OUT ERROR BYTE 3450 ER7 LXI B,MSG7 3460 LXI H,ER8 3470 JMP MSGOT 3480 ER8 MVI D,0 3490 MVI B,1 3500 LXI H,0 -3510 DAD SP * POINT TO ERROR BYTE '3520 MOV A,E * GET TEST BYTE )3530 XRA M * FIND ERROR BITS 3540 MOV E,A 3550 LOP INR D 3560 MOV A,E 3570 RAR 3580 MOV E,A 3590 JNC NOERR 3600 DCR B 3610 JZ LOPE 3620 LUPE IN STAT 3630 ANI OTSTA 3640 JZ LUPE 3650 MVI A,',' 3660 OUT DATA 3670 LOPE IN STAT 3680 ANI OTSTA 3690 JZ LOPE 3700 MOV A,D 3710 ADI '0'-1 3720 OUT DATA 3730 NOERR MOV A,D 3740 CPI 08H 3750 JNZ LOP 3760 JMP START 3770 * -3780 * OUTPUT SPACE AND BYTE IN (D) IN HEX. '3790 * (ORIGINAL PGM OUTPUT IN OCTAL) 3800 * 3810 OUTER IN STAT 3820 ANI OTSTA 3830 JZ OUTER 3840 MVI A,' ' 3850 OUT DATA 3860 OUTR2 IN STAT 3870 ANI OTSTA 3880 JZ OUTR2 3890 MOV A,D 13900 RAR * SHIFT BYTE OVER 4 PLACES 3910 RAR 3920 RAR 3930 RAR 3940 ANI 0FH '3950 ADI '0' * ADD ASCII BIAS 3960 CPI '9'+1 3970 JC OUTR3 '3980 ADI 7 * ADJUST FOR A-F 3990 OUTR3 OUT DATA 4000 OUTR4 IN STAT 4010 ANI OTSTA 4020 JZ OUTR4 4030 MOV A,D 4040 ANI 0FH 4050 ADI '0' 4060 CPI '9'+1 4070 JC OUTR5 4080 ADI 7 4090 OUTR5 OUT DATA *4100 IN DATA * TEST FOR ESCAPE KEY 4110 ANI 07FH 4120 CPI 1BH 4130 JZ MONIT 4140 CPI 'C'-40H 4150 JZ START 4160 PCHL 4170 * !4180 * * * MESSAGE TABLES * * * 4190 * +4200 MSG0 DB 0DH * INITIALIZE TERMINAL 4210 DB 0AH 4220 DB 0AH 4230 DB 0AH 4240 DB 00H 4250 * 4260 MSG1 DB 0DH 4270 DB 0AH 4280 DB 0AH 4290 DB ' ' 4300 DB 'S' 4310 DB 'T' 4320 DB 'A' 4330 DB 'R' 4340 DB 'T' 4350 DB 'I' 4360 DB 'N' 4370 DB 'G' 4380 DB ' ' 4390 DB 'A' 4400 DW 'DD' 4410 DB 'R' 4420 DB 'E' 4430 DW 'SS' 4440 DB '?' 4450 DB ' ' 4460 DB 00H 4470 * 4480 MSG2 DB 0DH 4490 DB 0AH 4500 DB 0AH 4510 DW ' ' 4520 DB ' ' 4530 DB 'E' 4540 DB 'N' 4550 DB 'D' 4560 DB 'I' 4570 DB 'N' 4580 DB 'G' 4590 DB ' ' 4600 DB 'A' 4610 DW 'DD' 4620 DB 'R' 4630 DB 'E' 4640 DW 'SS' 4650 DB '?' 4660 DB ' ' 4670 DB 00H 4680 * 4690 MSG3 DB 0DH 4700 DW 0A0AH 4710 DB 'O' 4720 DB 'K' 4730 DB 00H 4740 * 4750 MSG4 DB 0DH 4760 DB 0AH 4770 DB 0AH 4780 DW ' ' 4790 DW ' ' 4800 DB 'E' 4810 DW 'RR' 4820 DB 'O' 4830 DB 'R' 4840 DB ' ' 4850 DB 'B' 4860 DB 'Y' 4870 DB 'T' 4880 DB 'E' 4890 DB '#' 4900 DB 00H 4910 * 4920 MSG5 DB 0DH 4930 DB 0AH 4940 DB 0AH 4950 DW ' ' 4960 DW ' ' 4970 DB 'T' 4980 DB 'E' 4990 DB 'S' 5000 DB 'T' 5010 DB ' ' 5020 DB 'B' 5030 DB 'Y' 5040 DB 'T' 5050 DB 'E' 5060 DB ' ' 5070 DB 'W' 5080 DB 'A' 5090 DB 'S' 5100 DB ':' 5110 DB 00H 5120 * 5130 MSG6 DB 0DH 5140 DB 0AH 5150 DB 0AH 5160 DW ' ' 5170 DB ' ' 5180 DB 'E' 5190 DW 'RR' 5200 DB 'O' 5210 DB 'R' 5220 DB ' ' 5230 DB 'B' 5240 DB 'Y' 5250 DB 'T' 5260 DB 'E' 5270 DB ' ' 5280 DB 'W' 5290 DB 'A' 5300 DB 'S' 5310 DB ':' 5320 DB 00H 5330 * 5340 MSG7 DB 0DH 5350 DB 0AH 5360 DB 'B' 5370 DB 'I' 5380 DB 'T' 5390 DB 'S' 5400 DB ' ' 5410 DB 'I' 5420 DB 'N' 5430 DB ' ' 5440 DB 'E' 5450 DW 'RR' 5460 DB 'O' 5470 DB 'R' 5480 DB ' ' 5490 DB 'A' 5500 DB 'R' 5510 DB 'E' 5520 DB ':' 5530 DB ' ' 5540 DB 00H 5550 ENDP NOP $W--- Copyright (C) 1978 by TKI ---"X"`X"X!YXͭXIW!IYX!7 X!+ XnW*-*"a}wW!_XêX*."a!_X*a~X!_X*a~X!_X!`XHXڟWo"aW!#`X*a~X!J`X*a|*aO!aX!6Y!AY!L`XHXW" a "D"C"&E#"O##"(."f."N"."H."."[O"7!v`XHX&X" *!`XêX^#V#s#r#!͛X^X KX dX 0? uX ))))oKX|̓X}͌X0:ڗXG^X G!`X( ͛XYʻXN­X^X~O#X2a~͗X#XX>X" aX* a_" a~wX~w --- THE BASIC MOVER --- DO YOU WANT THE COMMERCIAL (Y OR N) : THIS PROGRAM IS DESIGNED TO RELOCATE (MOVE) ANY COPY OF RELEASE 3, VERSION 6, 8-DIGIT NORTH STAR BASIC NO MATTER WHAT ITS ORIGIN IS, NO MATTER WHAT DOS LOCATION IT IS CONFIGURED FOR. THE BASIC CAN BE RELOCATED TO ANY 256 BYTE PAGE BOUNDARY. THE BASIC CAN BE CONFIGURED FOR A DOS AT ANY LOCATION. THIS PROGRAM WAS WRITTEN AS A COMPANION TO " THE DOS MOVER ". THE BASIC MOVER IS DISTRIBUTED TO THE PUBLIC AT NO CHARGE AS AN ADVERTISEMENT FOR "THE DOS MOVER". THE BASIC MOVER WILL AUTOMATICALLY PATCH ITS I/O TO THE DOS THAT LOADS IT. TO USE IT : 1. CREATE A DISC FILE FOR THE RELOCATED BASIC (45 BLOCKS). 2. CHANGE THE FILE TYPE TO A TYPE 1 FILE AT THE DESIRED NEW START ADDRESS. 3. LOAD THE COPY OF NS BASIC AT 2A00H WITH THE LF COMMAND (EVEN IF THE BASIC RUNS AT SOME OTHER ADDRESS). 4. RUN "THE BASIC MOVER" WITH THE GO COMMAND. 5. ANSWER THE QUESTIONS ASKED BY THE PROGRAM. A CONTROL-C WILL ABORT THE CURRENT PROCESS AND RETURN TO DOS. ALL ADDRESS INPUTS ARE IN HEX. ANY NON HEX INPUTS WILL CAUSE A REPEAT OF THE CURRENT PROMPT. 6. SAVE THE RELOCATED BASIC AT 2A00H WITH THE SF COMMAND. ---- BY THE WAY, " THE DOS MOVER " IS AVAILABLE FROM MANY NORTH STAR DEALERS FOR $18.78, OR IT CAN BE OBTAINED BY MAIL FROM ITS SOURCE FOR : $18.78 ($20.00 CALIF. RESIDENTS) + $1.00 (FOR SHIPPING) >>> THE DIGITAL DELI SOFTWARE COOPERATIVE <<<< C/O THE DIGITAL DELI 80 WEST EL CAMINO REAL MOUNTAIN VIEW, CA. 94041 (415) 961-2670 A STANDARD BASIC HAS NOT BEEN LOADED AT 2A00H THE SAMPLE BASIC LOADED RUNS AT : H WITH DOS AT : H NEW START ADDRESS FOR BASIC : BASIC START ADDRESS TRUNCATED TO : H START ADDRESS OF DOS FOR THIS BASIC : ADDRESS OF LAST BYTE OF CONTIGUOUS MEMORY : RELOCATION IS DONE, RETURNING TO DOS TO SAVE BASIC FROM 2A00H : SF NBASIC 2A00 ^C *                              'N9                                                     "                R 6  =    @)d WRITTEN BY RICHARD WEISS 'n THE BYTE OF PALO AL $x THIS IS A CADER PROGRAM. 1 YOU CAN  OF THE WHOLE MTH 5 SHOWING WHICH DAYS YOU PREVIOUSLY SPECIED AS  'FULL' WHICH ARE . , YOU CAN ALSO GET A EACH DAY 4 SHOWING MESSAGESES 20 DFET TIME PERIODS 8 FROM 8\00 5\30. IT IS POSSIBLE ENTER MESSAGES 8 UP 58 CHARACTERS LG YOU CAN EASILY CHANGE THE 6 PROGRAM ACCEPT ME YOUR CRT IS BIG ENOUGH). 6 THE PROGRAM CAN BE USED MOST SYSTEMS WITH 5 BASIC THAT HAS USER FILE CAPABILITIES. BUT THE 1 FILES DO NEED BE ROM ACCESS UNLESS YOU # CAN JUGGLE 32 DFET FILES).   '' IS SHT '' $ D$1200),B1$58),B$60),G31) E B1$" " 3" FOLLOWING STRINGS ARE CLEAR EEN CLEAR , W IS WIDTH OF CRT EEN *6 K$27)"K"0)\ L$13)27)"I" (@ W72\ W12W8)14)\ W2W14)2 =J K$\ "1:INITIALIZE A FILE, 2:DISPLAY MONTH, 3:EXIT ",F T F r,0, <^ M$ IS NAME OF MTH, Y$ IS YEAR, F IS DAY OF FIRST DAY "h R IS NUMBER OF DAYS IN MTH 2r "MONTH: ",M$\ "# OF DAYS: ",R\ "YEAR: ",Y$ 8| "MONTH FILE OR DAY FILE? ",C$\ C$1,1)"D"  + THIS RINE INITIALIZES THE MTH FILE # #0,"MONTH"\ "FIRST DAY: ",F * THIS RINE INITIALIZES THE DAY FILE ) MATRIX G HOLDS MTH CCERNING ( WEATHER EACH DAY IS FULL GDAY)1  GDAY)0 & #0,M$,Y$,F,R\ I1 R\ GI)0  #0,GI)\ \ #0\ J * THIS RINE INITIALIZES THE DAY FILE  #1,"MESSAGE"\ #1,M$,Y$ + D$ HOLDS ALL THE MESSAGES EACK DAY $ D$""\ I1 20\ D$D$B1$\ # ' #A %B' MEANS FILE A ) AT B BYTES AWAY FROM THE BEGINNING + I1 R\ #1 %I1)120018),D$\  #1\ J & "0 #0,"MONTH" \ #0,M$,Y$,F,R *: F8 IS A FLAG THAT IS SET WHEN THE D IN FILE #0 IS CHANGED *N I1 R\ #0,GI)\ I\ #0\ F80 "X RINE REFRESHES MTH EEN 0b K$,W24),M$," ",Y$\ \ I1 7\ M1$ Fl B1$1,W21),M1$,B1$1,W2),\ \ \  7v "SUN ","MON ","TUE ","WED ","THU ","FRI ","SAT " & K1 3\ "!",\ RF36   I37F R\ \ $ \ I1 8F\ \ \  \  6 J9F 23F 7\ K1 3\ "!",\ IJ J6  \ \ \ \ \ / K1 3\ "!",\ RF36 JR J36F ) I30F J\ \ \ IRF 35 $ B1$1,W1),"!",\ \ \ \  0 1 "ENTER DAY: ",D\ L$,\ D1 DR  2 \ "SHOULD ",M$," ",D," BE CHANGED TO ", / GD)1 "OPEN", "FULL",\ Z$\ L$, 4 Z$1,1)"Y" b\ GD)GD)0)\ F81\ b / F8 J\ #0,"MONTH"\ #0,M$,Y$,F,R )  I1 R\ #0,GI)\ \ #0\ J " RINE S MESSAGES DAY D 6  #1,"MESSAGE"\ #1,M$,Y$\ #1%D1)120018,D$ %* F9 IS A FLAG THAT GETS SET 4 IN FILE #1 IS CHANGED 3> F90\ K$,30),M$," ",D," ",Y$\ \ I0 19 /H I10 %2I,I2)8, %2I,I2)4, 'R I2I2) ":00 ", ":30 ", \ D$I581,I1)58)\ I -f 1 "ENTER TIME:",T$\ L$,\ T$"" f 'p T$"0" f \ T$"9:30" f z S 640 670 WILL TAKE T$ ' SUCH AS "8" "10:30" "5:00" + CVERT IT A NUMERIC UE T 1 20) $ T$)1 T$"0"T$ \ VT$) % V0 V12 V5 V8)   V8 T2V15 T2V9 & LT$)\ T$L1,L)"30" TT1 3 1 "ENTER MESSAGE:",B$\ L$,\ B$)59  + "MESSAGE TO LONG--MAX 58 CHARACTERS", " S1 500\ S\ L$,\  , F91\ D$T1)581,T58)B$B1$\ f & F9 #1 %D1)120018),D$,  #1\  SUBRINE DOES A OF 'S ( I11 W11)71\ "-",\ \ \ $ SUBRINE JUMPS CRECT RINE  K B,V,t $ B1$ IS A STRING OF BLANKS 1. RINE S 1ST OF DAY I WITH CRESPDING <8 %2I,I, S AN EGER IN A 2 DIGIT FIELD RIGHT JUSTIED B %2I,I,B1$3,W1),"!",\ 1L RINE S 2ND OF DAY I WITH CRESPDING /V B1$1,W2),\ GI)0 "OPEN", "FULL", ` B1$1,W2),"!",\ j RINE S 3RD OF DAY I t B1$1,W1),"!",\ 5~ SUBRINE S THE PROPER NUMBER OF BLANK SQUARES  RF350 JF1 J35R % I1 J\ B1$1,W1),"!",\ \  K$\