HP Forums
(Free42, DM42, HP 42S): Some Base Integer Programs - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (Free42, DM42, HP 42S): Some Base Integer Programs (/thread-18276.html)



(Free42, DM42, HP 42S): Some Base Integer Programs - Eddie W. Shore - 04-18-2022 04:10 AM

Unsigned NOT

The program UNOT applies a NOT to a binary integer (flips zeros to ones and ones to zeros) using unsigned binary integers. The number of bits (size) is prompted.

HP 42S/DM42 Program UNOT

Code:
00  {40-Byte Prgm}
01  LBL "UNOT"
02  BINM
03  "BIN?"
04  PROMPT
05  STO 01
06  EXITALL
07  "SIZE?"
08  PROMPT
09  STO 02
10  2
11  X<>Y
12  Y↑X
13  RCL- 01
14  STO 02
15  1
16  -  
17  BINM
18  END

Examples:

Unsigned NOT of 10100, size 5: 1011 (01011)

Unsigned NOT of 10100, size 8: 11101011

Shift Left

Makes a binary integer shift left: a zero is added to the right side of the integer and "drops" off the left most digit. The number of bits (size) is prompted. The binary number is assumed to be non-negative.

HP 42S/DM42 Program SL16

Code:
00  {35-Byte Prgm}
01  LBL "SL16"
02  BINM
03  "BIN?"
04  PROMPT
05  EXITALL
06  2
07  ×
08  "SIZE?"
09  PROMPT
10  2
11  X<>Y
12  Y↑X
13  MOD
14  BINM
15  END

Examples:

Shift Left: 10100, size 5: 1000 (01000)

Shift Left: 10100, size 8: 101000 (00101000)

Shift Right (Logical)

Makes a binary integer shift right: a zero is added to the left side of the integer and "drops" off the left most digit. The binary number is assumed to be non-negative. A logical shift right divides an integer by 2 and taking the integer result.

HP 42S/DM42 Program SR16

Code:
00  {24-Byte Prgm}
01  LBL "SR16"
02  BINM
03  "BIN?"
04  PROMPT
05  EXITALL
06  2
07  ÷
08  IP
09  BINM
10  END

Examples:

Shift Right: 10100: 1010

Shift Right: 1010: 101

The next two programs deals with RGB and HEX codes for computer colors.

HP 42S/DM42 Program CLR→: RBG to Hexadecimal Code

Code:
00  {51-Byte Prgm}
01  LBL "CLR→"
02  DECM
03  "RED?"
04  PROMPT
05  65536
06  BASE×
07  "GREEN?"
08  PROMPT
09  256
10  BASE×
11  BASE+
12  "BLUE?"
13  PROMPT
14  BASE+
15  HEXM
16  END

Example:
Red: 221, Green: 80, Blue 109
Result: HEX Code: DD506D

HP 42S/DM42 Program →CLR: Hexadecimal to RGB Code

Code:
00  {63-Byte Prgm}
01  LBL "→CLR"
02  HEXM
03  "HEX CODE?"
04  PROMPT
05  STO 00
06  DECM
07  65536
08  BASE÷
09  STOP   // Red
10  65536
11  BASE×
12  RCL 00
13  X<>Y
14  BASE-
15  STO 00
16  256
17  BASE÷
18  STOP   // Green
19  256
20  BASE×
21  RCL 00
22  X<>Y
23  BASE-
24  END

Example:
HEX Code: 103E22
Result: Red: 16, Green: 62, Blue: 34