00000000: 00 20 54 4F 20 24 32 20 3A 4E 55 4D 0D 20 4F 50 |. TO $2 :NUM. OP|
00000010: 20 24 49 4E 54 20 3A 4E 55 4D 20 30 20 32 0D 45 | $INT :NUM 0 2.E|
00000020: 4E 44 0D 0D 54 4F 20 44 49 47 56 41 4C 20 3A 43 |ND..TO DIGVAL :C|
00000030: 48 41 52 0D 20 49 46 20 4E 55 4D 42 45 52 3F 20 |HAR. IF NUMBER? |
00000040: 3A 43 48 41 52 20 4F 50 20 3A 43 48 41 52 0D 20 |:CHAR OP :CHAR. |
00000050: 4C 4F 43 41 4C 20 22 52 45 53 55 4C 54 0D 20 4D |LOCAL "RESULT. M|
00000060: 41 4B 45 20 22 52 45 53 55 4C 54 20 28 20 41 53 |AKE "RESULT ( AS|
00000070: 43 49 49 20 3A 43 48 41 52 20 29 20 2D 20 35 35 |CII :CHAR ) - 55|
00000080: 0D 20 49 46 20 3A 52 45 53 55 4C 54 20 2B 20 31 |. IF :RESULT + 1|
00000090: 20 3E 20 3A 42 41 53 45 20 28 20 50 52 49 4E 54 | > :BASE ( PRINT|
000000A0: 20 3A 43 48 41 52 20 5B 42 41 44 20 44 49 47 49 | :CHAR [BAD DIGI|
000000B0: 54 20 49 4E 20 42 41 53 45 5D 20 3A 42 41 53 45 |T IN BASE] :BASE|
000000C0: 20 29 20 54 4F 50 4C 45 56 45 4C 0D 20 4F 50 20 | ) TOPLEVEL. OP |
000000D0: 3A 52 45 53 55 4C 54 0D 45 4E 44 0D 0D 54 4F 20 |:RESULT.END..TO |
000000E0: 55 4E 42 4E 31 20 3A 4E 55 4D 0D 20 49 46 20 3A |UNBN1 :NUM. IF :|
000000F0: 4E 55 4D 20 3D 20 30 20 4F 50 20 22 0D 20 4F 50 |NUM = 0 OP ". OP|
00000100: 20 57 4F 52 44 20 55 4E 42 31 20 51 55 4F 54 49 | WORD UNB1 QUOTI|
00000110: 45 4E 54 20 3A 4E 55 4D 20 32 20 28 20 52 45 4D |ENT :NUM 2 ( REM|
00000120: 41 49 4E 44 45 52 20 3A 4E 55 4D 20 32 20 29 0D |AINDER :NUM 2 ).|
00000130: 45 4E 44 0D 0D 54 4F 20 42 41 53 45 31 20 3A 4E |END..TO BASE1 :N|
00000140: 55 4D 0D 20 49 46 20 3A 4E 55 4D 20 3D 20 30 20 |UM. IF :NUM = 0 |
00000150: 4F 50 20 22 0D 20 4F 50 20 57 4F 52 44 20 42 41 |OP ". OP WORD BA|
00000160: 53 45 31 20 28 20 51 55 4F 54 49 45 4E 54 20 3A |SE1 ( QUOTIENT :|
00000170: 4E 55 4D 20 3A 42 41 53 45 20 29 20 28 20 56 41 |NUM :BASE ) ( VA|
00000180: 4C 44 49 47 20 52 45 4D 41 49 4E 44 45 52 20 3A |LDIG REMAINDER :|
00000190: 4E 55 4D 20 3A 42 41 53 45 20 29 0D 45 4E 44 0D |NUM :BASE ).END.|
000001A0: 0D 54 4F 20 56 41 4C 44 49 47 20 3A 4E 0D 20 49 |.TO VALDIG :N. I|
000001B0: 46 20 3A 4E 20 3C 20 31 30 20 4F 50 20 3A 4E 0D |F :N < 10 OP :N.|
000001C0: 20 4F 50 20 43 48 41 52 20 35 35 20 2B 20 3A 4E | OP CHAR 55 + :N|
000001D0: 0D 45 4E 44 0D 0D 54 4F 20 24 49 4E 54 20 3A 4E |.END..TO $INT :N|
000001E0: 55 4D 20 3A 56 41 4C 20 3A 42 41 53 45 0D 20 49 |UM :VAL :BASE. I|
000001F0: 46 20 3A 4E 55 4D 20 3D 20 22 20 4F 50 20 3A 56 |F :NUM = " OP :V|
00000200: 41 4C 0D 20 4F 50 20 24 49 4E 54 20 42 46 20 3A |AL. OP $INT BF :|
00000210: 4E 55 4D 20 3A 56 41 4C 20 2A 20 3A 42 41 53 45 |NUM :VAL * :BASE|
00000220: 20 2B 20 44 49 47 56 41 4C 20 46 49 52 53 54 20 | + DIGVAL FIRST |
00000230: 3A 4E 55 4D 20 3A 42 41 53 45 0D 45 4E 44 0D 0D |:NUM :BASE.END..|
00000240: 54 4F 20 44 4F 43 20 3A 50 52 4F 43 0D 20 4C 4F |TO DOC :PROC. LO|
00000250: 43 41 4C 20 22 54 45 58 54 20 4D 41 4B 45 20 22 |CAL "TEXT MAKE "|
00000260: 54 45 58 54 20 54 45 58 54 20 3A 50 52 4F 43 0D |TEXT TEXT :PROC.|
00000270: 20 4C 4F 43 41 4C 20 22 44 4F 43 20 4D 41 4B 45 | LOCAL "DOC MAKE|
00000280: 20 22 44 4F 43 20 46 49 52 53 54 20 42 46 20 3A | "DOC FIRST BF :|
00000290: 54 45 58 54 0D 20 28 20 50 52 49 4E 54 20 3A 50 |TEXT. ( PRINT :P|
000002A0: 52 4F 43 20 46 49 52 53 54 20 3A 54 45 58 54 20 |ROC FIRST :TEXT |
000002B0: 29 0D 20 49 46 20 22 3B 20 3D 20 46 49 52 53 54 |). IF "; = FIRST|
000002C0: 20 3A 44 4F 43 20 50 52 49 4E 54 20 42 46 20 3A | :DOC PRINT BF :|
000002D0: 44 4F 43 0D 45 4E 44 0D 0D 54 4F 20 24 20 3A 4E |DOC.END..TO $ :N|
000002E0: 55 4D 0D 20 3B 20 43 4F 4E 56 45 52 54 53 20 41 |UM. ; CONVERTS A|
000002F0: 20 48 45 58 20 4E 55 4D 42 45 52 20 28 51 55 4F | HEX NUMBER (QUO|
00000300: 54 45 44 20 57 4F 52 44 29 20 54 4F 20 41 20 4E |TED WORD) TO A N|
00000310: 55 4D 42 45 52 0D 20 4F 50 20 24 49 4E 54 20 3A |UMBER. OP $INT :|
00000320: 4E 55 4D 20 30 20 31 36 0D 45 4E 44 0D 0D 54 4F |NUM 0 16.END..TO|
00000330: 20 55 4E 42 41 53 45 20 3A 42 41 53 45 20 3A 42 | UNBASE :BASE :B|
00000340: 4E 55 4D 0D 20 3B 20 4F 55 50 55 54 53 20 54 48 |NUM. ; OUPUTS TH|
00000350: 45 20 4E 55 4D 42 45 52 20 54 48 41 54 20 49 53 |E NUMBER THAT IS|
00000360: 20 52 45 50 52 45 53 45 4E 54 45 44 20 42 59 20 | REPRESENTED BY |
00000370: 3A 42 4E 55 4D 20 28 41 20 51 55 4F 54 45 44 20 |:BNUM (A QUOTED |
00000380: 57 4F 52 44 29 20 49 4E 20 3A 42 41 53 45 0D 20 |WORD) IN :BASE. |
00000390: 49 46 20 3A 42 4E 55 4D 20 3D 20 30 20 4F 50 20 |IF :BNUM = 0 OP |
000003A0: 30 0D 20 4F 50 20 24 49 4E 54 20 3A 42 4E 55 4D |0. OP $INT :BNUM|
000003B0: 20 30 20 3A 42 41 53 45 0D 45 4E 44 0D 0D 54 4F | 0 :BASE.END..TO|
000003C0: 20 48 45 58 20 3A 4E 0D 20 3B 20 4F 55 54 50 55 | HEX :N. ; OUTPU|
000003D0: 54 53 20 54 48 45 20 48 45 58 20 52 45 50 52 45 |TS THE HEX REPRE|
000003E0: 53 45 4E 54 41 54 49 4F 4E 20 4F 46 20 41 20 4E |SENTATION OF A N|
000003F0: 55 4D 42 45 52 0D 20 4F 50 20 42 41 53 45 20 31 |UMBER. OP BASE 1|
00000400: 36 20 3A 4E 0D 45 4E 44 0D 0D 54 4F 20 42 49 4E |6 :N.END..TO BIN|
00000410: 41 52 59 20 3A 4E 55 4D 0D 20 3B 20 4F 55 54 50 |ARY :NUM. ; OUTP|
00000420: 55 54 53 20 54 48 45 20 42 49 4E 41 52 59 20 52 |UTS THE BINARY R|
00000430: 45 50 52 45 53 45 4E 54 41 54 49 4F 4E 20 4F 46 |EPRESENTATION OF|
00000440: 20 41 20 4E 55 4D 42 45 52 0D 20 4F 50 20 42 41 | A NUMBER. OP BA|
00000450: 53 45 20 32 20 3A 4E 55 4D 0D 45 4E 44 0D 0D 54 |SE 2 :NUM.END..T|
00000460: 4F 20 44 4F 43 2E 4C 49 53 54 20 3A 50 52 4F 43 |O DOC.LIST :PROC|
00000470: 53 0D 20 49 46 20 45 4D 50 54 59 3F 20 3A 50 52 |S. IF EMPTY? :PR|
00000480: 4F 43 53 20 53 54 4F 50 0D 20 44 4F 43 20 46 49 |OCS STOP. DOC FI|
00000490: 52 53 54 20 3A 50 52 4F 43 53 0D 20 50 52 49 4E |RST :PROCS. PRIN|
000004A0: 54 20 5B 5D 0D 20 44 4F 43 2E 4C 49 53 54 20 42 |T []. DOC.LIST B|
000004B0: 46 20 3A 50 52 4F 43 53 0D 45 4E 44 0D 0D 54 4F |F :PROCS.END..TO|
000004C0: 20 48 45 4C 50 0D 20 4E 44 0D 20 44 4F 43 2E 4C | HELP. ND. DOC.L|
000004D0: 49 53 54 20 5B 42 41 53 45 20 42 49 4E 41 52 59 |IST [BASE BINARY|
000004E0: 20 48 45 58 20 55 4E 42 41 53 45 20 24 5D 0D 45 | HEX UNBASE $].E|
000004F0: 4E 44 0D 0D 54 4F 20 42 41 53 45 20 3A 42 41 53 |ND..TO BASE :BAS|
00000500: 45 20 3A 4E 55 4D 0D 20 3B 20 4F 55 54 50 55 54 |E :NUM. ; OUTPUT|
00000510: 53 20 54 48 45 20 52 45 50 52 45 53 45 4E 54 41 |S THE REPRESENTA|
00000520: 54 49 4F 4E 20 4F 46 20 3A 4E 55 4D 20 49 4E 20 |TION OF :NUM IN |
00000530: 3A 42 41 53 45 0D 20 49 46 20 3A 4E 55 4D 20 3D |:BASE. IF :NUM =|
00000540: 20 30 20 4F 50 20 30 0D 20 4F 50 20 42 41 53 45 | 0 OP 0. OP BASE|
00000550: 31 20 3A 4E 55 4D 0D 45 4E 44 0D 0D 4D 41 4B 45 |1 :NUM.END..MAKE|
00000560: 20 22 53 54 41 52 54 55 50 20 5B 48 45 4C 50 5D | "STARTUP [HELP]|
00000570: 0D 00 FF C8 |.... |
. TO $2 :NUM. OP $INT :NUM 0 2.END..TO D
IGVAL :CHAR. IF NUMBER? :CHAR OP :CHAR.
LOCAL "RESULT. MAKE "RESULT ( ASCII :CHA
R ) - 55. IF :RESULT + 1 > :BASE ( PRINT
:CHAR [BAD DIGIT IN BASE] :BASE ) TOPLE
VEL. OP :RESULT.END..TO UNBN1 :NUM. IF :
NUM = 0 OP ". OP WORD UNB1 QUOTIENT :NUM
2 ( REMAINDER :NUM 2 ).END..TO BASE1 :N
UM. IF :NUM = 0 OP ". OP WORD BASE1 ( QU
OTIENT :NUM :BASE ) ( VALDIG REMAINDER :
NUM :BASE ).END..TO VALDIG :N. IF :N < 1
0 OP :N. OP CHAR 55 + :N.END..TO $INT :N
UM :VAL :BASE. IF :NUM = " OP :VAL. OP $
INT BF :NUM :VAL * :BASE + DIGVAL FIRST
:NUM :BASE.END..TO DOC :PROC. LOCAL "TEX
T MAKE "TEXT TEXT :PROC. LOCAL "DOC MAKE
"DOC FIRST BF :TEXT. ( PRINT :PROC FIRS
T :TEXT ). IF "; = FIRST :DOC PRINT BF :
DOC.END..TO $ :NUM. ; CONVERTS A HEX NUM
BER (QUOTED WORD) TO A NUMBER. OP $INT :
NUM 0 16.END..TO UNBASE :BASE :BNUM. ; O
UPUTS THE NUMBER THAT IS REPRESENTED BY
:BNUM (A QUOTED WORD) IN :BASE. IF :BNUM
= 0 OP 0. OP $INT :BNUM 0 :BASE.END..TO
HEX :N. ; OUTPUTS THE HEX REPRESENTATIO
N OF A NUMBER. OP BASE 16 :N.END..TO BIN
ARY :NUM. ; OUTPUTS THE BINARY REPRESENT
ATION OF A NUMBER. OP BASE 2 :NUM.END..T
O DOC.LIST :PROCS. IF EMPTY? :PROCS STOP
. DOC FIRST :PROCS. PRINT []. DOC.LIST B
F :PROCS.END..TO HELP. ND. DOC.LIST [BAS
E BINARY HEX UNBASE $].END..TO BASE :BAS
E :NUM. ; OUTPUTS THE REPRESENTATION OF
:NUM IN :BASE. IF :NUM = 0 OP 0. OP BASE
1 :NUM.END..MAKE "STARTUP [HELP]...H
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL