@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} The CTH Unsigned Long Integer Library(C) Copyright 1995CTH EnterprisesAll Rights Under Copyright ReservedBy Tom Hunt T} The programs contained in this are are ACTION! and CC65 language interfaces to my unsigned long integer library. ACTION.U}ARC is the ACTION! version, and CC65.ARC is the CC65 version. Both contain the same low-level code for the binary library, bV}ut each with different language hooks. Also contained in these arc's are sample demo programs, to illustrate how to incorporaW}te the library into your own programs.--------------------------------------Release notes: January 28, 1995- InitaX}il release on CTH BBS. &' M#` m#` #` #` #` $` %` *%` F%` b%` ~%` %` %` %` &` Z} (y (`8` [} O P Q  O O ii . . . L!` ) )@ )  \} ) ) ) ) ) ) )@ )  ) ) ]} ) ) ) ) )@ )  ) ) ) ^} ) ) ) )@ )  ) ) ) ) ) _} `H8h`` "Hȑh`HȱhL" #؆ #ֆ #Ԇՠԙ ֙ ` &# !ԙ  M! `} ؈` &# )JJJJi0:i< Ƚ )i0:i< ө< D < ` &#N n n n  ؈` &# . . a} .  ؈` &#  ֈ` &#ԙ< ɛ<  ɛ80 8 L$8 b}0 8  L$80 8 0n80 8  0T80 8 0B80 8  0(80 8 c} 080 8   ֈ` &#  ֈ` &#   ؈` &# 9  d} ؈` &# Y  ؈` &#( y ( ؈` &#    Ԉ` &#8(  e}( ؈` &#  L&L&L& #` 'L&  &G H I J N M L  f} L&& &&&&K  L&L&L&iG H I J !G H I g} J M! LZ& ؈` #؆ #ֆ #ԆՠԙG ֙K ` W232338040000The CTH Unsigned Long Integer Library For CC65 The actual long library is contained ii}n the file c.bin. It resides at $2000-$2726. The library hooks are all at the beginning of the library. This was done so tj}hat if further revisions of the library are forthcoming, you won't have to recompile your c programs. The library routine's k}entry points will remain constant across future library updates. The t.c is the source to the demo program. You can usl}e it to see how to interface an c program to the long library. The t.com is the complete demo program. It allows you tm}o preform the following functions:Rsh_long(x,y,z)Lsh_long(x,y,z)And_long(x,y,z)Or_long(x,y,z)Eor_long(x,y,z)Mul_long(xn},y,z)Add_long(x,y,z)Sub_long(x,y,z)Power_long(x,y,z)Long_to_hex(x,string,dummy)Hex_to_long(string,x,dummy)I_to_long(x,yo},dummy)Copy_long(x,y,dummy)Bmp_long(x,dummy,dummy)Eval_long(x,y,dummy)---------------------------------------Procedurep} And Function Definitions Note that all longs must be declared as a ULONG. 'ULONG' must be a STRUCT, as in the t.c proq}gram. In all cases, except for Eval_long, parameters are returned though either the 1st, 2nd, or 3rd parameter. Also nr}ote the use of the 'dummy' variable. Some functions only need 2 parameters, but the library parameter passing is set up for s}three parameters. The dummy variable is used as the third parameter in such cases.Bitwise Long FunctionsProc Rsh_long(LOt}NG x,y,z) This function will take the LONG x and shift it right LONG Y times, and store the result in LONG Z.Lsh_lonu}g(LONG x,y,z) This function will take the LONG x and shift it left LONG Y times, and store the result in LONG Z.And_lv}ong(LONG x,y,z) This function will take the LONG x and AND it with LONG Y, and store the result in LONG Z.Or_long(LONw}G x,y,z) This function will take the LONG x and OR it with LONG Y, and store the result in LONG Z.Eor_long(LONG x,y,zx}) This function will take the LONG x and EOR it with LONG Y, and store the result in LONG Z.Arithmetic Long Functionsy}Mul_long(LONG x,y,z) This function will take LONG x and multiply it by LONG y, and store the result in LONG z.Add_lz}ong(LONG x,y,z) This function will take LONG x and add it with LONG y, and store the result in LONG z.Sub_long(LONG x{},y,z) This function will take LONG x and subtract LONG y from it, and store the result in LONG z.Power_long(LONG x,y,|}z) This function will calculate x to the power of y, and put the results in z. It can handle up to 2^$1e, which is $80}}000000.Conversion Long FunctionsLong_to_hex(LONG x,CHAR ARRAY string) This function will take LONG x and convert it~} to a hex string at h_num. Note that this routine takes into account the length byte normally found at the beginning of Acti}on! strings. Also note that the conversion string must be declared and defined like 'string1' and 'string2' in the t.c progr}am.Hex_to_long(CHAR ARRAY string,LONG x) This function will take hex-string x and convert it to a LONG at LONG x. No}te that this routine takes into account the length byte normally found at the beginning of Action! strings. Also note that t}he conversion string must be declared and defined like 'string1' and 'string2' in the t.c program.I_to_long(CARD x,LONG y)} This function will take CARD x and convert it to LONG y.Conversion Long FunctionsCopy_long(LONG x,y) This fu}nction will copy x to y.Bmp_long(LONG x) This will increment x by one.FUNCTION Eval_long(LONG x,y) This funct}ion compare x to y. It will return: 0 if x=y 1 if x>y $FF if y>x---------------------------------------}Notes about compiling You must link your c program above this binary library. The supplied t.lnk will do this for yo}u if you are using LINK65. The kl.lnk will also do this for you if using KLINK. The calling format for t.lnk is LINK65 -B 2}800 -O D1:T.COM @D1:T.LNK . The calling format of kl.lnk is KLINK @D1:KL.LNK . But the point is, is that you must protect t}he long library from being over written by the compiled code. Also supplied is a sample MAKEFILE.BAT, which can be used as a}n example for creating your own makefile. The c.bin can either be appended to the end of your c executable, or visa-ver}sa. Here is a list of the files in this ARC, and a summery of what they are. There may be some variation with the siz}es, times and dates, due to recent tweeks.C_LONG DOC 4281 1-26-95 1:00p This file.C BIN 1837 1-28-}95 12:26p The actual unsigned long library, in binary format.STDIO H 300 1-22-95 8:31aLONG H 644 }1-25-95 6:05aDEMO H 67 1-27-95 7:33p Some header files. All of these are necessary for compiling the t.co}m demo. The long.h is necessary for use in your own programs.T C 4982 1-28-95 12:04pSCREEN C 816 1-28}-95 12:06pGETKEY C 307 1-27-95 7:14pPUTKEY C 71 1-27-95 7:54pPOKEPEEK C 134 1-28-95 11:42a T}hese are the c source files for the demo. T.c is the demo program. Screen.c prints the menu for the demo. Putkey.c grabs a} keypress from the keyboard. Pokepeek.c contains POKE and PEEK memory locations.T OBJ 3378 1-28-95 12:10pSCREEN} OBJ 995 1-28-95 12:06pGETKEY OBJ 422 1-27-95 7:11pPUTKEY OBJ 165 1-27-95 7:55pPOKEPEEK OBJ 175 1-}28-95 12:23p These are the obj's, ready to be linked.KL LNK 114 1-28-95 11:43a This is the link file fo}r use with klink.com.T LNK 61 1-26-95 5:32a This is the link file for use with link65.com.MAKEFILE BAT } 103 1-28-95 11:53a This is the makefile batch file for use with klink.com. It is set up for system, so you'll }have to edit it for the correct filepaths on system! Also, it is set up for use with klink.com, which is faster than }link65.com. The CTH Unsigned Long Integer Library For CC65 The actual long library iscontained in the file c.bin. It}resides at $2000-$2726. The libraryhooks are all at the beginning of thelibrary. This was done so that iffurther revisi}ons of the library areforthcoming, you won't have torecompile your c programs. Thelibrary routine's entry points willrem}ain constant across future libraryupdates. The t.c is the source to the demoprogram. You can use it to see how toin}terface an c program to the longlibrary. The t.com is the complete demoprogram. It allows you to preform thefollowi}ng functions:Rsh_long(x,y,z)Lsh_long(x,y,z)And_long(x,y,z)Or_long(x,y,z)Eor_long(x,y,z)Mul_long(x,y,z)Add_long(x,y},z)Sub_long(x,y,z)Power_long(x,y,z)Long_to_hex(x,string)Hex_to_long(string,x)I_to_long(x,y)Copy_long(x,y)Bmp_long(x)E}val_long(x,y)--------------------------------------Procedure And Function Definitions Note that all longs must be}declared as a ULONG. 'ULONG' must bea STRUCT, as in the t.c program. Inall cases, except for Eval_long,parameters are} returned though eitherthe 1st, 2nd, or 3rd parameter.Bitwise Long FunctionsProc Rsh_long(LONG x,y,z) This functio}n will take the LONGx and shift it right LONG Y times, andstore the result in LONG Z.Lsh_long(LONG x,y,z) This fun}ction will take the LONGx and shift it left LONG Y times, andstore the result in LONG Z.And_long(LONG x,y,z) Thi}s function will take the LONGx and AND it with LONG Y, and storethe result in LONG Z.Or_long(LONG x,y,z) This funct}ion will take the LONGx and OR it with LONG Y, and store theresult in LONG Z.Eor_long(LONG x,y,z) This function wil}l take the LONGx and EOR it with LONG Y, and storethe result in LONG Z.Arithmetic Long FunctionsMul_long(LONG x,y,z) } This function will take LONG xand multiply it by LONG y, and storethe result in LONG z.Add_long(LONG x,y,z) }This function will take LONG xand add it with LONG y, and store theresult in LONG z.Sub_long(LONG x,y,z) This funct}ion will take LONG xand subtract LONG y from it, and storethe result in LONG z.Power_long(LONG x,y,z) This function} will calculate x tothe power of y, and put the results inz. It can handle up to 2^$1e, whichis $80000000.Conversion Lo}ng FunctionsLong_to_hex(LONG x,CHAR ARRAY string) This function will take LONG xand convert it to a hex string at}h_num. Note that this routine takesinto account the length byte normallyfound at the beginning of Action!strings. Also }note that theconversion string must be declared anddefined like 'string1' and 'string2'in the t.c program.Hex_to_long(CH}AR ARRAY string,LONG x) This function will takehex-string x and convert it to a LONGat LONG x. Note that this routin}etakes into account the length bytenormally found at the beginning ofAction! strings. Also note that theconversion strin}g must be declared anddefined like 'string1' and 'string2'in the t.c program.I_to_long(CARD x,LONG y) This func}tion will take CARD xand convert it to LONG y.Conversion Long FunctionsCopy_long(LONG x,y) This function will copy} x to y.Bmp_long(LONG x) This will increment x by one.FUNCTION Eval_long(LONG x,y) This function compare x to} y. Itwill return: 0 if x=y 1 if x>y $FF if y>x--------------------------------------Notes about} compiling You must link your c programabove this binary library. Thesupplied t.lnk will do this for you ifyou are }using LINK65. The kl.lnk willalso do this for you if using KLINK. The calling format for t.lnk is:LINK65 -B 2800 -O D1:T}.COM @D1:T.LNKThe calling format of kl.lnk is:KLINK @D1:KL.LNK But the point is, isthat you must protect the long }libraryfrom being over written by thecompiled code. Also supplied is asample MAKEFILE.BAT, which can be usedas an exampl}e for creating your ownmakefile. The c.bin can either be appendedto the end of your c executable, orvisa-versa. } Here is a list of the files inthis ARC, and a summery of what theyare. There may be some variation withthe sizes, time}s and dates, due torecent tweeks.C_LONG DOC 4281 1-26-95 1:00p This file.C BIN 1837 1-28-95 12:26}p The actual unsigned long library,in binary format.STDIO H 300 1-22-95 8:31aLONG H 644 1-25-95 } 6:05aDEMO H 67 1-27-95 7:33p Some header files. All of theseare necessary for compiling the t.comdemo. } The long.h is necessary for usein your own programs.T C 4982 1-28-95 12:04pSCREEN C 816 1-28-95 12:0}6pGETKEY C 307 1-27-95 7:14pPUTKEY C 71 1-27-95 7:54pPOKEPEEK C 134 1-28-95 11:42a These are} the c source files forthe demo. T.c is the demo program. Screen.c prints the menu for the demo.Putkey.c grabs a keypress} from thekeyboard. Pokepeek.c contains POKEand PEEK memory locations.T OBJ 3378 1-28-95 12:10pSCREEN OBJ } 995 1-28-95 12:06pGETKEY OBJ 422 1-27-95 7:11pPUTKEY OBJ 165 1-27-95 7:55pPOKEPEEK OBJ 175 1-28-95 12:}23p These are the obj's, ready to belinked.KL LNK 114 1-28-95 11:43a This is the link file for usewit}h klink.com.T LNK 61 1-26-95 5:32a This is the link file for usewith link65.com.MAKEFILE BAT 103 1}-28-95 11:53a This is the makefile batch filefor use with klink.com. It is set upfor system, so you'll have toe}dit it for the correct filepaths on system! Also, it is set up foruse with klink.com, which is fasterthan link65.co}m.extern int print_menu();extern int getkey();extern int putkey();C#include#asm_key = 764#endasmextern char key;/************************************/getkey(){char ch,chan}nel; while (key==764) {} channel = fopen("K:","r"); ch = cgetc(channel); fclose(channel); } return(ch);}/*main(){char k; k=getkey();}*/9z_MAIN__FCLOSEDECSP1DECSP2EXITFUNTOSEQAX_GETKEYINCSP1INCSP2_STDERR }_STDOUT_CGETC_KEY LDAYSP_FOPENPUSHAX_STDINSTAYSP_ERRNOENTERFUN S C } O EL L "u!u O"x!x O N Q M O K Q M O A M H }LD S B  Q GLDK:r /-B-S 2800-O D9:T.COMD1:RUNTIME.OBJD1:C.OLBD9:SCREEN.OBJD9:GETKEY.OBJD9:PUTKEY.OBJD9:POKEPEEK.OBJD9:T.OBJ$r#asm_long_to_ = $2004_hex_to_l = $2014_mul_long = $2000_rsh_long =$2008_lsh_long =$200C_i_to_lon =$2010_copy_lon =$20(}18_or_long =$201C_and_long =$2020_eor_long =$2024_add_long =$2028_bmp_long =$202C_sub_long =$2030_eval_lon =$2034_po(}wer_lo =$2038_H_NUM:=$203C#endasmextern int long_to_hex();extern int mul_long();extern int hex_to_long();extern int r(}sh_long();extern int lsh_long();extern int i_to_long();extern int copy_long();extern int or_long();extern int and_long()(};extern int eor_long();extern int add_long();extern int bmp_long();extern int sub_long();extern int eval_long();extern (}int power_long();(;Makefile.bat for;t.com.;CC65 D9:T.CD3:KA -R -D D9:T.M65D3:KL @D9:KL.LNKCOPY D9:C.BIN D9:T.COM/A,gchar * addr;poke(l_addr,value) { addr = l_addr; *addr=value;return;}peek(a){ addr = a; return(*0}addr);}0 X3O_PEEKPOPAX_POKELDAIEXITFUNLDAXYSPENTERFUN_ADDR F E   A4}LD F E     CLD42#includeputkey(ch){/* char *ch; */ cputc(ch,0);}8Gw& EXITFUNLDAXYSP_STDERR_PUTKEY_STDOUTPUSHAX_CPUTC_STDIN_ERRNOENTERFUN<} I A E E FL@<(#include print_menu(){ Printf(" A demonstration of the CTH Unsigned\n"); Printf(" Long Integer L@}ibrary, for CC65\n"); Printf("\n"); printf(" +------------------+\n"); printf(" | 0 Long Multiply @}|\n"); printf(" | 1 Long RSH |\n"); printf(" | 2 Long LSH |\n"); printf(" | 3 Long@} OR |\n"); printf(" | 4 Long AND |\n"); printf(" | 5 Long EOR |\n"); printf(" @} | 6 Long ADD |\n"); printf(" | 7 Long SUB |\n"); printf(" | 8 Long EVAL |\n"); pr@}intf(" | 9 Long POWERS |\n"); printf(" | X Exit |\n"); printf(" +------------------+\n")@}; printf("\n"); printf(" Please Choose : ");}@Bnm EXITFUN_PRINTF_STDERR_STDOUTPUSHAX _PRINT_ME_STDIN_ERRNOENTERFUN HD}"! D A"! D A"*!* D A",!, D A"G!G D A"b!b DD} A"}!} D A"! D A"! D A"! D A"! D A"!D} D A"! D A":!: D A"U!U D A"p!p D A"! D A"D}! D AL@ A demonstration of the CTH Unsigned Long Integer Library, for CC65 +-------------D}-----+ | 0 Long Multiply | | 1 Long RSH | | 2 Long LSH | | 3 Long OR | |D} 4 Long AND | | 5 Long EOR | | 6 Long ADD | | 7 Long SUB | | 8 Long EVALD} | | 9 Long POWERS | | X Exit | +------------------+ Please Choose : Dx/* cc65 stdio.h *//* say we're running cc65 */#define M6502#define __CC65__#define FILE charextern FILE * stdin;extH}ern FILE * stdout;extern FILE * stderr;extern int errno; /* error number from open, etc */#define EOF -1#define NULL H}0#define NEWLINE 0x9B#define YES 1#define NO 0H2#include #include #include /************************************ Define 'ulong' asL} a STRUCT*************************************/struct ulong{ char lword[5];} dummy; /* 4 bytes each */***********L}**************************//************************************ Declare some ulongs now ********************L}****************/struct ulong ul_num1,ul_num2,ul_num3;char a[15];int b;char success,eval;char *h_num1 = " L} ";char *h_num2 = " ";char *h_num3 = " L} ";/************************************/main(){char ch;do {/* Setup the screen */ poke(71L}0,130); poke(709,15); poke(0x52,0); putkey(0x9b); print_menu(); ch = getkey(); ch = touL}pper(ch); putkey(ch); if (ch == 'X') { putkey(0x9b); return(0); }/* Here is whL}at the menu looks like, in screen.c." +------------------+\n");" | 0 Long Multiply |\n");" | 1 Long RSH L} |\n");" | 2 Long LSH |\n");" | 3 Long OR |\n");" | 4 Long AND |\n");" | 5 Long EOL}R |\n");" | 6 Long ADD |\n");" | 7 Long SUB |\n");" | 8 Long EVAL |\n");" | 9 LongL} POWERS |\n");" | X Exit |\n");" +------------------+\n");*/ putkey(0x9b);/* Get user input for x,yL}. */ printf("Input a hex number for x- "); success = fgets(h_num1, 32767, stdin); hex_to_long(h_num1,&ul_num1,b); printfL}("Input a hex number for y- "); success = fgets(h_num2, 32767, stdin); hex_to_long(h_num2,&ul_num2,b); switch(ch) L} { case '0' : printf("x times y = $"); mul_long(&ul_num1,&ul_num2,&ul_num3);M} long_to_hex(&ul_num3,h_num3,b); printf("%s\n",h_num3); break; case M}'1' : printf("x RSH y = $"); rsh_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&M}ul_num3,h_num3,b); printf("%s\n",h_num3); break; case '2' : printf("M}x LSH y = $"); lsh_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&ul_num3,h_num3,b); M} printf("%s\n",h_num3); break; case '3' : printf("x OR y = $"); M}or_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&ul_num3,h_num3,b); printf("%s\n",h_num3); M} break; case '4' : printf("x AND y = $"); and_long(&ul_num1,&ul_num2,&ulM}_num3); long_to_hex(&ul_num3,h_num3,b); printf("%s\n",h_num3); break; M} case '5' : printf("x EOR y = $"); eor_long(&ul_num1,&ul_num2,&ul_num3); long_tM }o_hex(&ul_num3,h_num3,b); printf("%s\n",h_num3); break; case '6' : pM }rintf("x + y = $"); add_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&ul_num3,h_num3,b); M } printf("%s\n",h_num3); break; case '7' : printf("x - y = $"); M } sub_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&ul_num3,h_num3,b); printf("%s\n",h_num3)M }; break; case '8' : eval = eval_long(&ul_num1,&ul_num2,&ul_num3); ifM} (eval==0) printf("x = y\n"); else if (eval==1) printf(M}"x > y\n"); else if (eval==0xff) printf("y > x\n"); else M} printf("Dunno!\n"); break; case '9' : printf("x to the power of y M}= $"); power_long(&ul_num1,&ul_num2,&ul_num3); long_to_hex(&ul_num3,h_num3,b); pM}rintf("%s\n",h_num3); break; default : } } while(ch !="X");}LjpavLs ^YMeȠқ$p%p$p%p%pɄ` Q} LpLpLpLp BLVJKBLV䨩HI BLVHIBLVppMprMppqp`Q}ppqMprMppqpq`!Bc)Jk1sR9{ZbC ǤjK( ϬSr0[z8冧@a#펯Hi +ԷQ}qP3ܿyX;"`A* hI2Qp:Yx -No%Fg=^5wV˨nO, àfG$_~]|6Ut 0@P`p2"RBrb$4dtDT6&vfVFHXhx(8Q}ZJzj :*뛋l|L\,< ݭ~n^N>.Ͽ0 P@p`"2BRbr4$tdTD&6fvFV陉XHQ}xh8(JZjz *:ͽ|l\L<, ߯n~N^.>LBsUse Sparta Dos to get the full#DsEHI B VL{sQ}benefit of CTH ARMOR!eDsEHI B V䩛 p p` p pH) Error, aborting.hө p``sQ}SLs pbvbv` pbv! 6pɛ6p Ls6p.詛6p pH) This file has beQ}en corruptionhӭH) hardened by The CTH ARMORIZER!hө pH) Checking hӢ6DpEHI Q}B V䩛 p@ p@6DpE p@DEHIB V䘢@DE HIB V p. p@DEQ}HIB V p p pL@up pL#vp pL#v pH) This program has been verified,hӭH)Q} and checks out OK.hө p@ ph@(BJK6DpELV䩛 pH) This program has been CHANGEDQ }!hӢ@ pl p(BLN-HehL)`ܠؠԠРH8咅h`H8h`֠Q!}ҠΠʠƠ±HȱhL)`e` (L(L)L)L)L)L)L) (ȘL) (L) M(Hȑh`Q"}HȱhL(HȱhL(Hȱh (` (` %)HȥhL) %)L) (`HȑhL)L)HH (hhLQ#})HH (hhL) H*h`L)`L)HIhIi```IHIh`e` )L(`Q$}` )L{) )L) ) {)L( ) )L( ( &L)L) (󨥂fjL) (eHehL) (Q%}8H哪hL) (HhL) (EHEhL) (%H%hL)`\_ (łXTM (łFBE (0>7ł86/ (䃐-&ł'%Q&} (0ł (䃐 ł`` (0ł (䃐ł۰ (0łʰ (䃐ł𹰼 Q'}L(H hL(lHh` {)L( )L(hh捠ilŕŔ Q(}liL+`L) ( ) Ɣ )$ D,& $ D,& 򦓥 )`HeQ)}eh`` ( ) ) ) )Ńł &&L,FfFf3ōŌQ*}8包卅FfFfͥ )ĕ )` \,L) ( ( ` (Q+}`S L L L i?H ihL- ( -l  S+ (-- ( - (-- ( l.Q,}LY+ ( (NHɛD 3.ȥi揠 3.Hhɛ`!8``Q-}34,4 S+ I(Ƣ ( ( ]@Ţ ( ( ]@R ( ( ]@ ( A@ !=Q.} ? D) ( ( A< D) ( ( A@ ( (X *L/ ( A@ (LY+ ( A@U4 ( G6f.g. ( (z yQ;}y > xDunno!x to the power of y = $%sX I+ a( 9) u( ( 9) ( *mLq5LR5 ( P< 9) ( *L5 uQ<}( ) ) u( 9) u( + ( 9) + ( u( `) ( *L5Ln5 ( `) u( #(LY+ S+ a( ( ( t) A* {) t) Q=}A* ( t) P* 9) u( + u( ( 9) ( 6 #(LY+ S+ M(|<}< ( ( ( t) A* {) t) A* ( t) P* ( 6 (LYQ>}+ S+# 7( 9)% u( + (% 9) + {) 9) u( )L: u( +% *3 u( + ( 9) + +) ( ; u( ( 9)L6LQ?}7 u( ( 9) u( +% *0 u( + ( 9) + +) ( ; u( ( 9)L6 u( +- * 9) u( ( 9)L7Q@} 9) u( +0 * 0 9)L7  9) u( + # ( G6K> ( G6M> ( G6h> ( G6QL}> ( G6> ( G6> ( G6Ԣ> ( G6> ( G6 ? ( G6%? ( G6@? ( G6[? ( G6v? ( G6? (QM} G6? ( G6? ( G6LY+ A demonstration of the CTH Unsigned Long Integer Library, for CC65 +----------QN}--------+ | 0 Long Multiply | | 1 Long RSH | | 2 Long LSH | | 3 Long OR | |QO} 4 Long AND | | 5 Long EOR | | 6 Long ADD | | 7 Long SUB | | 8 Long EVAL QP} | | 9 Long POWERS | | X Exit | +------------------+ Please Choose : S+ M( QQ}( *L?L?<@ (?@ ( XB D) ( ( P< D) ( ( 2B ( (LY+ S+ I( ? D) (LY+K:r S+ u( ( QR}( ;LY+ S+ u([@\@[@\@ ( u( `)LY+ S+R ( ( ]@LY+ A+ a( u( + A u( ( 9)L@ 9) u( )LQS}@ 9) u( ( 9)L@ +@-@+ 9) u( + #<= ( u( + ( u( + ( 9) + ) A* (0 P* 9)L@ QT}( u( + #(LY+ A+ a( ( ( 5- A* ( P* 9) ( u( *O u( ) 9) u( + ( 9) + ( u( ) `) u( + (QU} 9) + ( u( `)LA #(LY+ A+ ( *: ( *" ( * ( +LY+ A+ ( B ( QV}+LUB u(LY+ E+ M( ( u( + < 9) ( * u(<< (LY+ u( (LY+ ( B V0``( QW} M#` m#` #` #` #` $` %` *%` F%` b%` ~%` %` %` %` &` QX} (y (`8` QY} ! O P Q  O O ii . . . L!` ) )@ )  QZ} ) ) ) ) ) ) )@ )  ) )Q[} !" ) ) ) ) )@ )  ) ) ) Q\} ) ) ) )@ )  ) ) ) ) )Q]} `"%#H8h`` "Hȑh`HȱhL"&#!$ #؆ #ֆ #Ԇՠԙ ֙ ` &# !ԙ Q^} M! ؈` &# )JJJJi0:i< Ƚ )i0:i< ө< D < ` &#N n n n  ؈` Q_}&# . . .  ؈` &#  ֈ` &#ԙ< "$%ɛ<  ɛ80 8Q`} L$80 8  L$80 8 0n80 8  0T80 8 0B80 8  Qa}0(80 8 080 8   ֈ` &# %&  ֈ` &#   ؈` Qb}&# 9  ؈` &# Y  ؈` &#( y ( ؈` &#    Ԉ` &#Qc}8( ( ؈` &#  L&L&L& #` 'L& &' &G H I J N Qd} M L  L&& &&&&K  L&L&L&iG H I J Qe} !G H I J M! LZ& ؈` #؆ #ֆ #Ԇՠ'&'ԙG ֙K `PqD1:RUNTIME.OBJD1:C.OLBD9:GETKEY.OBJD9:PUTKEY.OBJD9:POKEPEEK.OBJD9:SCREEN.OBJD9:GETKEY.OBJD9:T.OBJTiO 0_UL_NUM1_UL_NUM2 _UL_NUM3_MAIN-_EVAL&_POKE_TOUPPER_OR_LONG _A_B#DECSPYq}B%DOS SYSB*)DUP SYSBSALL DOCBYC BINB1hC_LONG DOCB/C_LONG PRTBDEMO H BGETKEY C BGETKEY OBJBKL LNKBLONG H BMAKEFILEBATBPOKEPEEKC BPOKEPEEKOBJBPUTKEY C BPUTKEY OBJBSCREEN C BSCREEN OBJBSTDIO H B"T C BST COMBfT LNKBgT OBJ1TOSNEAXEXITFUNTOSEQAX_H_NUM1'_H_NUM2)_GETKEY_H_NUM3+INCSP1_PRINTF_STDERR Yr}_ADD_LONG( _PUTKEY _AND_LONG _STDOUTLDAYSP _BMP_LONG, _EVAL_LON4 _EOR_LONG$ _LSH_LONG _FGETSYs}PUSHAXCASEJUMP _SUB_LONG0 _RSH_LONG _MUL_LONG _PRINT_ME_STDIN _COPY_LON STAYSP_ERRYt}NO _POWER_LO8 ENTERFUN_DUMMY _LONG_TO_ _HEX_TO_L _I_TO_LON _SUCCESS%Yu}    `* JƢ _ _ EŢ _ _ ER _ _ E _ VYv} `$ P `' Y _ F `' Y _ V Y _X ML  _ V RLYw}L _ V"! _ S ' ( _ _`%`% _ ^ % ' ( _"! _Yx} # $ _  "1!1 _ S ) * _ _`%`% _ ^ % ) * _" !  _Yy} # $ _  YL N"L!L _ S"! _" !  _"! _ "! _ +Yz} , _ # $ _  "Z!Z _ + , _ SL ~"^!^ _ S"! _" !  _"Y{}! _  "! _ + , _ # $ _  "j!j _ + , _ SL ~"n!n _Y|} S"! _" !  _"! _ "! _ + , _ # $ _  "z!z _ +Y}} , _ SL ~"~!~ _ S"! _" !  _"! _  "! _ + , _Y~} # $ _  "! _ + , _ SL ~"! _ S"! _" !  _"!Y} _ "! _ + , _ # $ _  "! _ + , _ SL ~"! _ SY}"! _" !  _"! _ $ "! _ + , _ # $ _  "! _ + , Y}_ SL ~"! _ S"! _" !  _"! _ ( "! _ + , _ # Y}$ _  "! _ + , _ SL ~"! _ S"! _" !  _"! _ Y}0 "! _ + , _ # $ _  "! _ + , _ SL ~"! _" !  _Y}"! _ 4 & & _ ML "! _ SL  & _ ML "! _ Y}SL  & _ ML "! _ SL "! _ SL ~"! _ S"! _Y}" !  _"! _ 8 "! _ + , _ # $ _  "! _ + , _ SY}L ~L ~ ` z0 1 22 3 4 F5 6 7 Z8 9L K Y _"! KL L 3 RY}LL Y} Input a hex number for x- Input a hex number for y- x times y = $%sx RSH y = $%sx LSH y = $%sx OR y = $Y}%sx AND y = $%sx EOR y = $%sx + y = $%sx - y = $%sx = yx > yy > xDunno!x to the power of y = $%sY}XX