15C programming question - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: 15C programming question (/thread-215741.html) 15C programming question - Eric Zoob - 03-27-2012 Routine A dimensions matrices A,B, and sets result to C. Routine E multiplies AxB. Without the second (repeated) RTN on line 22, the program does not return to 000, but will continue through and multiply AxB. What am I doing wrong here? 001- 42,21,11 LBL A 002- 2 003- 36 ENTER 004- 2 005- 42,23,11 DIM A 006- 2 007- 36 ENTER 008- 1 009- 42,23,12 DIM B 010- 42,26,13 RESULT C 011- 42,16,1 MATRIX 1 012- 0 013-u 44 11 STO A 014- 1 015-u 44 11 STO A 016- 1 017- 16 CHS 018-u 44 11 STO A 019- 0 020-u 44 11 STO A 021- 43 32 RTN 022- 43 32 RTN 023- 42,21,15 LBL E 024- 45,16,11 RCL MATRIX A 025- 36 ENTER 026- 45,16,12 RCL MATRIX B 027- 20 Multiply 028- 43 32 RTN Edited: 27 Mar 2012, 2:08 p.m. Re: 15C programming question - Kiyoshi Akima - 03-27-2012 Step 20 follows the "do if true" paradigm of the conditional and looping commands. It does the STO, increments the counters, and skips the next step if it had gone past the matrix boundary. Re: 15C programming question - Tom Sauntry - 03-27-2012 Pardon my ignorance, but what are the lower-case "u"s preceding the 44 11 STO commands in the listing. Re: 15C programming question - Gene Wright - 03-27-2012 means they were keyed in while in USER mode. Changes the behavior of some commands related to matrix, etc. Re: 15C programming question - Eric Zoob - 03-27-2012 Thanks. I found it in the manual. That's a very nice feature, actually. Re: 15C programming question - C.Ret - 03-28-2012 Bonjour, This topic is a good reason, actually a good excuse, to practice and remind me some of my HP-15C's code. That's how I read the proposed code and interprets its progress. Feel free to comment and report any oversight or misinterpretation. ``` Key Code MNEMOMICS Merge Commands Remarks 001-42,21,11 LBL A "A" Sub-program "A" 002- 2 2 003- 36 ENTER 004- 2 2 005-42,23,11 DIM A (2,2) DIM A Dimension Data Matrix A to 2x2 006- 2 2 007- 36 ENTER 008- 1 1 009-42,23,12 DIM B (2,1) DIM B Dimension Data Matrix B to 2x1 010-42,26,13 RESULT C Result in C Designates Matrix C for storing result 011-42,16, 1 MATRIX 1 Matrix Entry Restart entry from home position (1,1) 012- 0 0 013-u 44 11 STO A A(1,1) <-- 0 Matrix A Entry 014- 1 1 015-u 44 11 STO A A(1,2) <-- 1 016- 1 1 017- 16 CHS 018-u 44 11 STO A A(2,1) <-- -1 019- 0 0 020-u 44 11 STO A A(2,2) <-- 0 021- 43 32 RTN ............ step skiped since 'End of Matrix reached' (roll over) 022- 43 32 RTN End of "A" 023-42,21,15 LBL E "E" Sub-Program "E" 024-45,16,11 RCL MATRIX A 025- 36 ENTER ? ? ? 026-45,16,12 RCL MATRIX B 027- 20 × C <-- A × B Matrix Product 028- 43 32 RTN End of "E" ``` Re: 15C programming question - Luiz C. Vieira (Brazil) - 03-28-2012 Hi; I'd just add a few remarks, if you allow me to: ``` Key Code MNEMOMICS Merge Commands Remarks 001-42,21,11 LBL A "A" Sub-program "A" 002- 2 2 003- 36 ENTER 004- 2 2 (unnecessary) 005-42,23,11 DIM A (2,2) DIM A Dimension Data Matrix A to 2x2 006- 2 2 (unnecessary) 007- 36 ENTER (unnecessary) 008- 1 1 009-42,23,12 DIM B (2,1) DIM B Dimension Data Matrix B to 2x1 010-42,26,13 RESULT C Result in C Designates Matrix C for storing result 011-42,16, 1 MATRIX 1 Matrix Entry Restart entry from home position (1,1) 012- 0 0 013-u 44 11 STO A A(1,1) <-- 0 Matrix A Entry 014- 1 1 015-u 44 11 STO A A(1,2) <-- 1 016- 1 1 (unnecessary) 017- 16 CHS 018-u 44 11 STO A A(2,1) <-- -1 019- 0 0 020-u 44 11 STO A A(2,2) <-- 0 021- 43 32 RTN ............ step skiped since 'End of Matrix reached' (roll over) 022- 43 32 RTN End of "A" 023-42,21,15 LBL E "E" Sub-Program "E" 024-45,16,11 RCL MATRIX A 025- 36 ENTER ? ? ? 026-45,16,12 RCL MATRIX B 027- 20 × C <-- A × B Matrix Product 028- 43 32 RTN End of "E" ``` Step #4: after [ENTER] both X and Y registers already filled with 2.00, no need to enter again; Steps #6 and #7: Same as above Step #16: there is a copy of 1 still in the X-register, a single CHS suffices to let -1 in the X-register And you are correct: step #25 is not needed. Since the elements and the indexes for the matrices are not used after their contents are set, reusing them instead of introducing them back once they are still in the memory stack reduces the number of program steps. And allow the extra few bytes to be used in other programs. Cheers. Luiz (Brazil) Edited: 28 Mar 2012, 5:52 a.m. Re: 15C programming question - C.Ret - 03-28-2012 You are welcome ! :-)