RE: A85: Help! :)
[Prev][Next][Index][Thread]
RE: A85: Help! :)
There is a good H*L routine in the ROM. There is also a random number
generator in the ROM, too. One of the bits (bit 3, I think) does not
produce an equal number of 1's and 0's. I have a routine to make a patch
table of jumps for ROM, if you're interested. I'm going to use it in my
next shell, so that people can have their own ROM tables inside their
programs. Modify the routine all you want. It could probably be
optomized. By the way, this is ZShell 4.0 code.
NOTE: Shell guys, you're welcome to 'steal' it if you wish.
Here it is:
#include "ti-85.h"
#DEFINE RANDOM call TEXT_MEM
#DEFINE MUL_HL call TEXT_MEM+3
;you can't use the first 6 bytes of the TEXT_MEM
;unless perhaps you don't want to use one of the ROM routines
.org 0
MenuTitle:
.db "Patcher Thing",0
ld HL,PatchData
ld DE,(PROGRAM_ADDR)
add HL,DE
ld DE,TEXT_MEM
CALL_(PatchROM)
cp 'P'
ret NZ ;Exit if patch didn't work
Start:
;Insert your own code here.
;You can just use 'RANDOM' and 'MUL_HL'.
;You don't have to call them.
PatchData:
.db 2 ;the 2 says there are 2 addresses that need to be patched
.dw $39C2 ;rom 10.0
.dw $261B
.dw $39A7 ;rom 9.0
.dw $2601
.dw $39EF ;rom 8.0
.dw $2656
.dw $39EB ;rom 4.0/5.0/6.0
.dw $2652
.dw $39E8 ;rom 3.0A
.dw $264E
;input: DE-> destination address
; HL-> patch data
;Return:DE-> byte after last patch
; HL-> byte after last piece of patched data
; A='I' if incompatible ROM version
; A='P' if successful patch
PatchROM:
push DE ;save destination address
ld A,(ROM_VERS) ;MUST be ZShell 4.0 compatible shell
ld C,A
ld E,0
CheckROM:
cp $35
jr Z,Found
inc E
cp $91
jr Z,Found
inc E
cp $97
jr Z,Found
inc E
cp $3D
jr Z,Found
cp $8E
jr Z,Found
cp $5E
jr Z,Found
inc E
cp $57
jr Z,Found
Error3: ;error if no correct ROM version
ld A,'I'
ret
Found:
ld B,(HL)
inc HL
push BC
xor A
sla E
MulEB:
add A,E
djnz MulEB
Silly:
ld C,A
ld B,0
add HL,BC
pop BC
pop DE
LoadPatches:
ld A,$C3
ld (DE),A
inc DE ;load jump byte
ld A,(HL)
ld (DE),A
inc HL
inc DE ;low byte
ld A,(HL)
ld (DE),A
inc HL
inc DE ;high byte
djnz LoadPatches
ld A,'P'
ret
.end
----------
From: DorkReMi@aol.com[SMTP:DorkReMi@aol.com]
Sent: Saturday, September 26, 1998 12:17 AM
To: assembly-85@lists.ticalc.org
Subject: A85: Help! :)
I could use a little guidance... I need 16 bit math routines (B*C, H*L,
that
kind of thing) and I don't know where to get them. Also, I could really use
a
good random number routine. Was there one in ztetris or something? Thanks
for
any advice.
-Josh Morris
DorkReMi@aol.com
begin 600 WINMAIL.DAT
M>)\^(AL/`0:0" `$```````!``$``0>0!@`(````Y 0```````#H``$-@ 0`
M`@````(``@`!!) &`$@!```!````# ````,``# #````"P`/#@`````"`?\/
M`0```%<`````````@2L?I+ZC$!F=;@#=`0]4`@````!A<W-E;6)L>2TX-4!L
M:7-T<RYT:6-A;&,N;W)G`%--5% `87-S96UB;'DM.#5 ;&ES=',N=&EC86QC
M+F]R9P``'@`", $````%````4TU44 `````>``,P`0```!T```!A<W-E;6)L
M>2TX-4!L:7-T<RYT:6-A;&,N;W)G``````,`%0P!`````P#^#P8````>``$P
M`0```!\````G87-S96UB;'DM.#5 ;&ES=',N=&EC86QC+F]R9R<```(!"S !
M````(@```%--5% Z05-314U"3%DM.#5 3$E35%,N5$E#04Q#+D]21P````,`
M`#D`````"P! .@$````"`?8/`0````0````````#PD$!"( '`!@```!)4$TN
M36EC<F]S;V9T($UA:6PN3F]T90`Q" $$@ $`$@```%)%.B!!.#4Z($AE;' A
M(#HI`"8$`06 `P`.````S@<)`!H`"0`P`"L`!@!B`0$@@ ,`#@```,X'"0`:
M``D`'@`U``8`6@$!"8 !`"$```!%0CDV-S V0S(S-35$,C$Q044R-C0T-#4U
M,S4T,# P, #-!@$#D 8`C D``!(````+`",```````,`)@``````"P`I````
M```#`#8``````$ `.0`@H\0C9>F]`1X`< `!````$@```%)%.B!!.#4Z($AE
M;' A(#HI`````@%Q``$````6`````;WI92.L;'"6[%4C$=*N)D1%4U0`````
M'@`># $````%````4TU44 `````>`!\,`0```!L```!R:6-H87)D;&5W:7-
M8V5D87)C:71Y+FYE= ```P`&$*^G+3<#``<0A0<``!X`"! !````90```%1(
M15)%25-!1T]/1$@J3%)/551)3D5)3E1(15)/351(15)%25-!3%-/05)!3D1/
M34Y534)%4D=%3D52051/4DE.5$A%4D]-+%1/3T].14]&5$A%0DE44RA"250S
M+$E42$E.2RD``````@$)$ $````0" ``# @``$(2``!,6D9U<G5F(_\`"@$/
M`A4"J 7K`H,`4 +R"0(`8V@*P'-E=#(W!@`&PP*#,@/%`@!P<D)Q$>)S=&5M
M`H,S-P+D!Q,"@S0$1A,S,2!W"%4'L@* ?0J ",\)V3OQ& \R-34"@ J!#;$+
M8.!N9S$P,Q10"PH5844+\F,`0"!4: 2098(@! `@82!G;P1P("!(*DP@`V!U
M=#<+@!TQ`Z!T'0`'\$]-1"X@'.EL<V\=<7+%`'!D`W @;G4&T!:Q9F<)\ 20
M870%L1ZX+)<>T!VP'U%/'H%O9A[3*&)I= 0@*"/1(#.-(J!)'M$+@&LI(""P
M.0>1;F\%0!-0!'!U8^,=, .197%U!T @YB-AS#$G'6$@H" P)X ?4;LDH!&
M=B8A'B<AP" `P'9K**(*L'01<![0`:!L]2-#:B$`< 0@`A %P")SZ0:0('D(
M8"<=(@(P'1%U$\%D*"(G(- =H N 9STI4G41L!U !4 >L6UY*2#@97@%0',=
M`&QLGR*@(#$>X"&P);!E;PM071TP8P.1*',>X6DG(7?_`Z ?(2I4!" +@ "0
M#; Q)=,EP0G 86TH$DT$< :0/R[0'N(>-@= `R L$2!WG0!P="@B!4 %H'5L
M'=#])<%B*G$NT"$@(U %, -PM&EZ+0-"-%0UL'DBH2<DT#)A!"!:4R]2(#1L
M+C V00VP+@J%"H5.,$]413H&`#F39W7W$[ BH"P5=R]@!: '@"E2]R> $] '
M0"<N4ROS-: $`)IH.FU('1,N<7,Z.GQ:(PN 8PI ,L$B'F M(#@U+F@B0)U$
M11!&24Y%!_!!3D0?,>%$7S"@-4$[<%A47PA-14U##4U53%_.2!X01Y]%>RLS
M"H5'IG8[-7(PH2<%0"XB'N)FTS%@$\ @-B/ >1/0!"#G(V5%S4H7=6XR000@
M,##^<A& *R$U<B"P2P(ULBWFKP(@(T<QTAXU<PJ%+@6PJRW0"G9-"?!U!V!T
M*I"10(8N9&)'HR)0*A+G%K$<\"VQ(BP*=DFM-H%51W L53-$(;!A5J\@44.
M+"A0'R!'0_!-0%]!1$12*4FM87YD5Z-#@%B/69)%S4FM0_Q!3$=06= J$A\A
M6J9)K>1C<#V 4"=)K1@0!4#,3EI'KTJ 17@^%"H$K30@9$_C!;!K.GQ3`9#W
M`"! ADH720" !) %0"P1OS%T.B(H8!T1.F9*%UE*M'<JX4OQ+B(G0_0]\">R
M)_U'-"=I_VL"3\0PY"! 17/]'N%M.FU7]U0N$>!*-1[B_1'@<SBP!" >X1TA
M"L!S4O];H2S!$;!SPC !'H )@"E2/S=!*@,)@%0W!^!C<B0SM#E#<J([`V$G
M8# Y\&%VOC(V,4(Z?'<I09HW=_8Y>)]YH3 Q>?\W=U9#D'?V.'P_>:$U-MM]
MGWZG0G?V.>$O0E"#@+8V?]^ XC*!/WZG.'?VRC,Y\$&$'S8T7"8Z?#H["X!P
M'E [D$. +3[O)2 LT0N (;!I`B!TEHGFGV-U1W"*\6456%@[4A' ^0AP;CJ*
MTTQ"'7 !@!:Q_PM@2_$J`XQ?CT\EH0B0)A&/(V%V18WK8W5!/2<M4.\KTD&!
M`W J`6DJ@C'2*)#?$:"+H91?8>$KTG,F`"80_0009C9PD&M?QF=>BH O0/M9
MD6-_.W.0*)&++XPW7#\'%+!9P!\A7U9%4E/G)1!*%T<P4U0W,CE[EA?/+T,*
MA@&15X)#+(>VH_W+6;!6+4,=`&-KFIFD8RMAL7>@-:/Z:@7 6BS^1@A@(*"E
M'U3 08&F8*@>OCE]AJFOJK^KSZS3-ZT_=ZY/KU^H:D2Q/[)/J&DX[[0+M?]@
MSW>0-5PNN.^S#YVT'C6Q+[Q_"L%%<@-@V'(S.J1CPB@[!)#!T?\KTB6 -D'!
MP 60!4"6KY^L>Y5A8A]T.GS @Z@+-H%"_UG 1W!:IKVW1W"\WU3 F\/L0D.Y
MCYPS> 6QI0V<-OYS"V"^-U,F-G""P*@+6Z+#H&"^2V1J;GK1)&8M_P,0-Q#(
MWJ3OR5A6+=('5\'_S-[,-#!0S,^;1]L17!<*A7Q,;UN@531 =]76H& DUD-)
MEM76*$. *=9GO;?_0X#"+A>@6Z JXTPSV=_?9?_)_N#/RK_AS^+:!^#D'^4O
MO^8_YT_H7^EOPO$DT&<J0/_J[],IW@G;;\6Y8??5T\=_'BX)\+S-^)\*N&QI
M,8PX, +10B Q-#0-\.<,T/M3"UDQ-@J@`V 3T'W$,2W]=PJ'_"L,,/SV1M\#
M83N0_ _]%,+#1&7QCK!036E 80;P+CT16[!33510CQ "35W^'___+1!0#N `
M7P%K$ ".T8WP?SC!$% W@!/@(2)YL"*@,80Y.8;P,3(Z,7N0YUHP!*__+51O
M!N\!:Y P[VO@$B W$$(Q0/JP$\ H$#L>8$5Q8U+""Q\%OG5B[FK],0T_`6M!
M0D [D#_@8&QP(2 Z8$WZ5C/_?6 ;QAM@'&/\]A#5)* V5/<N(AV ^K!T4_$\
M`3*P4##])A N&S DD763_, CPBF!9W5 4<<D$$(JUE#+("KW5] OTQ#5:RZ0
MV6 C8RVQ;R40;*(DH&ZT:R6 ZL!WNW/S*6%G8Q%OXY4P;"^P_R2"-E2>D$6!
M-R 9XQ#5+9!_-! HT&RA>$$FU2CE&U!7+Y P<]50XBZ1>@F0='+?.1$K82^P
M/3 ?$S];@%6P?5 P:RLS$-50,#<@XY!VXQ! .EXM2F^;X30`Q "_#^!)I@(^
M^0\6GQ.$-!@?%1$"?1#0`#$0`P`0$ `````#`!$0`````$ `!S!@</:E8NF]
C`4 `"#!@</:E8NF]`1X`/0`!````!0```%)%.B `````)%H`
`
end