**Pages:** 1 2 3 4 5 6 7 **8** 9 10
Ok, it looks like it is working.

I was out of range. I think we are good to send off once I play a few more games. Hopefully Robert can play a bit to check.

(11-19-2016 09:46 PM)Gene Wrote: [ -> ]Ok, it looks like it is working.

I was out of range. I think we are good to send off once I play a few more games. Hopefully Robert can play a bit to check.

I just added a sample game to my last post.

Maybe you want to try it and see if you can reproduce the results.

And please don't forget the FIX 2. Just to be sure. ;-)

Dieter

FIX 2 noted and included. ty

Urgent:

Does the AOS program have a problem? I did a XEQ AOS to initialize. Then I did 1 + 2 = and it shows 0.

?

Code:

` 01 LBL "AOS" `

02 SF 27

03 LBL a

04 CF 01

05 CF 02

06 22

07 CF 22

08 0

09 LBL 09

10 STO IND Y

11 DSE Y

12 GTO 09

13 STO 00

14 12

15 STO 23

16 -1

17 STO 24

18 CLST

19 RTN

20 LBL "+"

21 LBL A

22 61

23 GTO 00

24 LBL "-"

25 LBL B

26 51

27 GTO 00

28 LBL "*"

29 LBL C

30 42

31 GTO 00

32 LBL "/"

33 LBL D

34 32

35 GTO 00

36 LBL "YX"

37 LBL b

38 14

39 GTO 00

40 LBL "NEG"

41 LBL c

42 23

43 GTO 00

44 LBL "<"

45 LBL d

46 5

47 LBL 00

48 10

49 /

50 STO 22

51 INT

52 X!=0?

53 GTO 00

54 FS? 01

55 XEQ 03

56 LBL 00

57 RDN

58 FS?C 22

59 XEQ 02

60 RCL 22

61 INT

62 X=0?

63 GTO 00

64 LBL 07

65 RCL 24

66 X<0?

67 GTO 00

68 RCL IND 24

69 FRC

70 RCL 22

71 FRC

72 X>Y?

73 GTO 00

74 RCL IND 24

75 INT

76 X=0?

77 GTO 00

78 XEQ 01

79 GTO 07

80 LBL 00

81 ISG 24

82 ENTER

83 RCL 24

84 13

85 X<=Y?

86 ASIN

87 RCL 22

88 STO IND 24

89 RCL IND 23

90 CF 01

91 GTO 99

92 LBL ">"

93 LBL e

94 1

95 STO 22

96 X<>Y

97 FS?C 22

98 XEQ 02

99 RCL 24

100 X<0?

101 SQRT

102 RCL IND 24

103 INT

104 X=0?

105 GTO 08

106 XEQ 01

107 GTO e

108 LBL 08

109 DSE 24

110 ENTER

111 RCL IND 23

112 SF 01

113 GTO 99

114 LBL E

115 LBL "="

116 1

117 STO 22

118 X<>Y

119 FS?C 22

120 XEQ 02

121 RCL 24

122 X<0?

123 GTO 00

124 RCL IND 24

125 XEQ 01

126 GTO E

127 LBL 00

128 RCL IND 23

129 XEQ a

130 RDN

131 RDN

132 SF 22

133 GTO 99

134 LBL 02

135 ISG 23

136 ENTER

137 21

138 RCL 23

139 -

140 X<0?

141 SQRT

142 RDN

143 STO IND 23

144 RCL 22

145 INT

146 X!=0?

147 RTN

148 LBL 03

149 ISG 24

150 ENTER

151 4.2

152 STO IND 24

153 RDN

154 RTN

155 LBL 01

156 RCL IND 23

157 DSE 23

158 RCL IND 23

159 X<>Y

160 XEQ IND Z

161 FS?C 02

162 ISG 23

163 ENTER

164 RCL 23

165 13

166 -

167 X<0?

168 SQRT

169 X<>Y

170 STO IND 23

171 DSE 24

172 RTN

173 RTN

174 LBL 01

175 Y^X

176 RTN

177 LBL 02

178 CHS

179 LBL 00

180 SF 02

181 RTN

182 LBL 03

183 /

184 RTN

185 LBL 04

186 *

187 RTN

188 LBL 05

189 CHS

190 LBL 06

191 +

192 LBL 99

193 RTN

194 SF 22

195 END

Link to AOS raw file:

AOS raw file
The code should have the fix for this NOP:

NOP
Original write-up from PPC Journal:

AOS PPC Journal article
Gene: I think it has a problem. :-(

Until we figure out if there is a problem in the AOS, this is the version that will go in. It gives answers instead of zeroes. :-)

AOS into .rom
(11-20-2016 02:31 AM)Gene Wrote: [ -> ]Until we figure out if there is a problem in the AOS, this is the version that will go in. It gives answers instead of zeroes. :-)

AOS into .rom

Yes, there is a problem that I fixed in the last version I got here – but obviously the wrong one went into the zip file I posted.

The problem is in the Equals-routine (E) which finally calls the clear-all routine (XEQ a) at a point where the final result is in X. Due to the CLST in the clear-routine this value is lost. So your program works correctly, it just clears its result right before returning it. #-)

The attachment includes two versions: AOS_3 uses CLRG and thus clears all the 41's data registers. Here the final result is saved in Z and finally recalled by two RDNs (same as the original progam). AOS_3a uses a CLRGX loop that clears only R00...R22 and saves the result in LastX so that it can be finally recalled from there after the clearing is done. Both versions should work, both have a specific advantage: AOS_3 is faster, but clears all data registers, while AOS_3a clears only the required ones but takes 2-3 seconds longer for each "AOS" and "=" call due to the clear loop. If a complete CLRG is fine for you, use AOS_3.

