```APPENDIX NINE
Numerical Conversions
If you use this map a lot, or use the Atari a lot for machine language
routines, interrupts, graphics and the like, you know the need to
translate between decimal and hexadecimal, even back and forth with
binary, frequently. It is possible, although tedious, to do your
translations by hand, using pencil and paper. The tables for doing so
are below. It's not the best nor the fastest method available. I
recommend you get the Texas Instruments TI Programmer calculator.
It does most of this work for you, plus bit manipulation (unfortunately it
does not offer binary translation). It's an indispensable tool for
programmers.

Monkey Wrench from Eastern House Software, which will do the hex -
decimal translations for you quite nicely. Or you can buy any of the
numerous disk or programming utilities which include such translation
routines, such as Disk Scan from Micro Media. However, those who
wish to do the work themselves can use a simple translator program.
One such example, modified from routines that appeared separately in
COMPUTE!, November 1981 and March 1982, is:

10 DIM HEX\$(16),DEC\$(23),NUM\$(10),W\$(
4),BIN\$(8),BNY\$(8),TRANS(8)
15 DATA 128,64,32,16,8,4,2,1
20 FOR N=1 TO 8:READ B:TRANS(N)=B:NEX
T N:POKE 201,14
25 PRINT CHR\$(125)
30 HEX\$="0123456789ABCDEF":DEC\$"=@ABC
DEFGHI!!!!!!!JKLMNO"
?"{6 SPACES}[SELECT] FOR DECIMAL":?"
{6 SPACES}[START] FOR BINARY"
42 ?"{6 SPACES}TRANSLATIONS":A=1:MAX=
4096
50 IF PEEK(53279)=3 THEN GOTO 100
60 IF PEEK(53279)=5 THEN GOTO 200
70 IF PEEK(53279)=6 THEN GOTO 300
80 GOTO 50
100 ? : ?"ENTER HEXADECIMAL NUMBER":"?
"\$0000 TO \$FFFF": INPUT NUM\$:ACC=
0:A=1:TRAP 100
120 FOR NUM=1 TO LEN(NUM\$):ACC=ACC*16
+ASC(DEC\$(ASC(NUM\$(NUM))-47))-64:
NEXT NUM:T=ACC
125 IF ACC>255 THEN BNY\$="........":G
OTO 170
130 FOR N=7 TO 0 STEP-1:BIN=2^N
135 IF INT(ACC/BIN)=l THEN BNY\$(A,A)=
"1":ACC=ACC-BIN:GOTO 150
140 BNY\$(A,A)="0"
150 A=A+1:NEXT N
RY"
180 ? " ";NUM\$,T,BNY\$
190 ? :? : GOTO 40
200 ? :? "ENTER DECIMAL NUMBER": ?"0
TO 65535": INPUT NUM:T=NUM:Z=T:MA
X=4096:TRAP 200
205 IF NUM>65535 THEN GOTO 200
208 IF NUM<1 THEN GOTO 200
210 FOR N=1 TO 4:BYTE=INT(NUM/MAX):W\$
(N,N)=HEX\$(BYTE+1,BYTE+1):NUM=NUM
-MAX*BYTE:MAX=MAX/16:NEXT N
220 IF T>255 THEN BNY\$="........": GOT
O 270
230 FOR N=7 TO 0 STEP -1:BIN=2^N
235 IF INT(Z/BIN)=1 THEN BNY\$(A,A)="1
":Z=Z-BIN:GOTO 250
240 BNY\$(A,A)="0"
250 A=A+1:NEXT N
Y"
280 ? " ";T,W\$,BNY\$
290 GOTO 40
300 ? :? "INPUT BINARY NUMBER":?"0000
0000 TO 11111111":? :?"76543210 B
ITS":INPUT BIN\$:TRAP 300
305 IF LEN(BIN\$)<>8 THEN GOTO 300
308 FOR B=1 TO 8:IF VAL(BIN\$(B,B))>1
THEN POP:GOTO 300
310 NEXT B
320 FOR B=1 TO 8:IF BIN\$(B,B)="1" THE
N TOT=TOT+TRANS(B)
325 NEXT B: Q=TOT
330 FOR L=1 TO 4:BYTE=INT(TOT/MAX):W\$
(L,L)=HEX\$(BYTE+1,BYTE+1):TOT=TOT
-MAX*BYTE:MAX=MAX/16:NEXT L
L"
350 ? " ";BIN\$,W\$,Q
390 GOTO 40

This program will translate any hexadecimal, decimal, and binary
number to and from the others. There are some constraints in its use: it
will not translate a binary number for any hex number larger than \$FF
or decimal number larger than 255. It will not translate any hex
number larger than \$FFFF or any decimal number larger than 65535.
ranges, you should have no problems. You can easily remove the
translation routines from the program for use in your own utility.

For a quick way to translate any number in the range of zero to 65535
(\$FFFF), use the table below. It's quite simple to use: to translate hex to
decimal you take the number that appears in the column that
corresponds to the value in the proper row and add the values
together. The total is your decimal number. For example:

\$7AC1 = 28672   fourth column, 7
2560    third column, A
192   second column, C
1    first column, 1
-----
31425      decimal value

To translate decimal into hex, you find the largest number less than the
number you wish to translate and subtract it from your original
number. The value in the row is the first hexadecimal value. You then
do the same with the remainder until your result is zero. The values in
the row are then concatenated together for a hexadecimal number. For
example:

31425 = 31425
- 28672 largest number, column four. first hex number = 7
-----
2753 remainder, minus third column
2560 second hex number = A
-----
193 remainder, minus second column
192 third hex number = C
-----
1 remainder and fourth hex number

Hex                 Column              Hex
number  fourth   third   second  first  number
1       4096     256      16      1     1
2       8192     512      32      2     2
3      12288     768      48      3     3
4      16384    1024      64      4     4
5      20480    1280      80      5     5
6      24576    1536      96      6     6
7      28672    1792     112      7     7
8      32768    2048     128      8     8
9      36864    2304     144      9     9
A      40960    2560     160     10     A
B      45056    2816     176     11     B
C      49152    3072     192     12     C
D      53248    3328     208     13     D
E      57344    3584     224     14     E
F      61440    3840     240     15     F

The next few pages are simply a listing of the decimal, hex,and binary
values for the range of numbers between zero and 255. I have found
this listing to be extremely useful when I couldn't enter a translator
program or lay my hands on a calculator. Read the note in the
introduction regarding the translation techniques for binary and

Decimal  Hex  Binary     Decimal  Hex  Binary     Decimal  Hex  Binary
0     0   00000000      34    22   00100010      68    44   01000100
1     1   00000001      35    23   00100011      69    45   01000101
2     2   00000010      36    24   00100100      70    46   01000110
3     3   00000011      37    25   00100101      71    47   01000111
4     4   00000100      38    26   00100110      72    48   01001000
5     5   00000101      39    27   00100111      73    49   01001001
6     6   00000110      40    28   00101000      74    4A   01001010
7     7   00000111      41    29   00101001      75    4B   01001011
8     8   00001000      42    2A   00101010      76    4C   01001100
9     9   00001001      43    2B   00101011      77    4D   01001101
10     A   00001010      44    2C   00101100      78    4E   01001110
11     B   00001011      45    2D   00101101      79    4F   01001111
12     C   00001100      46    2E   00101110      80    50   01010000
13     D   00001101      47    2F   00101111      81    51   01010001
14     E   00001110      48    30   00110000      82    52   01010010
15     F   00001111      49    31   00110001      83    53   01010011
16    10   00010000      50    32   00110010      84    54   01010100
17    11   00010001      51    33   00110011      85    55   01010101
18    12   00010010      52    34   00110100      86    56   01010110
19    13   00010011      53    35   00110101      87    57   01010111
20    14   00010100      54    36   00110110      88    58   01011000
21    15   00010101      55    37   00110111      89    59   01011001
22    16   00010110      56    38   00111000      90    5A   01011010
23    17   00010111      57    39   00111001      91    5B   01011011
24    18   00011000      58    3A   00111010      92    5C   01011100
25    19   00011001      59    3B   00111011      93    5D   01011101
26    1A   00011010      60    3C   00111100      94    5E   01011110
27    1B   00011011      61    3D   00111101      95    5F   01011111
28    1C   00011100      62    3E   00111110      96    60   01100000
29    1D   00011101      63    3F   00111111      97    61   01100001
30    1E   00011110      64    40   01000000      98    62   01100010
31    1F   00011111      65    41   01000001      99    63   01100011
32    20   00100000      66    42   01000010     100    64   01100100
33    21   00100001      67    43   01000011     101    65   01100101

Decimal  Hex  Binary     Decimal  Hex  Binary     Decimal  Hex  Binary
102    66   01100110     163    A3   10100011     224    E0   11100000
103    67   01100111     164    A4   10100100     225    E1   11100001
104    68   01101000     165    A5   10100101     226    E2   11100010
105    69   01101001     166    A6   10100110     227    E3   11100011
106    6A   01101010     167    A7   10100111     228    E4   11100100
107    6B   01101011     168    A8   10101000     229    E5   11100101
108    6C   01101100     169    A9   10101001     230    E6   11100110
109    6D   01101101     170    AA   10101010     231    E7   11100111
110    6E   01101110     171    AB   10101011     232    E8   11101000
111    6F   01101111     172    AC   10101100     233    E9   11101001
112    70   01110000     173    AD   10101101     234    EA   11101010
113    71   01110001     174    AE   10101110     235    EB   11101011
114    72   01110010     175    AF   10101111     236    EC   11101100
115    73   01110011     176    B0   10110000     237    ED   11101101
116    74   01110100     177    B1   10110001     238    EE   11101110
117    75   01110101     178    B2   10110010     239    EF   11101111
118    76   01110110     179    B3   10110011     240    F0   11110000
119    77   01110111     180    B4   10110100     241    F1   11110001
120    78   01111000     181    B5   10110101     242    F2   11110010
121    79   01111001     182    B6   10110110     243    F3   11110011
122    7A   01111010     183    B7   10110111     244    F4   11110100
123    7B   01111011     184    B8   10111000     245    F5   11110101
124    7C   01111100     185    B9   10111001     246    F6   11110110
125    7D   01111101     186    BA   10111010     247    F7   11110111
126    7E   01111110     187    BB   10111011     248    F8   11111000
127    7F   01111111     188    BC   10111100     249    F9   11111001
128    80   10000000     189    BD   10111101     250    FA   11111010
129    81   10000001     190    BE   10111110     251    FB   11111011
130    82   10000010     191    BF   10111111     252    FC   11111100
131    83   10000011     192    C0   11000000     253    FD   11111101
132    84   10000100     193    C1   11000001     254    FE   11111110
133    85   10000101     194    C2   11000010     255    FF   11111111
134    86   10000110     195    C3   11000011
135    87   10000111     196    C4   11000100
136    88   10001000     197    C5   11000101
137    89   10001001     198    C6   11000110
138    8A   10001010     199    C7   11000111
139    8B   10001011     200    C8   11001000
140    8C   10001100     201    C9   11001001
141    8D   10001101     202    CA   11001010
142    8E   10001110     203    CB   11001011
143    8F   10001111     204    CC   11001100
144    90   10010000     205    CD   11001101
145    91   10010001     206    CE   11001110
146    92   10010010     207    CF   11001111
147    93   10010011     208    D0   11010000
148    94   10010100     209    D1   11010001
149    95   10010101     210    D2   11010010
150    96   10010110     211    D3   11010011
151    97   10010111     212    D4   11010100
152    98   10011000     213    D5   11010101
153    99   10011001     214    D6   11010110
154    9A   10011010     215    D7   11010111
155    9B   10011011     216    D8   11011000
156    9C   10011100     217    D9   11011001
157    9D   10011101     218    DA   11011010
158    9E   10011110     219    DB   11011011
159    9F   10011111     220    DC   11011100
160    A0   10100000     221    DD   11011101
161    A1   10100001     222    DE   11011110
162    A2   10100010     223    DF   11011111
```