(HP71B) ASM question
|
08-05-2024, 02:12 PM
(This post was last modified: 08-05-2024 03:33 PM by J-F Garnier.)
Post: #21
|
|||
|
|||
RE: (HP71B) ASM question
(08-05-2024 04:21 AM)brouhaha Wrote:(07-30-2024 07:54 AM)J-F Garnier Wrote: I didn't know the connection to the Fairchild PPS 25.See my comment in the HP 9199A thread, and Steve Simkin's reply. Thanks for linking to this thread ! As Kim, I missed it at the time, maybe I misread "9199" as a TI 99xx thing (a completely different story too). Quote:Quote:Do you know where the Capricorn CPU architecture, used in the Series 80 and the 75C, comes from?The HP Journal article KeithB mentioned explains their rationale for designing a custom architecture, namely BCD arithmetic and variable length data. It is unclear that any specific architecture(s) influenced it, other than the generalized influence of the BCD and variable length word of the calculator processors. I can also think of the CDP 1802 with its 16 16-bit register bank (so only 32 bytes total). As for the Capricorn, one of the register was acting as the program counter, but the subroutine mechanism was completely different and unusual. Actually I used it for a project beginning of the '80s at about the same time I was discovering the HP-85 assembly language. The 1802 was introduced in 1976, so I doubt it could have been a source of inspiration to HP. The story of the 1802 is interesting too. J-F |
|||
08-17-2024, 08:46 AM
(This post was last modified: 08-21-2024 03:09 PM by floppy.)
Post: #22
|
|||
|
|||
RE: (HP71B) ASM question
New word "X<0?" since it was not in the HP71B Forth standard word list but in the HP41. Variants of it with different P values will create the other missing X<=0? & X>0?
( the missing X#0? would be Code: X=0? NOT Code: =XXYY EQU #E212D comparison of X and perhaps Y (or zero) UPDATE. All X comparison with 0 in a single file Code: * X<0? check if the value in X is <0 then put 0 (false) Any remarks are welcomed for improvement or shortening of such suggested Forth words. HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
08-17-2024, 01:40 PM
Post: #23
|
|||
|
|||
RE: (HP71B) ASM question
Lets give more flexibility in working with the float stack in Forth.
the entry point listed in the new words.. Code: =OX EQU #2FBD0 X address Code: * X<> exchange the value in the variable with the value in X like the HP41 command Code: * X<>Z exchange the HP41 registers. tested 12 July 2024 Code: * X<>T exchange the HP41 registers, tested 12 July 2024 Code: * X<>L exchange the HP41 registers, tested 12 July 2024 More words needed like example Z<>L ? this word is X<>Z X<>L X<>Z therefore Z<>L could be a new Forth word (lower need since this is a combination of the 3 above new words). As usual, remarks are welcomed. HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
08-22-2024, 09:32 AM
(This post was last modified: 08-22-2024 12:15 PM by floppy.)
Post: #24
|
|||
|
|||
RE: (HP71B) ASM question
Since beeping is healthy, lets create the TONE word like in HP41.
Usefull? perhaps Entry points Code: =ABS EQU #E1A23 (n -- |n|) Code: * create HP41 like tone function with input 0 (low)..9 (high) UPDATE: missing entry points included HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
08-23-2024, 07:37 AM
Post: #25
|
|||
|
|||
RE: (HP71B) ASM question
Question: what is the best method for creating PI in Forth/ASM?
Is there a memory optimized calculation procedure? In HP71B, apart from using the BASICX command with PI as parameter in a Forth word, its possible to upload a constant; but perhaps not the best memory cautious method. Comments/remarks are welcome. Entry points Code: =SAVEFP EQU #E717A save Forth pointer Code: * PI : put PI into X in the stack. uplift the float stack. lastx not changed (like HP41) HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
09-03-2024, 03:36 PM
Post: #26
|
|||
|
|||
RE: (HP71B) ASM question
Now, here is one new word written in ASM, like the HP41 function R-P, now for for HP71B Forth.
A warning is coming during the use WRN: However the result is fine. If anybody has an idea how to take this away, please contact me (the word works). Code: ************************************************************ HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
09-24-2024, 12:00 PM
(This post was last modified: 10-07-2024 03:06 PM by floppy.)
Post: #27
|
|||
|
|||
RE: (HP71B) ASM question
Now a try to make the ISG function in HP41 under HP71B/Forth/ASM.
An usefull use in Forth is identified? not sure since it has the I DO LOOP or +LOOP. However, having such frankensetein HP41 function in HP71B is funny. Comments/remarks are welcome Code: * AND: an overtaking of the GAMMA function of the Math module is currently analyzed: however, the BASIC ASM function I got from JF Garnier seems to use stack mechanisms I could not reconduct on Forth/ASM (for sure, the Forth has stack mechanisms). So, the idea is to have a GAMMA Forth/ASM (low prio); however the path to it is still not found. Any hints are welcomed. GAMMA in pure FORTH is there https://rosettacode.org/wiki/Gamma_function#Forth and is the plan B. UPDATED 25Sept2024: the code above UPDATED 07Oct2024: the code above (with entry 0,xxxx it was not correctly working) HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
09-25-2024, 07:18 AM
(This post was last modified: 09-25-2024 07:48 AM by J-F Garnier.)
Post: #28
|
|||
|
|||
RE: (HP71B) ASM question
(09-24-2024 12:00 PM)floppy Wrote: AND: an overtaking of the GAMMA function of the Math module is currently analyzed: however, the BASIC ASM function I got from JF Garnier seems to use stack mechanisms I could not reconduct on Forth/ASM (for sure, the Forth has stack mechanisms). So, the idea is to have a GAMMA Forth/ASM (low prio); however the path to it is still not found. Any hints are welcomed. The gamma asm code from the Math ROM (the dogam subroutine) should be useable in a Forth primitive, rewriting only the wrapper code to interface with the Forth environment. The code is referring to a "math scratch stack", like: Code: GOSUB =stscr+ store it to math scratch stack The HP naming is confusing, because there is also a "Math stack", specific to BASIC, to hold parameters and results during BASIC expression evaluation. The "math scratch stack" is different, it's a reserved fixed place in the system memory implementing a 4-level stack to hold temporary extended precision values during numeric calculations. So I believe it's perfectly useable in Forth too. J-F |
|||
10-07-2024, 11:24 AM
Post: #29
|
|||
|
|||
RE: (HP71B) ASM question
Information: new word for the "HP41&71" community "DSE"
That was a hard nut: FRAC15 dont like a number like 0,xxxxxx therefore it must be tested if it is a number of type 0,xxxxxx instead of using FRAC15 for all numbers. Code: =IF12A EQU #0C739 return where the decimal point is. Out is the number in P. Page 1412 If E<0, P =14 etc. Comments/remarks are welcome. Code: **************************************************************** HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
10-16-2024, 10:00 AM
Post: #30
|
|||
|
|||
RE: (HP71B) ASM question
In order to initiate a float variable for the ISG and DSE words, here is a new word: it uses the integer stack for this. Questions/remarks are welcomed.
Code: **************************************************************** HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
10-18-2024, 08:55 AM
Post: #31
|
|||
|
|||
RE: (HP71B) ASM question
Now here is the good old FACT function from HP41. Same behaviour now in HP71B Forth.
Entry point new to be used (see other entry points in previous posts) Code: =FAC15S EQU #0E72B factorial 15digit (A,B) into (A,B), v3 page 1591 Code: **************************************************************** HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
12-10-2024, 01:44 PM
Post: #32
|
|||
|
|||
RE: (HP71B) ASM question
(09-25-2024 07:18 AM)J-F Garnier Wrote:+1(09-24-2024 12:00 PM)floppy Wrote: AND: an overtaking of the GAMMA function of the Math module is currently analyzed: however, the BASIC ASM function I got from JF Garnier seems to use stack mechanisms I could not reconduct on Forth/ASM (for sure, the Forth has stack mechanisms). So, the idea is to have a GAMMA Forth/ASM (low prio); however the path to it is still not found. Any hints are welcomed. it looks like there are several RAM scratch area which could be usefull in case ASM code is getting short in CPU registers. comments/remarks are welcome. Code: 2F599 =MTHSTK 5Nibs address of [b]math stack. Or called AVMEME see v3p3086. Available RAM depending of ROM or RAM modules in the ports[/b] Code: 0BD8D MPOP1N entry: D1 to Math Stack other reserved RAM area.. Code: 2F871 STMTR0 16Nibs (*4 = 64bits) like A or B or C or D Code: 2F871 S-R0-0 5nibs Code: 0E04F D0=SR0 D0 linked to S-R0-0 v3p1539 another area.. Code: 2F881 STMTR1 16Nibs Code: none identified for immediate use in Forth ASM Code: 2F891 STMTD0 5Nibs (20bits) like D0 or D1 Code: 1129D RESTD0 restore D0 from STMTD0 another area.. Code: 2F896 STMTD1 5Nibs another big area.. Code: 2F8C5 TRFMBF 60Nibs (16+16+16+12) see page v3p2281 p2306 another area.. Code: 2F89B FUNCR0 16Nibs Code:
another area.. Code: 2F8AB FUNCR1 16Nibs the scratsch area from the gamma word.. Code: 2F901 SCRTCH with entry points for storing/recovering 4* A/B-data in it Code: (2F901 SCRSTO) and perhaps more here.. Code: 2F986 RESERV 48*2 „HP-71B Resource Allocations“ = 6*16 = 3* (double float) HP71B 4TH/ASM/Multimod, HP41CV/X/Y & Nov64d, PILBOX, HP-IL 821.62A & 64A & 66A, Deb11 64b-PC & PI2 3 4 w/ ILPER, VIDEO80, V41 & EMU71, DM41X |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)