Edit: I wonder if this CLRG is required at all. After the stack pointers are reset everything should work without setting all registers to zero. Gene, could you try this by loading AOS_3 and removing the initial CLRG? I have filled R00...R22 with random numbers and the program seems to work fine without clearing the registers.

Dieter

(11-20-2016 12:47 AM)Gene Wrote: [ -> ]Does the AOS program have a problem? I did a XEQ AOS to initialize. Then I did 1 + 2 = and it shows 0.

(...)

Code:

`(...)`

127 LBL 00

128 RCL IND 23

129 XEQ a

130 RDN

131 RDN

132 SF 22

133 GTO 99

Here is/was the problem: The final result is recalled by RCL IND 23 and then the whole operation stack is cleared (XEQ a). Here the result is lost due to the CLST (and four other values filling the stack) in that routine. Two fixed versions are attached to my previous post.

(11-20-2016 12:47 AM)Gene Wrote: [ -> ]The code should have the fix for this NOP: NOP

Excuse me, but what is this "NOP" supposed to mean? You have used this term in a few posts and it seems to mean something like a bug report. Here I expected some way of doing a NOP = "no operation" on a '41. #-)

Of course this fix is and was included in AOS and AOS_3/3a.

Dieter

(11-20-2016 02:31 AM)Gene Wrote: [ -> ]Until we figure out if there is a problem in the AOS, this is the version that will go in.

I see there is already one download of the fixed version 3/3a, and I guess I know who did it. ;-)

Anyway, here is the AOS version 4 which I am currently testing. It has no CLRG or another clearing routine, and it recalls the final result after an "=" operation directly from R13. Also note the SF22 instead of CF22 on startup which allows starting with an operator key (and x=0). Maybe you can try this one as well.

Dieter

(11-20-2016 05:20 PM)Dieter Wrote: [ -> ]Excuse me, but what is this "NOP" supposed to mean? You have used this term in a few posts and it seems to mean something like a bug report. Here I expected some way of doing a NOP = "no operation" on a '41. #-)

Dieter

Gene: NOP was a column heading for corrections in the PPC Journal for many years. It might be article corrections, programming errors, etc.

Here's a link to a two page illustration of the Journal cover page and the page showing the NOP column:

PPC V5N4 NOP
AOS_3 is the one going into the rom.

I played with AOS4, but I think it has a bit more tweaking to do. Great idea, but I need to get the files to Angel and AOS3 seems to work fine.

AOS4 had a problem with this:

( 1 + 2 ) * ( 2 + 3 ) =

It showed a 0 in the middle of the calculation and gave a 0.

AOS3 is a great program! :-)

Link to PDF of all program listings in the rom:

PDF
Link to .zip of all .raw files in the rom:

.zip of .raw
The .zip file includes a space "SumDigits.raw" file which is rom filler if there is enough space. I don't expect there to be enough room, so it will be carried over to rom2. :-) If it is included, it should be XROM 23,27 to avoid changing the hard coded XROM instructions we put in to call the Seed and RN routines.

(11-20-2016 07:55 PM)Gene Wrote: [ -> ]AOS4 had a problem with this:

( 1 + 2 ) * ( 2 + 3 ) =

It showed a 0 in the middle of the calculation and gave a 0.

Hmm... will check this.

(11-20-2016 07:55 PM)Gene Wrote: [ -> ]AOS3 is a great program! :-)

OK then. But please also try it without the CLRG at the beginning. It should work just as well without losing all data registers.

Dieter

(11-20-2016 07:41 PM)Gene Wrote: [ -> ]Gene: NOP was a column heading for corrections in the PPC Journal for many years. It might be article corrections, programming errors, etc.

Fine – but what does it stand for? I didn't find an explanation on page 3 of V5N4 you posted. Is it an acronym? An abbreviation? Or does it simply refer to the NOP instruction?

Dieter

CLRG is removed from the AOS program.

I think NOP does refer to the No OPeration instruction because errors in an article didn't do anything or errors in a program were incorrect. I am not sure of the original derivation, but it has been around in HP calculator circles for ages.

Gene & Dieter,

Are you feeling like HP Quality/Test Engineers testing about-to-be-released calculator software back in the day? Impressive amount of testing and updates happening at a fast pace!

No, because they did a much better job at this than we are doing. :-)

And Robert and Dieter are the coders here.

(11-19-2016 07:14 PM)Dieter Wrote: [ -> ](ST program)

I cannot say anything for sure, but the attached version (less than 30 minutes old) seems to run OK. It even does some things right that the original 67 program (and its documentation) did not.

I just saw that one of the data registers can be saved since R07 only holds the constant 25, which is the sensor range. This value is used only once, and another time half of this to define the phaser reach (so that's 12,5 here).

So I replaced R11 with R07 and inserted the two constants directly into the code: the sensor range still is 25 (line 53), the max. allowed Klingon distance for a phaser attack was rounded up to 15 (line 162, saves two bytes compared to 12,5 ;-)).

If you want to update the ST program – although it is not strictly required –, here is version 3a.

Edit: There is also an improved version of the SD program. Requires 96 bytes and needs two registers less than the original version. Also the output looks cleaner now since I added the one or other CF 29. ;-)

Dieter

Gene,

Tried to send you a PM and it said you had reached your private message quota.

(11-21-2016 08:53 PM)Dieter Wrote: [ -> ]Edit: There is also an improved version of the SD program. Requires 96 bytes and needs two registers less than the original version. Also the output looks cleaner now since I added the one or other CF 29. ;-)

Dieter

Gene: Post it! That's the filler program for the .rom and if it takes less room it might make it.

**Pages:** 1 2 3 4 5 6 7 **8** 9 10