Post Reply 
Recall Arithmetic: The haves and have-nots
05-24-2015, 08:40 AM (This post was last modified: 05-24-2015 09:29 PM by PANAMATIK.)
Post: #10
RE: Recall Arithmetic: The haves and have-nots
(05-24-2015 01:27 AM)Paul Dale Wrote:  The 25 has the opcode space for recall arithmetic.

Pauli

I agree. It could have been used 0x80-0x87, 0x8D-0xFD, 0x8E-0xFE, 0x8F-0xFF

(05-24-2015 02:25 AM)Dave Britten Wrote:  If it's an alignment issue, one has to wonder why they wouldn't have just moved other instructions around, though. Anybody have any insights into this from looking at a 25 ROM disassembly?

Yes, the HP-25 disassembly shows, that the 2k ROM is fully occupied and size optimized as far as possible. The program step opcode decoding uses indirectly addressed jump tables called by the a-> rom address instruction.

Code:

01766:    0100001010                    execut: 0 -> c[xs]                
01767:    0010101110                            c -> a[x ]                
01770:    0110101010                            a + 1 -> a[xs]            
01771:    0010010000                            a -> rom address

As an example see the jump tables located at 02000: ff.
2000: decodes 0xF0-0xFF
2020: decodes 0xE0-0xEF
2040: decodes 0xD0-0xDF

As you can see the opcodes 0xED,0xEF, 0xDD-0xDF are not decoded but were used for go to destinations of other opcodes ( qenter: 1/x: ).
Code:

02000:    0111011111                    q0:0:   go to minus               
02001:    1000011111                            go to plus                
02002:    0111110011                            go to time                
02003:    1100101011                            go to div0                
02004:    0000100000                            select rom 0              
02005:    1000010111                            go to qr/s                
02006:    0001110111                            go to qenter              
02007:    0000100000                            select rom 0              
02010:    0000100000                            select rom 0              
02011:    1101000011                            go to qclx                
02012:    1101011011                            go to qxexy               
02013:    1101110011                            go to qroll               
02014:    1010101011                            go to sig+                
02015:    1110101111                            go to erro                
02016:    1110101111                            go to erro                
02017:    1110101111                            go to erro                
02020:    1001000100                    q1:0:   1 -> s f      9           
02021:    1100010111                            go to x>=0                
02022:    1001000100                            1 -> s f      9           
02023:    1001111011                            go to x=0                 
02024:    1010011111                            go to pi                  
02025:    1110001011                            go to qthru1              
02026:    1110101111                            go to erro                
02027:    0110110010                            a + 1 -> a[s ]            
02030:    0110110010                            a + 1 -> a[s ]            
02031:    1111100011                            if n/c go to rad          
02032:    0101101111                            go to percen              
02033:    0010110111                            go to 1/x                 
02034:    1110001011                            go to qthru1              
02035:    1011001000                    qenter: c -> stack                
02036:    0010001100                    qent1:  0 -> s push   2           
02037:    1110001011                            go to qthru1              
02040:    1001000100                    q2:0:   1 -> s f      9           
02041:    1100001011                            go to x>=y                
02042:    1001000100                            1 -> s f      9           
02043:    1001110011                            go to x=y                 
02044:    1101111011                            go to lastx               
02045:    1010010111                            go to pause               
02046:    1110101111                            go to erro          
02047:    1110101111                            go to erro                
02050:    1110110111                            go to qclrrg              
02051:    1100111111                            go to qclr                
02052:    1001010111                            go to mean                
02053:    0011100011                            go to stddev              
02054:    1000100111                            go to sig-                
02055:    0000011010                    1/x:    0 -> a[w ]                
02056:    0110100010                            a + 1 -> a[p ]            
02057:    1100101111                            if n/c go to div1

Besides executing the recall arithmetic, there would have been needed 4 more jump tables and better decoding. I'm sure they were thinking about it and couldn't get the ROM space.

Bernhard

That's one small step for a man - one giant leap for mankind.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Recall Arithmetic: The haves and have-nots - PANAMATIK - 05-24-2015 08:40 AM



User(s) browsing this thread: 11 Guest(s)