Post Reply 
(41) HP-16C+ - 16X=0? issue
06-09-2023, 08:32 PM (This post was last modified: 06-09-2023 08:33 PM by Bernd Grubert.)
Post: #4
RE: (41) HP-16C+ - 16X=0? issue
Hello Angel,
I have written a small test program to check the comparisons. The test with 2CMP are all OK. There seems to be a small inconsistency when using 1CMP. The two representations of zero (0 and -0) are both evaluating to zero when using the comparisons X=0?, X#0?, etc. with my HP-16C, but not with the emulator.
I have written a program to check the test. Here is the output:
Code:
2CMP
X=0? YES: OK
X#0? YES: OK
X<0? YES: OK
X<=0?YES: OK
X>0? YES: OK
X>=0?YES: OK
X=Y? YES: OK
X#Y? YES: OK
X<Y? YES: OK
X<=Y?YES: OK
X>Y? YES: OK
X>=Y?YES: OK
X=0? NO: OK
X#0? NO: OK
X<0? NO: OK
X<=0?NO: OK
X>0? NO: OK
X>=0?NO: OK
X=Y? NO: OK
X#Y? NO: OK
X<Y? NO: OK
X<=Y?NO: OK
X>Y? NO: OK
X>=Y?NO: OK
1CMP
X=0? YES: ERR
X#0? NO: ERR
X<0? NO: ERR
X<=0?YES: OK
X>0? NO: OK
X>=0?YES: ERR

Here is the program with comments:
Code:
LBL "TST"
XROM 16,22    ; HEXM
2
XROM 16,02    ; 16#
22            ; LOW16^
XROM 16,09    ; 16WSZ
"2CMP"
AVIEW
FC? 21
PSE
XROM 16,11    ; 2CMP

SF 05          ; Expected "YES"
CF 07        ; Show args?

0
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 02        ; X=0?

1
XROM 16,02    ; 16#
22            ; LOW16^
XROM 16,51    ; 16CHS
XEQ 03        ; X#0?

XEQ 04        ; X<0?

XEQ 05        ; X<=0?

XROM 16,51    ; 16CHS
XEQ 06        ; X>0?

XEQ 07        ; X>=0?

0
XROM 16,02    ; 16#
22            ; LOW16^
XROM 16,52    ; 16ENT^
XEQ 08        ; X=Y?

1
XROM 16,02    ; 16#
22            ; LOW16^
XROM 16,51    ; 16CHS
XEQ 09        ; X#Y?

XEQ 10        ; X<Y?

XEQ 11        ; X<=Y?

1
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 12        ; X>Y?

XEQ 13        ; X>=Y?

CF 05          ; Expected "NO"

XEQ 02        ; X=0?

0
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 03        ; X#0?

XEQ 04        ; X<0?

1
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 05        ; X<=0?

XROM 16,52    ; 16ENT^
XROM 16,51    ; 16CHS
XEQ 06        ; X>0?

XEQ 07        ; X>=0?

0
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 08        ; X=Y?

XROM 16,52    ; 16ENT^
XEQ 09        ; X#Y?

XEQ 10        ; X<Y?

1
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 11        ; X<=Y?

0
XROM 16,02    ; 16#
22            ; LOW16^
XEQ 12        ; X>Y?

XEQ 13        ; X>=Y?

"1CMP"
AVIEW
FC? 21
PSE
XROM 16,10    ; 1CMP

3
XROM 16,02    ; 16#
22            ; LOW16^
SF 05          ; Expected "YES"
XEQ 02        ; X=0?

CF 05          ; Expected "NO"
XEQ 03        ; X#0?

XEQ 04        ; X<0?

SF 05          ; Expected "YES"
XEQ 05        ; X<=0?

CF 05          ; Expected "NO"
XEQ 06        ; X>0?

SF 05          ; Expected "YES"
XEQ 07        ; X>=0?

RTN

LBL 02
XEQ 97        ; Copy flag 05 -> flag 06
"X=0? "
XROM 16,02    ; 16#
6            ; 16X=0?
GTO 98        ; Invert flag and show result
GTO 99        ; Show result

LBL 03
XEQ 97        ; Copy flag 05 -> flag 06
"X#0? "
XROM 16,02    ; 16#
7            ; 16X#0?
GTO 98
GTO 99

LBL 04
XEQ 97        ; Copy flag 05 -> flag 06
"X<0? "
XROM 16,02    ; 16#
8            ; 16X<0?
GTO 98
GTO 99

LBL 05
XEQ 97        ; Copy flag 05 -> flag 06
"X<=0?"
XROM 16,02    ; 16#
9            ; 16X<=0?
GTO 98
GTO 99

LBL 06
XEQ 97        ; Copy flag 05 -> flag 06
"X>0? "
XROM 16,02    ; 16#
10            ; 16X>0?
GTO 98
GTO 99

LBL 07
XEQ 97        ; Copy flag 05 -> flag 06
"X>=0?"
XROM 16,02    ; 16#
11            ; 16X>=0?
GTO 98
GTO 99

LBL 08
XEQ 97        ; Copy flag 05 -> flag 06
"X=Y? "
XROM 16,02    ; 16#
12            ; 16X=Y?
GTO 98
GTO 99

LBL 09
XEQ 97        ; Copy flag 05 -> flag 06
"X#Y? "
XROM 16,02    ; 16#
13            ; 16X#Y?
GTO 98
GTO 99

LBL 10
XEQ 97        ; Copy flag 05 -> flag 06
"X<Y? "
XROM 16,02    ; 16#
14            ; 16X<Y?
GTO 98
GTO 99

LBL 11
XEQ 97        ; Copy flag 05 -> flag 06
"X<=Y?"
XROM 16,02    ; 16#
15            ; 16X<=Y?
GTO 98
GTO 99

LBL 12
XEQ 97        ; Copy flag 05 -> flag 06
"X>Y? "
XROM 16,02    ; 16#
16            ; 16X>Y?
GTO 98
GTO 99

LBL 13
XEQ 97        ; Copy flag 05 -> flag 06
"X>=Y?"
XROM 16,02    ; 16#
17            ; 16X>=Y?
GTO 98
GTO 99

LBL 97
FC? 05        ; Copy flag 05 -> flag 06
CF 06        ; ...
FS? 05        ; ...
SF 06        ; ...
RTN

LBL 99
FC?C 06        ; Invert Flag 06
SF 06        ; ...
LBL 98
FC? 07
GTO 00
VIEW Y
VIEW X
LBL 00
FS? 05
"|-YES: "
FC? 05
"|-NO: "
FS? 06
"|-OK"
FC? 06
"|-ERR"
AVIEW
FC? 21
PSE
END

.zip  HP16-TST.zip (Size: 2.56 KB / Downloads: 4)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: (41) HP-16C+ - 16X=0? issue - Bernd Grubert - 06-09-2023 08:32 PM



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